Magnolia Tech

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

関心の非対称性について

いろいろな設計方法論とか、良いコードを書くためのお作法とか、最近だと書籍もたくさん出ていて、無限に勉強することができるのだけど、勉強ばかりしている訳にもいかず、われわれは目の前の課題を解決するためのコードを書いたり、納品するためのコードを書いたり、なんのために作っているのか分からないプロダクトのコードの断片を指示通りに書かされる日々と向き合っていかないといけない、という現実があるわけで、つまり時間は有限なのです。

という中で、いつも気にしていることと言うか、忘れちゃいけないなーと思っているのは、その方法論が「何の問題を解決しようとしているのか?」というところで。

人の関心は偏在している、人と人の関心の対象には非対称性がある……そんな状況の中で、その関心の方向性を合わせていくために方法論が有って、それは「ほんのちょっと目線をずらしくれるもの」くらいに捉えておくといいんじゃないかなと思っている。

ただ、カリスマみたいな人が上手く全体をまとめてくれて、進むべき道をバシ!っと示してくれる時も有って、それはそれで凄いけど、再現性がある場合とない場合があるからなー。

プロジェクトにおいては、関わる人々がその立場や、価値観は違えど、とりあえず同じ方向を一回は向いておくことが大事なのだけど、勝手に同じ方向を向くことは全体に無くて、「ここが大事ですよー注目ー」と言って、目線を向かせるために権威に頼った方が手っ取り早いときもあって、そんなときに「ほら、この本にこんなやり方が書いてあるよ」っていうやり方が有効な場面ってあるんですよ、万能ではないけどね。

だから、方法論だけを取り上げて、良いとか悪いとか、時代遅れとか、言ってもなーって思った祝日の午後なのです。


まぁ、でも、あひるさんのこのツイートがもっと良い言語化だった。

『技術カンファレンスのマスターガイド:企画から運営までの完全手引き』は、すべてのテックイベントに興味がある人が読むべき1冊です!

技術書典15、あまり内容をチェックしていなかったので、行く予定を入れていなかったのですが、941さんが執筆に参加したカンファレンスの運営本が出品されていて、しかも会場しか紙版は入手できないと分かって、急遽時間を作って現地で入手しました

しかも、事前にページ数を知らないで現地に着いたので、「所謂”薄い本”じゃないの?」とその場で驚愕した、なんと200ページ超え!

11月26日までオンラインで電子書籍版は入手できるそうです、まだ入手していない人は、ハリーアップ!

techbookfest.org


自分でも9年ほど吉祥寺.pmという50人規模の勉強会を定期開催したり、YAPC::Tokyo 2019にスタッフ参加したりと、イベント開催にはそれなりの経験があるほうだと思っています。

kichijojipm.connpass.com

が、ここまで圧巻の物量で、あらゆる要素に対するポイントが網羅されていると、「なるほどなー、これは考えたことも無かった」「これをこう言語化するのかー」とたくさんの学びがありました。言語化、大事ですね。

特に、準備を進めるにあたって起きえるトラブル、当日発生するトラブル事例が充実しているのが、めちゃめちゃ価値ありです。当然、イベントは準備が8割なので、企画を考え、実現に向けてどんなステークホルダーを巻き込むか、当日までにどんな準備をすべきか、ということにページの大半が使われています。1,000人規模のカンファレンス、こんなに考えることがあるのか!と運営に参加していた自分ですら驚いてしまいます。特に、「参加者の受付設計」は小規模なイベントには小規模なりの悩みがあり、大規模なイベントには大規模なりの悩みが有って、なかなか難しいのですが、けっこうイベントの成否の中で受付時の印象って残るものなので大事なので、「そうだよなー」って読んでました。

たとえば、「電源確保」あたりは会場に有るPCの量が多いテックカンファレンスでは必須のチェック項目ですね。

