Magnolia Tech

いつもコードのことばかり考えている人のために。

「実用git 第3版」...読み・書き・そろばん・バージョン管理

14年ぶりに改版されたgitの解説本、「実用git」を読みました。

もう日常的にgitを使うようになって10年以上経つので、初めて触れた頃に何で戸惑っていたのかは覚えていないけど、例えばGitHubとの連携を取っても意外とgitがどうやってファイルを管理しているのか、コミットがどうやって管理されているのかといった内部構造や、設計思想(すべてをハッシュ値で識別する)をしっかり理解していないと使いこなすのが難しいな、という記憶がある。

所謂「git入門本」ではなく、「gitの機能解説本」なので、いきなり初心者の方がこの本を読んでgitを学ぼうとするのは無理がある。しかし、一つ一つの機能が丁寧に解説され、さらにすべてのメッセージに対して日本語訳を一緒に掲載しているところが素晴らしいところ。リファレンスとしても普段使わない機能の学習にも最適。また、監訳注も充実していて、周辺知識のフォローに余念が無い。

特に、コミットのグラフの読み方が分からないと、本当に手も足も出ない、みたいな状態になることが多いのだけど、その辺がしっかり解説されているのが良かった。

branchのデフォルト名称がmainに変わろうとしていたり、switchというサブコマンドが導入されたりと、最近のバージョンでの変更もしっかりフォローされている。

ベテランの人たちは、今更読んで新しい使い方を発見するみたいなことはあまりないかもしれないし、完全な初心者が入門するために使う本でもないけど、一家に1冊有ると安心できる、そんな定番本だと思います。

僕らがカンファレンスへ行く理由2024...「Ya8 2024 - ヤパチー 令和六年最新版(仮)」へ行ってきた

「Ya8 2024 - ヤパチー 令和六年最新版(仮)」のday1に参加してきました。

このヤパチーをどんなイベントなのか、表現するのが非常に難しいのですが、おおよそ以下のやりとりで分かって頂けるかと思います(ハイコンテキストな表現)。

会場では技術カンファレンスらしいトークを聞いたり、紅茶を飲んだり、けん玉やったり、初めましての人も含めてみんなとお昼ご飯に行ったり、懇親会に参加したりしました。

筋トレと有酸素運動、というテーマのディスカッション?も非常に楽しめました。また運動を再開しないとな、と思いました。

スポンサーブースも無いし、ノベルティも無いし、特定のテーマも無いし、公式な懇親会も無いし、必ずしもトークのテーマも技術的なものばかりではありませんが、そこにはカンファレンスの楽しさの全てが有りました。


blog.magnolia.tech

ここからはコロナ禍に入る前、2019年に書いた「僕らがカンファレンスに行く理由」の続きのエントリです。

昨年の12月にオフラインの「吉祥寺.pm」を4年ぶりに開催しましたが、他の方の開催するカンファレンスへの参加は出来ずじまいでした(自分が行きたかったカンファレンスが、東京以外での開催が多かった、という事情もありますが...)。

今回のヤパチーでは、コロナ禍以前には各種勉強会や、カンファレンスでお会いしていた方々に久しぶりにお会いすることができました。みなさん、相変わらず元気そうで何より。

そして、コロナ禍以降、オンラインで知り合えた方々と実際に会える機会でもありました。また、これも久しぶりにカンファレンスの懇親会に(ホストとしてではなく)イチ参加者として参加して楽しむことができました。

前回の「僕らがカンファレンスに行く理由」では、「登壇者の思考の過程が辿れること」を理由に挙げていました。それは登壇者と直接お話をしたり(ご本人の登壇後の感想を聞く、というのも含めて)、質問することも含めて単にスライドを見る以上に、深く背景も含めて理解することができることにあると考えたらからです。

その気持ちは全然変わりませんが、思いがけず通りかかりに聴いた話がすごく興味深かったり、知り合いの知り合いと繋がるきっかけができたり、「お昼ご飯一緒にいいですか?」みたいな会話から始まるつながりも有って、やっぱり人とつながっていくことの大切さを実感しました。

カンファレンスには行った方がいいし、楽しんだ方がいいし、そのためには積極的にコミュニケーションを取りに行った方がいい。

僕がカンファレンスに行く理由は、「そんな楽しもうと思った人がどんどんつながっていって、より楽しめてる場にでききるから」ということに尽きますね。


というわけで、ヤパチーは、主催のuzullaさん始め、運営に関わった方、登壇された方、参加された方、みなさんに感謝しかない最高のイベントでした。次回が有るのか無いのかわかりませんが、とにかくみんなカンファレンスに行った方がいい、楽しんだ方がいい。

