ブックマーク / kumagi.hatenablog.com (22)

  • 「禅とオートバイ修理技術」をプログラマが読んだ - Software Transactional Memo

    「禅とオートバイ修理技術」これら2つの間にどのように関係があるのかまるで見当が付かず、タイトルだけ聞くとキワモノのようだがWikipediaによるとアメリカでは一番良く売れた哲学書とされている。 海外エンジニアのブログを読み漁っていた時にオススメされていたのでKindleで買って読んだのだが想像以上に良かったのでメモを残したい。と言ってもwikipediaで説明されている内容を改めて説明しても面白くないのでソフトウェアエンジニアとして響いた部分を引用して僕の感じた事を書き連ねていく。 大都市の重工業地帯に一歩でも足を踏み入れてみれば、そこにはその全てが存在している。テクノロジーである。正面には有刺鉄線を施した高い塀が立ちはだかり、門は常に閉ざされ、「立入禁止」の札が掛かっている。そしてその向こうの薄汚れた大気の中には、金属や煉瓦で造られた醜い建物が立っている。その目的は不明であり、またそ

    「禅とオートバイ修理技術」をプログラマが読んだ - Software Transactional Memo
  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
  • キャリアハックの奇行 - Software Transactional Memo

    エンジニアの奇行 嚢中の錐という言葉がある。有能な人物は自ずと傑出していくという意味だが、有能さとは例えば学歴の高さとは一致しない。 たとえMIT卒であろうとも大成するとは限らないし、ましてや入試の点数などで見れる人間の側面は限定的である。 企業などで採用する側からしてみたら当然ながら採用後の活躍を期待して雇用するのであり、入社をゴールとしてそれ以降働かなくなる人は望ましくないし、学歴や入試の点数によってそういう人かどうか判定する事はできない。 活躍という観点で言うと長いキャリアにおいてより重要となるのはキャリア開始時での能力の高さよりも、険しく長い道のりを自己メンテナンスしながら歩み続けられる根気の強さが重要とされている。その根気の源泉は執着だったり崇拝だったり妄信だったりトラウマだったり原体験だったり人によって様々だが、ここではひっくるめて「やる気」と簡略化して呼ぶことにする。 さて「

    キャリアハックの奇行 - Software Transactional Memo
  • きれいなコードを書けという話について - Software Transactional Memo

    前回のブログから90日以上経ってしまったので広告が載ってしまったから短文でもアウトプットしておく。 プログラマとして仕事をしているとコードと向き合っている時間の9割以上は既存のコードを読んでいる、だから読みやすさは重要である、という言説は耳にタコができるほど誰もが言っている。 仕事で書かれるコードが誰のレビューも通ること無くマージされている現場は凄惨だが、自分より明らかに経験を積んだ人たちが何度もレビューを重ねたコードが読みやすいかというとそうとは限らない。良いコードが守るべきルールをすべて守っていても不可解なコードはあるし、どんなに読みやすいコードでも数千行の規模になってくるとやはり脳内からこぼれて一度に覚えておける範囲からはみ出る。 変数名や関数名をわかりやすくするとか不必要な技巧を凝らさないとかわかりやすい設計にするとか主観的な事を偉そうに語るは山ほどあり、それらのを崇める事は悪

    きれいなコードを書けという話について - Software Transactional Memo
  • Re: ブロックチェーンでそんなことはできない - Software Transactional Memo

    はじめに chike0905.hatenablog.com この記事は大変楽しく拝読したが、ブロックチェーン素人ながら気になる点がいくつかあったので指摘する。要旨は以下である。 タイトルで「できない」と言ってる割には「できるけど筋が悪い」だけに見える 研究中で結論が出ていないトピックを「できない」と呼ぶのは違うのではないか 文体が学術めいている割には用語の使い方がやや雑に見える ブロックチェーンに「不可能」な事にフォーカスすべき 浮足立つ界隈に対して問題提起するならば的を絞って指摘すべきで、容易に解決可能そうに見えてしまう批判はかえって混乱を招く恐れすらある ノードの独立性 各自で検証し、他のノードに依存するプロセスは定義のブロックチェーンの動作の中には含まれない。 従って、他のノードに何かを問い合わせる必要もなく、信頼する第三者などは存在しない。 この部分はあまり正しく理解している人が

    Re: ブロックチェーンでそんなことはできない - Software Transactional Memo
  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

    Value Objectについて整理しよう - Software Transactional Memo
  • ブロックチェーンの作り出す価値に付いて - Software Transactional Memo

    TL;DR 疑いの目を向けてみると怪しい奴ばかり 通貨発行は楽しい、これは真理である。 www.sinseihikikomori.com 1人プレイ用のゲームの中で敵を倒してゲーム内の通貨を得る行為は広義の通貨発行と見做せる。ドラクエの世界でスライムを倒して3ゴールドを得る行為すら通貨の発行であるという観点で考えた時、このブログの読者は誰しも通貨発行の体験があるはずである。 現実で使われる通貨を鋳造したら普通の犯罪であるが、この日で法に触れずにこれに近い行為を達成できるのが借金である。人から10万円を借りて、その引き換えに「x万円を○月○日までにお返しします」と借用書を書けばその「○月○日にx万円を受け取る権利」自体が債権としてそれなりの値段y円で市場で取引される一方で自分はx万円を得ることができ、世界に存在する価値の総量がy円だけ増えたことになる。これは経済の基である。 この借用書、

    ブロックチェーンの作り出す価値に付いて - Software Transactional Memo
  • Re: Web3というテロリズム - Software Transactional Memo

    えふしんさんに何の恨みも無いのだけれど わからないことを偉そうに書いて怒られて進化したいという芸風なので書いてみました。 Web3というテロリズム|えふしん #note https://t.co/84SoYtIzDC — えふしん (@fshin2000) 2022年2月17日 というのだから技術的に正確なツッコミを入れて欲しいという事だと信じて書く。まさか後釣り宣言など来ないだろう。 Web3という言葉は、既存の権力構造に対する宣戦布告と考えれば、割と素直に受け入れられる。 ここは当にその通りで「下剋上」の雰囲気感だけで業界が振り回されているのは見るに耐えない。権力構造を敵対視するあまり、当に味方に付けるべきエンドユーザーの事がなおざりになっているとすら感じている。市場経済で世の中が動く中、エンドユーザーは確かな利益が無ければ動かないし、利益無しで人やお金を動かさせたら詐欺である。こ

    Re: Web3というテロリズム - Software Transactional Memo
  • Re: Re: Re: 空想のNFTと現実のNFT - Software Transactional Memo

    前回の記事に更に返事を頂いた。応酬が全部長文なのでこの記事から読み始める人は「まとめ」から読んで興味が湧いたかどうかで全文を追うか検討して欲しい。 sasakill.substack.com まさか当に返事が貰えるとは思っていなかったが、実に興味深く、かつ知見として共有すべき事が書いてあったので「いつまでそのネタ擦ってんだよ」と突っ込まれるのを覚悟の上でさらなる返事をまとめる。 kumagiさんは「アテンション・エコノミーが最高であるとは思っていないが、市場の競争によって良い体験が生まれていることは認める」というもので、一方私は「アテンション・エコノミーの影響力が強くなりすぎていて、それ以外の良い体験の可能性を押しつぶしている」ととらえている。 これは確かにそうで40億回/日の再生数のうちどれだけが真にユーザーの利益になったかどうかについて僕は何らコメントできる立場にない。全ユーザーが全

    Re: Re: Re: 空想のNFTと現実のNFT - Software Transactional Memo
  • Re: 空想のNFTと現実のNFT - Software Transactional Memo

    前回の記事に長文で反論が付いていたので興味深く拝読した。 sasakill.substack.com 書いた人はSmartnews社のVice Presidentのようで、予想外のところまで記事がリーチしたのは少し驚いている。 メタバースNFTの使い途の一部でしかなく、Web3によって完璧な非中央集権的な社会が実現するなんてこともない。 僕の記事では「メタバースNFTは不要」と言ったのに「NFTメタバースは不要」というような受け取られ方をしているあたりは少し気になるが、彼が論点に挙げたいのはメタバースでもWeb3でもなくNFT単体であるようだ。そのつもりで僕の意見をまとめる。 私の考えでは「ノーコストでコピーが可能」という議論の土台にそもそも穴がある。 繰り返すがコピーはやはりノーコストである。この記事の読者が自身のデバイスに僕の記事を表示させるまでのコピーに掛かった電気代・通信費の

    Re: 空想のNFTと現実のNFT - Software Transactional Memo
  • NFTとメタバースについて思うこと - Software Transactional Memo

    TL;DR NFT投機界隈のデタラメに気をつけましょう ブロックチェーンはデータに価値をもたらすのか もたらさない。 NFT界隈がよく言う「希少性」自体には何の価値もない、部屋の隅に落ちている埃だって厳密には世界に全く同じ物は存在しないしデジタルデータのように完璧かつ無制限に複製することもできない、それでも価値はない。 ブロックチェーンのwalletを作成したら既にそのwalletは自分の唯一無二な所有物となるが作成時点でwallet自体の価値は空である。希少や有限であること自体を根拠に出資を迫ってきたらそれは詐欺である。 希少or有限な物にお金を払うモチベーションがあるとするならばそれは実需を除くとそういう信仰があるからに他ならない。伏見稲荷大社に21万円払えば5号の鳥居が奉納できるがやってる事はそれと変わらない。伏見稲荷大社に置ける鳥居の数は当然有限だが、有限であることだけを理由に奉納

    NFTとメタバースについて思うこと - Software Transactional Memo
  • 書評:並行プログラミング入門 - Software Transactional Memo

    TL;DR 並行処理を実装する人のこれからのスタンダードになる一冊。買い。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ 作者:高野 祐輝 オライリージャパン Amazon 買ったら思いの外早く届いたのでパラパラと読み始めたら一気に読み終えてしまった。 総評 敢えて雑な喩え方をするなら The Art of Multiprocessor Programming (通称TAoMP) の内容を薄めてRustやアセンブラや計算モデルを足したようなだった。 日語の書籍としてはかなり珍しくWait-Free, Lock-Free, Obstruction-Freeの違いなどを適切に論じており、TTAS Lock, MCS Lock, TL2といった日語では希少な情報が書かれているレアなである。これらに付いて論じている日語のは知る限り (TAoMPと昔僕

    書評:並行プログラミング入門 - Software Transactional Memo
  • ソフトウェアエンジニア、建売を買う - Software Transactional Memo

    買った戸建てに付けた表札、住所はぼかした プロローグ 新型コロナが世間を騒がせ始めて以来ずっと在宅勤務をしている。 転職に伴って会社近くに引っ越したので通勤のドアtoドアで30分台を叩き出していた好立地はその活躍の機会をすっかり失った一方で、妥協した40平米の部屋の狭さと1LDK+Sの間取りが巣ごもり子育て核家族を襲った。 外で遊び足りない娘は泣き、広がった活動範囲で家中の物を無秩序に引っ掻き回すので必然的に触られたくないものは高いところに置くことになり、立体的に活用される事になった1LDKの空間は生活の難度を高めジワジワと真綿で首を締めるような状況が続いた。 住んでいたマンションは駅に近いのは良いが作りは古く、冬には窓枠が結露しカビが発生する。窓から降りる冷気はそのまま壁や床にすら結露を起こし室内はカビに見舞われた。それとの因果関係は不明だが冬場の慢性的な体調不良が家庭内の治安を更に悪化

    ソフトウェアエンジニア、建売を買う - Software Transactional Memo
  • 娘が1歳半になるまでに助かった便利アイテムたち - Software Transactional Memo

    TL;DR アフィ記事です 1歳半になりました 先日めでたく友人に子供が生まれ、他でも安定期に入ったとかめでたい報告が相次いでおり、そういう年代に入った実感が湧いてきた。 前々回の記事で書いた娘が無事に一歳半検診を終え、この期間であっても学んだ事は多い。特に子育てに関わる便利アイテムというのは実際に子育てをしないと触れる機会もないし、子供も家庭事情も千差万別なので有用なものもあればそうでないものもある。 実際に子育てを始めるまでは、3ヶ月までは首が座らないとか(そもそも首が座るって何さ?)、そのうち首が座ってもまだ腰が座らないとか、乳児の中でも複数の段階に別れていることすら知らなかった。  スイマーバで遊ぶ娘 6ヶ月にもなれば徐々に離乳を始めていくことになるのだけど、離乳事の教育であることも考えるとできれば座ってべさせたいのが親心である。が、6ヶ月というのは首は座っていても床や

    娘が1歳半になるまでに助かった便利アイテムたち - Software Transactional Memo
  • こうしてGoogleに入社した(kumagi編) - Software Transactional Memo

    Googleオフィスの窓からの眺めをGoogle Photoが自動加工したもの TL;DR AtCoderやろうぜ Googleの(僕から見て)偉い人が立て続けにブログを書いており ctrl-x-s.blog hoge.blog ここ数件の僕のブログへの反響を読んでも「Googlerだから特別」みたいな意見が散見され、入社へのハードルが変に高く見られてしまっている気がするので、僕がGoogleに入社する準備として取り組んでいた事とそのレベルを紹介する。程度の低さに安心して欲しい。 英語 英語の論文は興味の赴くままに読んでいたため読むことに関してはあまり苦手意識は無いものの、絶対的な英語力に関して言うとTOEIC500点というスコアが端的に表している。これがどれぐらいかというと、得意分野から外れると長文を読む速度と精度がガタ落ちし、リスニングも結構な単語を聞き落とし、文脈からの推測と辛うじて

    こうしてGoogleに入社した(kumagi編) - Software Transactional Memo
    yasuhiro1212
    yasuhiro1212 2019/03/26
    電話面接2回と志望動機聞かれないのがいいね。日本企業のように取り繕った志望動機話さなくて良いし、現地行かなくていいのは素晴らしい。
  • Googleに転職していきなり3ヶ月の育休を貰った - Software Transactional Memo

    TL;DR アフィ記事です 転職してからすっかりSNSで音沙汰がなくなったなkumagiと一部の界隈で噂されているようですが、twitterやFacebookにはたまに書いていたように娘が産まれました。 Googleでは子供が生まれた時に育休を取ることができる。 単なる育児休業は育児・介護休業法に定められた労働者の権利であるけれど、Googleではそれに加えて3ヶ月間フルに給料が支払われる有給休暇が付与される*1。これに加えて雇用保険から給付金をもらう育休を取っても良いとされているが、ソフトウェアエンジニア的な意味で遅れを取り過ぎるのも憚られたのでまずは3ヶ月の有給休暇をありがたく頂戴することにした。 授乳について 3ヶ月までの赤ちゃんは昼夜問わず3時間おきに母乳やミルクを欲しがる。大抵の成人は3時間おきに母乳やミルクを与え続けると精神的にだいぶ参ってくるという知見が広く共有されていたので

    Googleに転職していきなり3ヶ月の育休を貰った - Software Transactional Memo
  • 6年勤めたNTTを退職しました - Software Transactional Memo

    最終退社時の自分の机 2012年に修士卒からの新卒でNTT研究所に入り、6年間お世話になりました。 研究所では同期や先輩や後輩や上司に恵まれ、存分に書籍や論文を読んで勉強して力を蓄えたり、対外的な発表の場にも恵まれ外ではできないような体験をすることができました。 ありがとうございました。 入社当時に作られたtogetterを見返すと togetter.com togetter.com まるで昨日のように感じられる。 NTT社内で僕が何をやっていたかについては言える物は軒並みアウトプットされているのでわざわざここでは触れない。 NTT研究所について NTT研究所を客観的に見た時にどうかを書いていく とにかく人に恵まれている。採用の倍率が高いのもあって潤沢な学生エントリーからよりすぐりのエリートが謎の力でポテンシャルを見極められて採用されている。同期を見てひと目ですごい奴も居れば、一見してわか

    6年勤めたNTTを退職しました - Software Transactional Memo
  • 分散キューという名の苦しみ - Software Transactional Memo

    TL;DR 分散システムにおいてキューを導入する場合、当にキューが必要なのか再考すべき。そこが地獄の入り口だから。 システムの抽象 コンピュータの世界は、来は0と1の信号の羅列が飛び交う無機質なものである。でも人類は信号だけですべてを語らず、様々な喩えを定義してきた。それはデスクトップ・ウィンドウ・マウスカーソルといったグラフィカルな表現に留まらず、パケットやカプセル化といった用語にロック・キュー・リスト・木などのアルゴリズムやデータ構造の世界にも自然に溶け込んでいる。これらはすべて人間の理解を助けるための喩え話に過ぎず、この喩えこそが人間のより直感的な理解をもたらす一方で、発想の制約を生み出してきた。 人間が大きなシステムを作るときも何らかの喩えを用いてシステム全体を整理する。アーキテクチャの「ポンチ絵」を描いて情報共有をするのは企業に勤めていれば経験した人も多いだろう。パワーポイン

    分散キューという名の苦しみ - Software Transactional Memo
  • NTTによるブロッキング論点の整理 - Software Transactional Memo

    NTTがブロッキングを発表してから様々な反響があったのでざっと眺めて反応を主観でカテゴライズしてみる。 TL;DR; NTTも政府もしっかりしろ。あと違法行為はやっぱりダメだ。 今回の措置に賛成だよ派 困ってる人がいるからしょうがないよ派 プロバイダ責任制限法を越えるから仕方ないよ派 やまもといちろうが気にわないよ派 他の国ではやってるよ派 反対派は漫画村ユーザだよ派 ブロッキングは合法だよ派(宛先は通信の秘密に当たらないよ派) 政府がそう言ったらしいよ派 緊急避難が適用されるから合法だよ派(児童ポルノと同じだよ派) なるべく速やかに立法すべきだよ派(結果整合派) 違法だからどうした派(アナーキー派) 今回の措置に反対だよ派 当に緊急回避が成り立つなら賛成だよ派(漫画村もうないじゃん派) 立法の後なら賛成だよ派 さっさと立法しろ派(法治重視派) 憲法21条も一緒に修正しろ派(整合性重視

    NTTによるブロッキング論点の整理 - Software Transactional Memo
  • NTTによるブロッキングの何が許せないのか - Software Transactional Memo

    注意: この記事は私の所属する組織の意思も意見も絶対に断固として欠片すらも表明する事を意図して書いていません TL;DR;今回のサイトブロッキングは私見ではダメだと思ってるけど、国の言うロジックは一応わかるし勘違いベースで応援するのも叩くのも止めて欲しい 前提知識 まず大前提として、日には憲法というものがあり、その21条にはこのように明記されている。 憲法第二十一条 集会、結社及び言論、出版その他一切の表現の自由は、これを保障する。 検閲は、これをしてはならない。通信の秘密は、これを侵してはならない。 憲法に沿った国の運営をするためここから派生して制定されている法律のうち、今回の件に関係が深いのは電気通信事業法である。 電気通信事業法 (検閲の禁止)第三条電気通信事業者の取扱中に係る通信は、検閲してはならない。 (秘密の保護)第四条電気通信事業者の取扱中に係る通信の秘密は、侵してはならな