全編にわたって、カンファレンス運営というさまざまな人が関わる営みにおける気遣い、配慮、先回り、感謝が溢れています。これがすぐに真似できるものでもないし、中には100人を超えるようなカンファレンスじゃないと関係ない、といえることも多いですが、感覚的には20人〜30人規模の、「ちょっと一人だと手に余るくらいの規模」のイベントをやる上では絶対にチェックしておいた方がいい内容ばかりだと思います。

最後に、「昨今の事情による著者見解」という一枚の差し込みが有ったのも良くて、最後まで気配りだなーと。


というわけで…

  • カンファレンスをまだやったことないけど、開催に興味がある人 →今すぐゲットして備える!
  • カンファレンス開催に一定の経験が有る人 →今すぐゲットして自分の観点に漏れがないか確認する!
  • カンファレンスに参加経験の有る人 →今すぐゲットして、イベント開催の裏側を知ってより楽しむ準備をする!
  • カンファレンスに参加も開催もしたことが無い人 →とりあえずゲットしておいて未来に備えよう!

ほんと商業出版でも全然通用するレベルですね、絶対に入手できるうちに入手した方がいいですよ!


ちなみに吉祥寺.pmの運営に関するスタイルは、コロナ禍前ですが、以下のようにレポートいただいたことがあります。

kondoyuko.hatenablog.com

こんな形でまとめていただくと自分でも意識せずに運営の工夫をやっていたんだなーと思い出しましたが、運営として工夫すべきところ、気を遣うべきところはありますが、一方でイベント運営自体が本業ではないので、そこはいかに省力化を図っていくか?というのも大事なポイントなんですよね。色々な意味で継続性が有って、燃え尽きないようなやり方、仕組みが大事です。

この本に書かれていることは、めちゃめちゃ参考になりますが、一方で「自分にとっての運営のやり易さ」と、「参加者の満足度」のバランスはきちんと見極めていかないといけないなーとも思いました。

プログラミング用フォントを選ぶための覚え書き

プログラミング用フォントについて調べたので、そのメモ だいぶ書き換えた

macOS

SF Mono

  • Terminal.appXcodeのデフォルトフォント

    アプリケーションに内蔵されているので、他のアプリケーション(iTerm2とか)のフォント一覧には表示されない。

  • 0(ゼロ)には斜線が入ってO(オー)と区別し易いデザイン

    一方で、l(エル)と1(いち)は、他のプログラミングフォントほど極端な差をつけていない

  • グリフに漢字などは含まず、含まれていないグリフはシステムフォントが利用される(日本語が優先される環境であればヒラギノ書体)

    グリフ数は1628(イタリック系は1324)

  • プログラミング系記号の合字(リガチャ)対応や、Powerline対応フォントは含まれていない

Windows

Cascadia Code

  • Windows Terminal用にリリースされたフォント

  • SIL OPEN FONT LICENSEというライセンスで配布されていて、他のアプリケーションや、OSからも利用可能

    github.com

  • 0(ゼロ)は斜線が入ってO(オー)と区別し易く、l(エル)はセリフの向きを変えて区別し易くデザインされている

  • グリフに漢字などは含まず、含まれていないグリフはOSのシステムフォントが利用される

  • プログラミング系記号の合字(リガチャ)対応のCascadia Codeと、対応しないCascadia Monoの2種類がある

  • GitHubからダウンロードできるバージョンには、更にPowerline対応版(フォント名の後ろにPLがつく)が含まれる

  • アーカイブの中に、フォーマットごとに色々な種類のファイルが有るが、「otf」=>「static」に含まれるファイルをインストール


その他

Source Code Pro

  • Adobeがリリースしているプログラミング用フォント

    github.com

  • デザインの背景は以下のブログエントリが詳しい(READMEに全然フォントの特徴が書いてない!)

  • blog.typekit.com

  • グリフに漢字などは含まず、含まれていないグリフはOSのシステムフォントが利用される

  • ライセンスは、SIL OPEN FONT LICENSE

  • プログラミング系記号の合字(リガチャ)対応は無いけど、Powerline対応フォントが含まれている(ただし、基本の7文字のみ...拡張は含まない)

  • インストール用のアーカイブはフォントフォーマットごとに別れている...OTFで始まるものをインストール