さて、2024年7月13日は「大吉祥寺.pm」も開催されます。みなさん、お楽しみにね。


あと、会場のココネリホールの近くに有った「アジ好きですか?」というお店が最高でした。こんな美味しいアジフライ、食べたことがなかったです。また行きたい。

『データモデリングでドメインを駆動する ――分散/疎結合な基幹系システムに向けて』”基幹システム”とは何か、どう作るのか、ということへの道標を示してくれる1冊

著者の杉本啓様より献本いただきました。


「基幹システム」……よく考えると最近だんだんと聞く機会の減ってきたキーワードです。たまにメインフレーム上で動くCOBOLで組まれた基幹システムが負債になっている、といった比較的後ろ向きな話題の文脈で出てきて、あまり「攻めた」話題の文脈では出てこないイメージがあります。

本書は、この「そもそも基幹システムとは何か?」、その基幹システムの中心にある「帳簿」とはどんな役割を果たすのか?それらを支える「データモデル」はどのようなもので、どのような設計になるのか?といったことが、長年経営管理システムを作ってきた経験に裏打ちされた知識をもとに分かりやすく解説されます。

この手の、業務システムの設計の考え方、「要件に沿って設計する」以上の解説がなかなか出回らず、それぞの現場で「秘伝のタレ化」した固有のノウハウに基づいて開発が行われることがほとんどなので、本当にこの本は貴重なノウハウが詰まっています。


さて、一度「基幹システム」をキーワードに戻ります。「基幹システム」というキーワードで検索すると、NTTコミュニケーションズのサイトがトップに出てきて、ここにはこんな解説が書かれていました。

【徹底解説】どこよりも詳しい基幹システムのすべて | NTTコミュニケーションズ

基幹システムとは、「販売管理」「在庫管理」「会計」など企業がビジネスを遂行するために必須である業務を効率化ためのシステムです。「基幹」という言葉が分かりづらくしていますが、受発注管理や販売管理、生産管理、在庫管理、会計業務を行うためのシステムと理解して良いでしょう。

おそらく何を以てその組織の「基幹」なのかは、定義がバラけてしまうと思うのですが、その企業の主たる関心ごとを管理するシステム、と言えます。

特定企業のシステムの完全オーダーメードシステムか、特定のパッケージに長く関わることはあっても、「基幹システム」と呼ばれるものをいくつも満遍なく経験するというのはなかなか無いのではないでしょうか。


ちなみに最初に「そーそれそれ」と思ったのは、第3章「基幹系システム設計のアプローチ」に書かれているデータモデルに関する考察。

伝統的な?設計アプローチとして、よく行われている以下の二つのアプローチ(数限りなく見てきた)

  • 帳票/画面といった「ユーザーインタフェース(UI )」の設計を起点とするデザイン
  • データベース設計(DB)の設計を起点とするデザイン

この二つに対して、「データモデル」を使って帳簿をデザインすべきではないか、というのが本書の主張。ここが本書の肝であり、本書を通じて一貫して語られている部分です。

昔、DDD本を初めて読んだ時に感じた「んーなんか言いたいことは分かるけど、具体的に設計に落とすところが見てみたいんだよなー、なんか一番肝心なところがぼやかされている気がするなー」という疑問に対する答えがここにありました。

ちなみに、著者杉本さんの「ドメイン駆動設計に対する考え方、スタンスは、ちゃんと後半に「データモデルとドメインモデル」という章をまるまる割いて書かれていますので、そちらも必読です。


という訳で、特定企業の経営管理システム、アプリケーションや、特定パッケージだけに慣れている方にとって、その視点を変えたい、拡張したい、といった危機感が有る人にはめちゃめちゃオススメの1冊です。というか、なんとかこれ30年前くらい前にタイムスリップして出版されないですかね、ダメですかね。過去に遡って読ませたい人がたくさん居るんですけど!!

一方で、この本の価値が分かる、というか、この本を一読して、「これは自分に絶対に必要な本だ!」と最初から気づく人は決して多くは無いのではないか?というところも感じました。「今、ちゃんとやっているよ?」という正常性バイアスの中から一歩踏み出して、より良い設計のために、どんな視点を獲得すべきか?そういう気付きのためにも色々な人に読んでほしいと思います。

YAPC::Hiroshima 2024へオンライン参加した

yapcjapan.org

さすがに、オンライン参加だと一日中PCの前に張り付いて発表を聞き続ける、というのができないので、断片的にいくつかのトークやLTを聴いた

