天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

『ルールズ・オブ・プログラミング』を2倍楽しむための1つのルール - FL#30に参加してきた

forkwell.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

これまで Forkwell のイベントで登壇されたエキスパートの方々は、先達が記した書籍から「気づき」を得て実践し、振り返り、再現性のある「学び」として身に付けていく中で、実績を築いてこられました。
しかし、日々限られた時間の中で知識や情報をアップデートし続けるのはそう簡単ではありません。
Forkwell Library では、著者・訳者・実践者らを登壇者として招き、そんな思いを抱えた開発者の皆さまが「学びのきっかけ」を得られる勉強会を目指します。

今回の第30回目では、2023年8月28日(火)発売の『ルールズ・オブ・プログラミング』翻訳者の久富木 隆一氏をお招きし、お話を伺います。
本書は、全部で21の「ルール」から成り立っており、すべてのプログラマーが知っておくべき本質的な知恵と、熟練したプログラマーにとって示唆に富む洞察を含み、またコードを書く際だけでなく、デバッグや最適化の際に有用な知識にも触れています。
ゲーム領域に限らず、幅広いプログラマーを対象とした、必読のプログラミング哲学書となっている本書について、翻訳者の久富木さんに、この本を読むことで得られる効果や、前提知識として押さえた上で読むとより良い学びが得られるポイントについてお話しいただきます。

会の様子

基調講演

ルールとは

最初に本のタイトルにもなっているルールに関する説明がありました。

ルールは、辞書的定義でローカルな規則やグローバルな法則という意味があり、本書では格言的な意味合いでルールが使用されているということです。

格言として扱うことで、短く簡潔に相手に伝わりますし、覚えやすく伝えやすいというメリットがあるというお話でした。

対象読者

本書の対象読者としては、新人プログラマー*1/上級プログラマー両方が挙げられるという話がありました。
上級プログラマーにとっては、忘れがちなルールを具体的なコード例とともに再確認することができますし、新人プログラマーにとっては、上級プログラマーが普段どのようなことを意識しているのかが知れるというのがその根拠として挙げられていました。

また、本書の例はゲーム開発者だとよりコンテキストが理解しやすい内容になっている部分はある*2ものの、アルゴリズムやデータ構造の基礎などはどの分野でも必要な知識であるため、役立つだろうという話もありました。

本書をなぜ読むべきなのか?

本書を読む理由として、以下が挙げられていました。

  • 著者がすでに世で商業的な成功を収めた人である
  • 成果を出した人の実践的経験則が聞ける
  • 現実主義的な本である(現実世界でどう対応するかの手の内をさらけ出したような本である)
  • 平凡なルールをどのような失敗体験から編み出したのかが追随できる
本書を2倍楽しむための1つのルール

本書を楽しむためのルールとして、「汝自身を知れ」というルールが挙げられていました。

本書は、自身の現在位置を知るとともに自省を促す効果があるということで、「何が自分たちには響かなかったのか?」という部分を他の同僚やChatGPTと議論してみるのがおすすめだということです。

Q&A

基調講演の後は質疑応答がありました。以下、質問と回答を一問一答形式かつ常体で記載していきます。

本書の類書との比較は?

尖った事例が魅力なので類書を挙げるのは難しい。

この本を読む前/読む後に読む本は?

この後に読む本としては、プログラミング言語C++やGoogleのソフトウェアエンジニアリングなどが挙げられる。

何に困っている人にとっては特に効果が高い本か?

組織にそのままルールを取り入れることもできるが、仕事場でどうやってルールを作るか?がわからない人が読むと効果が高いと思う。

これは大事だなと思ったルールはあるか?

ネタバレになるので少し内容を伏せるが、「物事は単純がいいけど暗に単純化しちゃいけないよ」みたいな話や、「なんでも計算しろ」みたいな話は非常に面白かった。

汝を知るコツは?

コードレビューなど他人の助けを借りることが重要だと思う。

本書を読んでキャリアパスに役立ったりキャリアにいかせたと思った話はあるか?

さっき挙げた「物事は単純がいいけど暗に単純化しちゃいけないよ」とか。(ただしこの本を読んでキャリアを考えたみたいな経験はない)

ルールはドキュメントみたいな形で明確化したほうがよいか?

やるべきだなと思う。ドキュメントにしたら、メンテナンスコストはあるけれどコアなものだけに絞る方が良いと思う。

本書に関わるゲームをやっていなくても読めるか?

読めるし楽しめると思う。自分たちと違うものを見つけるという観点とかで読めるといいとは思う。

読んでみて厳しいと思ったルールは?

「一般化には3つの例が必要」とかは頭ごなしに言われている感じはあったが、読み勧めていくと自身の先入観が悪さをしていたことに気がついた。

リーダブルコードとの違いは?

結構違うと思う。

ルールを定義するやり方が違うという話もあるし、本書のほうが例がより実践的だという話もある。

本書を読む前にゲーム業界の背景として頭に入れておくべきものはあるのか?

中身を知っている必要はないと思う。本発表で紹介した2層構造とかゲームプログラミングを支える数学とかは知っておいてもいいと思う。

本を読んで自身や自身のチームに適用したルールはあるか?

「すべて計算せよ」的なルールは適用した。

会全体を通した感想

本書はすでに軽く読んだのですが、自分自身の現在地を知るための本という視点では読んでいなかったので、今日知ったゲーム開発のコンテキストも頭に入れつつ、もう一度その視点で読んでみようと思いました。

*1:ただし、一つの言語が書けることとアルゴリズム&データ構造といった基礎的知識があることの2点は前提

*2:ゲームコードの構造である2層構造が基になっている