Source Han Code JP

  • Source Code Proと、漢字も含む「源の角ゴシック」を合成したフォント、つまり漢字も含む

    github.com

  • 半角文字と全角文字の幅の比率が1:2ではなく2:3になっているところが特徴

    ccjktype.fonts.adobe.com

  • ライセンスは、SIL OPEN FONT LICENSE

  • インストール用のアーカイブは一つにまとまっている

Monaspace

  • GitHub社から発表されたばかりの等幅フォント

    github.com

  • 5種類の書体ですべて幅を揃えてので、重ね合わせて、組み合わせで利用できる

  • 隣り合う文字の組み合わせによってmやiといった文字の幅を変えることで読みやすさを向上させている(Text Healing)

  • グリフに漢字などは含まず、含まれていないグリフはOSのシステムフォントが利用される

  • ライセンスは、SIL OPEN FONT LICENSE

  • プログラミング系記号の合字(リガチャ)対応(ただし、スタイルとして、dlogを指定しないといけないので、VS code以外のたいていのエディタや、ターミナルソフトでは有効にできない)

  • Powerline対応は無し

  • インストールは、「fonts」=>「otf」に含まれるファイルをインストール


合字(リガチャ)について

同じ合字(リガチャ)対応のフォントでも合字が、スタイルにdlogを指定した時に有効になるのか、caltを指定した時に有効になるかはフォントのデザイン次第。

たいていcaltはデフォルトで有効、dlogはデフォルトで無効

『HATENA TECH BOOK Vol.2』を読んだ

技術書典15で『HATENA TECH BOOK Vol.2』を入手したので、その感想エントリです。

techbookfest.org

はてな社の有志が集まって作られた技術同人誌、その第2弾。

いくつかの記事を拾い読みした段階での感想

序文

大西さんによる序文。

他の会社であるような「あのプロダクトの裏側大公開」みたいな内容ではなく、「あなたの推しの技術を教えてくだささい」というテーマが設定されているそうで、メンバの興味に任せて色々なテーマが扱われているのが「個性」が見えていいですね。

あと、今のはてな社には、電子・紙書籍制作ツールのRe:Viewの作者、kmutoさんが在籍されているんですね。

reviewml.org

Perlの未定義動作110連発

papixさんによるPerlの記事

その場で「Perlの記事、この会場でも他に無くないですか?」と思わず言ってしまった。

Perlに限らず、言語の未定義動作って、未定義ゆえに「これは未定義です」と親切に書かれていることが少なく、意図せず使ってしまうことがありますね。 この記事でも、「未定義動作とは、毎回挙動が変わるのではなく、未来のバージョンでは変わるかもしれない」という意味での未定義なので、その場では困らないことも多いので。

そういう意味ではとても良い啓蒙記事だと思います。

あと、どうやって同人誌で110もの未定義を紹介するか、という点については本誌を読んでみてください。

ラムダ計算で遊んでみよう

todays_mitsuiさんによるラムダ計算の入門記事

たった3 + 1の計4つの構成要素だけで計算機としての機能をすべて実現できるラムダ計算という考え方についての解説記事。

おそらく自然数の定義のところで、「は?」となること間違い無いけど、よく考えるなーって思ってしまった。

ラムダ計算の実行環境を作って提供されているそうなので、遊んでみると面白いと思います。

mogul-lang.mudatobunka.org

人事をささえる技術

人事部長onishiさんの、人事としての活動を技術を使って改善する話。

社員採用の問題点をそれぞれの日数の経過から分析するアプローチは面白いですね、さすが!

採用活動、ほんと早く動かないと良い採用は決してできないので、この手の定量的なアプローチがすごく有効なんですよね 採用にどのくらいの優先度をつけるかは、まさに経営ですね!