中でも「平成のエンジニアから令和のエンジニアへの遺言〜技術情報を伝達する手段の変遷〜」と、杜甫々さんのキーノートが良かった

きっと後日ビデオが公開されると思うので、ぜひ見て欲しい、としか言えないのだけど、YAPCが毎年ちゃんと開催されていることが本当にいいなって思っている YAPCみたいな個人のボランティアで開催されているカンファレンスは、企業開催ともまた違った良さが有るし、熱量が有る

YAPC::asia 2014のリジェクトコン会場での与太話から始まったイベントが10年続いたりもするし、その影響は直接的にだったり、間接的にだったり、色々なところへ広がっていく

残念ながら地方YAPCへ参加したことが無いのだけど、YAPC::Tokyo 2019で運営スタッフの一人としてオープニングを喋ったり、前夜祭の司会をやったり、会場の運営をやったのは本当に良い思い出になっているし、色々な出会いが有った

みんなカンファレンスへ行こう、盛り上げよう!

カンファレンスは勝手に生えてこない 運営する人、登壇する人、参加する人が居てはじめて成立する

こんな幸せな空間が続くように、みんなで盛り上げていこう!

次回のYAPCはまだ発表されていないけど、きっと開催されると信じているし、何らかの形で運営に関わりたいな

技術書の積読を避けるためにやっていること

ついつい技術書を買いすぎて、なかなか読めないまま次を買ってしまったりして、結局読まないままになる、というパターンに時々ハマっている。なるべくそうしないように厳選しているつもりなのだけど、それでもいわゆる積読が発生してしまう。

技術書に関しては、二つのルールを守るようにしている

  • 紙の本を買う

    電子書籍の方が圧倒的に便利なのは分かっているのだけど、やはり物理的な「圧」が有った方が読もうという気になるので、技術書は可能な限り紙の本で買うことにしている

  • 一度に読む本を限定する

    机の上に無印良品の仕切りスタンドを置いてあって、ここに収まる本以外は同時に読まないようにしている 読み終わったら、本棚の本と入れ替え

ちなみに小さい方のサイズは、ノートPCスタンドとしても活躍するのでオススメ クラムシェルモードの複数台のノートPCを立てかけて、使うPCに都度Type-Cケーブルでモニタにつなぐようにしている(モニタ側のUSB端子にマウスもケーブルも繋がっているので、切り替え機もいらない)


とはいえ、積読の効能というのも有るので、積んでおいてもいいのかもしれない

Keychron Q60 MAXを買った

Keychron Q60 Max QMK/VIA ワイヤレス カスタム メカニカルキーボード(US ANSI 配列) – Keychron Japan

去年は、Keychron Q60はいいぞ!と言い続けていましたが、ずっとベアボーンモデルのみの販売が続いていました。

「いよいよ終売か?」と思っていたら、確かに終売になりましたが、Keychronの新ラインナップであるMAX版がリリースされました。

従来のQ60に比べると無線化(Bluetoothか、2.4GHzドングル)されたことと、さらなる静穏化がされたことが大きな変化点です。

技適を通過していないので、国内では無線利用は違法になってしまいますので注意しましょう。

また、今回からスイッチがGateron Jupiterシリーズに変わっています。今回はYellow軸を選んでみました。

Gateron Jupiter Switch Set

この組み合わせでの「コトコト」した感じが、非常にいいですね。静音化の効果で音も従来のQ60より、静かになっています。ただ、それでもオフィスとかに持ち込むか?と言われると、そこは静音スイッチに入れ替えないと、配慮がかけた感じがしますね。

HHKB配列のキーボードが欲しい人には、かなり有望な選択肢になると思います。


追記:ちなみに、オリジナルのHHKBや、他のHHKB配列キーボードより圧倒的にKeychron Q60が気に入っているのは、スイッチ一つでWinとMacの配列の切り替えができるところです 普段から両方を頻繁に切り替えながら使う上では最高の機能です

Bizの意思決定はいかに例外を捨てるか、Devの意思決定はいかに例外を拾うか

タイトルに書かれていることが全てなのだけど、時にBizの人と、Devの人の目線というか、着眼点の違い、意思決定に至るスピード感の違いの元は、どこから来るのか?と思った時に、それを表現する言葉がようやく見つかった気がする。

以前書いた関心の非対称性に関するエントリを一言で言うとって話なんだけど。

blog.magnolia.tech

で、結局これをどうやって乗り越えていくのか?ってことなのけどね。

誰も悪意の有る人はおらず、みんな一生懸命なのに、それぞれの価値観の違いが擦り合わないことで上手く行かない、みたいなことにならないためにはお互いの価値観を知ることが第一歩なんですよね。