Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
技術書を読む技術(JJUG CCC 2023 Fall)
Search
yonetty
November 12, 2023
Programming
3
730
技術書を読む技術(JJUG CCC 2023 Fall)
JJUG CCC 2023 Fallでの登壇資料
yonetty
November 12, 2023
Tweet
Share
More Decks by yonetty
See All by yonetty
Spockで学ぶテスト駆動開発のコツ
yonetty
1
970
『アジャイルソフトウェア開発の奥義』から学ぶテスト駆動開発
yonetty
0
370
Testing Java With Spock
yonetty
0
71
Other Decks in Programming
See All in Programming
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
560
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
200
DMMオンラインサロンアプリのSwift化
hayatan
0
170
Swiftコンパイラ超入門+async関数の仕組み
shiz
0
170
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
170
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
7
1.4k
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
230
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
1.8k
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Become a Pro
speakerdeck
PRO
26
5.1k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
How to Ace a Technical Interview
jacobian
276
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Building Your Own Lightsaber
phodgson
104
6.2k
We Have a Design System, Now What?
morganepeng
51
7.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
KATA
mclloyd
29
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
Transcript
技術書を読む 技術 Nov. 11th, 2023 JJUG CCC 2023 Fall Takeshi
Yonekubo
About Me • 名前:⽶久保 剛(Takeshi Yonekubo) • 所属:株式会社電通国際情報サービス (ISID) •
職種:ソフトウェアアーキテクト • 得意分野:テスト駆動開発 • X:@tyonekubo https://www.youtube.com/watch?v=KZHYh2X6ZXw
技術書を愛してますか?
技術書を読むエンジニアの課題 •内容を完全には理解できなかった •得た知識を実践で活⽤しきれていない •記憶に定着しない
名著『本を読む本』 を技術書に応⽤する テクニックをご紹介 します ※第⼀版は1940年に⽶国で出版され、 各国で読み継がれている
2通りの読書 ❶ 情報を得るための読書 • 新聞、雑誌のようなものを読んで情報の量を増やす • 技術書だと⾔語やフレームワークなど要素技術に関する本 ❷ 理解を深めるための読書 •
⾃分の理解を上まわる本を読みなおして理解を深める • 技術書だと⽅法論やプロセスに関する本
読むに値する良書 “本当に読書法や⼈間の⽣きか たを教えてくれるような本” “100冊に⼀冊、いや⼀万冊に⼀ 冊しかないかもしれないが” エンジニアとしてのあり⽅ に影響を与える良書を⾒つ けて徹底的に読み抜く
読書のレベル 第⼀レベル 初級読書 ⼩中学校までに⾝に付ける、基本的な読 み⽅ 第⼆レベル 点検読書 拾い読みや下読みで本を品定めし、表⾯ 的に読み込んで内容を把握する読み⽅ 第三レベル
分析読書 深く理解するために分析的な⼿法を⽤い て徹底的に読み抜く、系統だった読み⽅ 第四レベル シントピカル読書 同⼀主題について⼆冊以上の本を⽐較し て読み、主題と向き合う読み⽅
本⽇お話しする内容 第⼀レベル 初級読書 第⼆レベル 点検読書 第三レベル 分析読書 第四レベル シントピカル読書 イテレーション0:
下読みする イテレーション1: 通読する イテレーション2: 精読する イテレーション3: 読書マップを作る イテレーション4: 輪読会を⾏う
イテレーション0: 下読みする
下読みすべき箇所 拾い読みのヒント: 1. 表題や序⽂ 2. ⽬次 3. 索引 4. カバーのうたい⽂句
5. かなめと思われるいくつかの章 6. ところどころ拾い読み
技術書の場合 のサンプル
タイトル、カバー
はじめに はじめに、には本の主 題が書かれており重要 ご丁寧に本の構成や読み⽅が 説明されていることも
⽬次 第I部、第II部などの パート分けには意味が ある
参考⽂献 本のバックグラウンド や著者が影響を受けた ものが伺い知れる
著者紹介 著者のバックグラウン ドから、本の主題やそ の背景が知れる
イテレーション1: 通読する
まずは表⾯読み 読者がすべき質問: 1. 全体として何に関する本か。 2. 何がどのように詳しく述べられ ているか。 3. その本は全体として真実か、あ るいはどの部分が真実か。
4. それにはどんな意義があるか。 “難解な本にはじめて取り組むときは、とにかく読 み通すことだけを⼼がける”
⾏間に書く 効果的な書き⼊れの⼯夫: 傍線を引く ☆印、※印、そのほかの印をつける 余⽩に数字を記⼊する キーワードを◦で囲む 余⽩に書き⼊れをする ・・・ “(本を)⾃分の⾎⾁とする最良の⽅法は−それが ⾏間に書くことなのだ。”
三⾊ボールペン情報活⽤術 ⾚ ⻘ 緑 客観的に⾒て、 最も重要な箇所 客観的に⾒て、 まあ重要な箇所 主観的に⾒て、 ⾃分がおもしろいと感じたり、
興味を抱いたりした箇所
技術書に書き込む場合のマイルール ⾚ ⻘ 緑 本や章の主題や主張に通じる、 重要な箇所 それ以外の、 重要な箇所 わからなかった箇所、 ⾯⽩いと感じた箇所、
アイデアが得られた箇所など
(書き込みサンプル) 実際には、⾊分けが厳 密である必要はない。 考えることが⼤事。 重要なページは 折込みを⼊れたり。
判定する 繰り返し読むに 値する本か? 「精読する」へ 本棚へ YES NO “熟読するに値する本も数多く あるが、それにもまして点検 読書にとどめるべきもののほ
うがずっと多い。”
イテレーション2: 精読する
分析読書とは 分析読書の三段階: 1. 概略−何についての本であるかを ⾒分ける− 2. 解釈−内容を解釈する− 3. 批評−知識は伝達されたか− “『本を読む本』は、読むに値する良書を、知的か
つ積極的に読むための規則を述べたものでありま す。”
技術書の分析読書に役⽴つツール •本や章の概略を掴み、著者の提⽰する命題やそ れに対する解決を正しく解釈するためのツール をご紹介します • マインドマップ • UML • グラフィックレコーディング(グラレコ)
• 要約
マインドマップ ここでも3⾊ボール ペンを活⽤する 本のままではなく、 ⾃分にとっての アウトラインを作る
UML 例)[9章 プラクティス5 「CLEAN」コードを作る]の概念を整理したクラス図 概念をモデル化する ことで理解を深化 ⽂章より図の⽅が後 から⾒て理解が容易
グラフィックレコーディング ⽂字だけではなく ビジュアルを活⽤ ⾃分⽤なので絵⼼が なくても⼤丈夫!
要約 •各章の要約⽂を書いてみる ◼ 9章 プラクティス5 「CLEAN」コードを作る 良いソフトウェアの⼟台となるコード品質は5つにまとめられ、頭⽂字を取るとCLEAN となる。 • Cohesive(凝集性)
• Loosely Coupled(疎結合) • Encapsulated(カプセル化) • Assertive(断定的) • Nonredundant(⾮冗⻑) これらのコード品質は相互に関連性があり、どれか⼀つを改善すると他も改善されると いう性質がある。また、テストのしやすさと⾮常に関連が強く、テストしやすいコード を書くことがコード品質の向上につながる。 技術的負債が膨れ上がると開発が遅くなり、⾒積もりを狂わせる。コード品質を向上し ベロシティを保つことが、⾼品質のソフトウェア開発の⼟台となる。
イテレーション3: 読書マップを作る
⾃分だけのマップを作る
オリジナルの帯を考える コード品質こそが ソフトウェア企業を勝ち組にする ソフトウェア開発者が持つべき価値観と ⾼品質なコードを⽣み出すための実⽤的な プラクティスを提⽰するアジャイル実践書 他⼈に推薦するため キャッチフレーズを考え てみよう なぜ⾃分にとって
良書だと感じるの かを⾔語化
イテレーション4: 輪読会を⾏う
輪読会 • 複数⼈で同じ本を読み、集まっ て発表や意⾒交換を⾏う • 持ち回りで発表者を決め、発表 者は1〜2章の内容を資料にまと めて発表を⾏う • 感想の共有や意⾒交換、ディス
カッションを⾏う
発表者のメリット •⼈前で発表することを意識するため、本への 向き合い⽅がより真剣になる •⼈に説明できるレベルになるまで内容理解を 深めることができる •⾔語化、資料化するアウトプットプロセスに よって記憶に定着する
参加者のメリット •⼀⼈で読んでいる時には思いもよらなかった 視点など、新たな気づきが得られる •他の参加者が持っている知識を活⽤して 疑問点を解消することができる •チームでの議論を通して理解を深めることが できる
まとめ
技術書を読む技術 • 良い技術書は何度も読んでようやく⾎⾁とな るまで理解することができる • 著者が提⽰する命題とその解決を正しく解釈 し⾃分なりに咀嚼することで、実務で活⽤で きるようになる • 何度も繰り返し読むことで記憶の定着効果も
期待できる(cf.エビングハウスの忘却曲線)
(参考)My Favorite Books https://book.mynavi.jp/ec/products/detail/id=134252 https://www.sbcr.jp/product/4797347784/ https://www.oreilly.co.jp/books/9784873118864/
参考⽂献 • M.J.アドラー・C.V.ドーレン(1978)『本を読む本』⽇本ブリ タニカ(⽂庫版『本を読む本』講談社学術⽂庫) • David Scott Bernstein(2019)『レガシーコードからの脱却− ソフトウェアの寿命を延ばし価値を⾼める9つのプラクティ ス』オライリー・ジャパン
• 齋藤孝(2003)『三⾊ボールペン情報活⽤術』⾓川書店
Happy Reading!