と書き始めるとキリが無いのでこの辺で終わりにしますが、技術書典15はオンラインでは2023年11月26日(日)まで開催中なので、気になる本は早めにゲットしましょう!

『GitLabに学ぶ 世界最先端のリモート組織のつくりかた』- 意識的に”設計”されないとリモートワーク中心の働き方は実現できないということがわかる1冊

紹介された本はなるべくその場で注文して実際に読んでみる、というのを実践するように心がけています。この本もそうやって紹介されたので、すぐに買って読んでみました。

当たり前ですが、単にリモートワークにすれば全ての問題が解決する、業績が上がる、リモートワーク最高!という内容ではありません。

この本の中心は、GitLab社が作った「GitLab Handbook」をベースに、組織の価値観、それをベースにした仕事のやり方、評価のやり方を定義、可視化することで、よりみんなが満足して、より高い成果を出すための環境作りの方法が解説されています。

  • GitLab社はオールリモートで運営されていて、2,000名を超える従業員が特定のオフィスを持たない
  • 仕事のやり方は、3,000ページを超える「GitLab Handbook」にまとめられている (3,000ページというと驚くけど、ちょっとしたコミュニケーション主体のタスクをルールに書き起こしてみるだけでも簡単に10ページとか行くので、逆に「少ないな」くらい思ってしまった)
  • コミュニケーションが円滑にいくためのガイドラインやツール選定の方針などが書かれている

GitLab Handbookは、以下のサイトにすべて公開されています。

about.gitlab.com

仕事のやり方を作るためにはそれだけの手間をかけて、「設計していく必要がある」、ということなので、「じゃあ明日からそのGitLab Handbookの通りに仕事をやってみよう」と始めてもきっと上手くいきません。


詳しくは本を読んでください、GitLab Handbookを読んでください、としか言えないのですが、なかでも特に良かった箇所は以下の二つです。

  • 経営陣のデフォルトリモートにする

    現場のマネージャーでも同じですが、「意思決定をする人の影響力」はやはり無視できないので、この層の人たちが率先して実践することで組織が変わるのは間違いないですし、逆にいえばこの層を変えないで組織は何も変わらないですからね

  • リモートワークに共通して発生する問題 働きすぎる

    『リモートワークの達人』でもこれがすごく強調されていました。仕事と生活の境目が曖昧になり、物理的な出社・退社という区切りが無くなることで、際限が無くなってしまい、働きすぎになり、最後はバーンアウトになってしまう...「成果」でしか測れないからこそ、そこにどれだけの「時間」を使っているか、ということに意識的にならないといけないわけです。


あと、この本を読んで特に思ったことは、自分で「GitLab Handbookに相当する文書が書けるだろうか?」という点でした。

意外と自分たちが普段やっていることを言語化することは難しく、それはきっと「言語化しなくてもできてしまっているから」からだと思うのですが、まずは「名前をつけること」で見えてくることがあります。

「名前をつけて」「その手順を定義し」「特性は何かを考え」「より良いやり方に昇華」させていく……これは完全に普段のプログラミングでやっていることそのものであって、決して特別なことではないのではないかと思います。

ただ、それが普段の自分たちの仕事のやり方になると、そこに投資することが後回しになってしまうだけで。

つまり、スケールさせたい組織は「仕事のやり方も常にリファクタリングが必要」という発想を持てるか否か、に尽きるのかなと。


書かれていることの本質は、10年前、コロナ禍に入る前に書かれた『リモートワークの達人』と変わらないのですが、世界中の色々な状況がアップデートされているのと、より実践されてきた結果が書かれている点が違います。

『リモートワークの達人』はもう少し”啓蒙書”っぽい雰囲気が強かったですからね。


すべての企業や、組織がこの本に書かれている通りのことを実践して、フルリモート組織になる必要は無いですし、できるわけもないのですが(物理的な制約はどうしてもありますから)、自分たちの仕事を振り返って、変えていくためのきっかけには良い1冊だと思います。とにかく後半の記載はどれも具体的だし、実際にやってみよう、という気にさせてくれますね。問題は、この本が散々強調している「ドキュメント化」の稼働が取れないことじゃないかと思いますが......


