こんにちは、虎の穴ラボの awamo です。普段はRuby on Railsを使ったWebアプリケーションの開発を担当しています。
今回は、ラムダノートから出版されている「型システムのしくみ」を読みましたので、その感想を書いていきたいと思います。
書籍情報
| 項目 | 内容 |
|---|---|
| タイトル | 型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語www.lambdanote.com |
| 著者 | 遠藤侑介 |
| 出版社 | ラムダノート |
| ページ数 | 184ページ |
| 発売日 | 2025年4月15日 |
| 価格 | 3,300円(税込) |
| ISBN | 978-4-908686-20-7 |
きっかけ
私は普段の業務ではRubyを中心に開発をしているのですが、最近はフロントエンド開発でTypeScriptに触れる機会が増えてきました。
Rubyの動的型付けの世界に慣れ親しんでいる身としては、静的型付けの言語にはどこか「堅苦しい」という印象がありました。
というのも、型を書くことで安全性が高まるのは理解しつつも、「自由にコードを書く楽しさ」が制限されるような感覚があったからです。
そんな中、型システムそのものの仕組みを手を動かしながら学べるという本書の存在を知り、「苦手意識の正体を知りたい」という気持ちで手に取りました。
どんな本か
本書は、TypeScriptのサブ言語に対する型検査器を実際に実装しながら、型システムの仕組みを段階的に学んでいく構成になっています。
全9章で構成されており、基礎的な型から始まり、徐々に高度な概念へと進んでいきます。
基礎編(第1章〜第4章)
型システムとは何かという導入から始まり、真偽値・数値といったプリミティブな型、関数型、変数定義と逐次実行を扱います。型検査器の土台を作り上げるパートです。
発展編(第5章〜第6章)
オブジェクト型や再帰関数といった、実際のプログラミングで日常的に使われる概念に踏み込みます。TypeScriptを普段使っている方であれば「あの挙動はこういう仕組みだったのか」という発見があるはずです。
応用編(第7章〜第9章)
部分型付け、再帰型、そしてジェネリクスという、型システムの奥深さを体感できるパートです。特に第9章のジェネリクスは、非常に実りのある内容でした。
本書で学んだこと
型システムは「制約」ではなく「設計のための道具」
Rubyで開発していると、静的型は自由な記述を妨げる制約のように感じていました。メタプログラミングやダックタイピングを難しくしているように感じたためです。
しかし本書を通じて、やり方が違うだけでダックタイピングやメタプログラミングも可能であることがわかりました。むしろ比較的安全にこれらの成果物を共有できそうです。
ジェネリクスを理解すれば、使いたくなる
個人的に最も印象に残ったのは第9章のジェネリクスです。
TypeScriptを書いていて <T> のような記法に出会うたびに、なんとなくで使っていました。しかし、本書でジェネリクスが型検査器の中でどのように処理されるのかを実装レベルで追体験すると、その仕組みは想像していたほど複雑ではないことがわかります。
静的型付けに対して持っていた堅苦しいイメージは、ジェネリクスの章を読み進めるうちにだいぶ軽減されました。自分の苦手意識は、機能を正しく理解していないがゆえのものだったのかもしれません。
むしろ、共通ロジックを汎用化して切り出すと、コードのDRY化も容易に見えるので、積極的に活用したくなりました。
「実装して理解する」アプローチの効果
本書の最大の特徴は、概念の説明だけでなく実際に型検査器を実装するところにあります。抽象的になりがちな型システムの話が、コードを書くことで具体的なものになります。各章に演習問題も用意されているので、手を動かしながら学びたい方には最適です。
私は途中で読むことを優先して演習問題を飛ばしてしまったので、また時間を見つけて最後まで実装をしてみたいところです。
それでもRubyが好きという気持ち
型システムの仕組みを概観した今でも、やっぱり個人的にはRubyの方が好きだったりします。
型を明記せずに思いついたアイデアをすぐコードにできる手軽さや、「楽しくプログラムを書く」というRubyの哲学が、自分の性に合っています。
ただ、本書を読んだことで、静的型付けの言語に対する漠然とした苦手意識は薄れました。
TypeScriptを書くときに、型を「書かされている」のではなく「活用している」という感覚で向き合えるようになったのは、大きな収穫ではないかと考えています。
特に、複数人での開発で好まれる理由も改めて納得できました。
こんな人にオススメ
- 普段は動的型付けの言語を使っていて、静的型付けに苦手意識がある方
- 型システムを「なんとなく」ではなく仕組みから理解したい方
- 型システムに興味はあるけれど、学術的な書籍はハードルが高いと感じている方
- 手を動かしながら学ぶのが好きな方
184ページと分量もコンパクトで、読み始めやすいと思います。
私と同じように動的型付け言語をメインに使う方に、ぜひ手に取っていただきたい一冊でした。
採用情報
Fantia開発採用情報
虎の穴ラボでは現在、一緒にFantiaを開発していく仲間を積極募集中です!
多くのユーザーに使っていただけるtoCサービスの開発をやってみたい方は、ぜひ弊社の採用情報をご覧ください。
toranoana-lab.co.jp