GitLab社といえば、昔、本番データベース障害からの復旧するまでの様子をストリーミングで生中継したのが印象的でしたね。

www.publickey1.jp

このオープンマインドがあるなら、確かにこの本に書かれている世界観に到達するなーと納得しました。

(でも心臓に悪いので、動画は見ていません!!)

KEEBMATを導入

これまで使っていたデスクマットがだいぶ汚れてきたので新しいのを探していたら、XのTLで流れてきたKEEBMATという小型キーボード向けのキーボードマット製品が気になったので買ってみた。中国からの配送で、注文から1週間ほどで届いた。

keebmat.com

Xの公式アカウント、ピン留めのツイートが日本語で日本のファン向けのメッセージになってたりして、TLに流れてくる写真も比較的日本の人が多い。

https://twitter.com/keebmatcom

小型キーボードの大きさに合わせた5種類のサイズが用意されていて(40%、Alice、60%、65%、75%)、色は7種類から選べます。

自分が使っているキーボードに合わせて60%を注文。

早速セットアップしてみると...あまりにぴったり作られているので、キーボードを置くと全然見えないですね。

打鍵時の音は……使っているキーボード自体がかなり重くてがっしりしているので、そこまで変わらないかな……ただ普段使っている机が平ではないので、この手のマットが無いと安定しないので、必須なのです。

表面

裏面 ゴムでコーティングされているので、机の上で滑らないようになっています。

パッケージ


また、同じサイズ展開でフェルトエディションという種類もあります。

フェルトエディションの方にはデスクマットとして使える大きめのPLUSというサイズが有ったので、こちらも合わせて購入。

フェルトエディションの方は丸まって届くので、濡らした布を当てて、重いものを乗せてまっすぐにする工程が必要(アイロンでも可)です。

ちょっと面倒だけど、ちゃんとマニュアルに沿ってやった方が良さそう。

追記:けっこう頑張ったけど、重いものを載せる方式ではダメでした。スチームアイロン使ったらすぐに綺麗に伸ばすことができました。 最初からアイロン使った方がいいです。


小型キーボードにこだわる人向けのニッチな製品ですが、余計なスペースを取りたくないから小型キーボードを使っているわけで、確かにこのニーズはあるよなーと思いました。

『プログラミング勉強中の人にオブジェクト指向とは何なのかなんとなく伝えたい本』は、教える人と、教えられる人に配慮した気遣いの1冊です!

技術書典15で「かまずにまるのみ」という素敵な名前のサークルの『プログラミング勉強中の人にオブジェクト指向とは何なのかなんとなく伝えたい本』という本を入手しました。

boothで買えます

booth.pm

オブジェクト指向について、初学者のために勉強のとっかかりとなるキーワードをサクっと教えてくれる本です。

オブジェクトとは何か、クラスとインスタンスとは何か、なぜオブジェクト指向を使うのか、といったことが短いながらも、ポイントを絞って解説されていて、「このくらいの分量なら読む気になるかも」と思わせてくれるところが良いところ。


そして、なによりこの本が素晴らしいのは、「教える立場の人へ」というページが用意されていて、初学者がどんなところでつまづくか、どんなことに気をつけて教えると良いのか、というところがフォローされている点です。このページが用意されていることでこの本のパワーはおそらく530倍くらいにはアップしていること、間違いなしです。


当然、わずか26ページの本でオブジェクト指向のすべてが分かるわけではありませんが、貴重な第一歩を歩み出すには良いきっかけになる本だと思いました。


なお、この本をベタ褒めしているのは、この本を購入する際に、筆者のただあきさんから鳩サブレをもらったからでは決してありません。決して!!


ちなみに現代的なオブジェクト指向プログラミングを学んでいくために、WEB+DB Press 132号の特集はなかなか良かったので、次のステップに移る際にあらかじめ読んでおくと良い道標になると思います。