SlideShare a Scribd company logo
1 of 40
Download to read offline
リーダブルコードを 
読み解こう 
3章 誤解されない名前 
須藤功平 
株式会社クリアコード 
schoo 
2014/12/9 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
質問(1) 
プログラミングについて 
✓A:未経験 
✓B:学習中(schooや学校、独学など) 
C:趣味・仕事でたまに書く 
(趣味でWebサイトを作っている、職業がデザイナーなど) 
✓ 
D:趣味・仕事でバリバリ書く 
(趣味でOSSを開発している、職業がエンジニアなど) 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
質問(2) 
リーダブルコード(本)を… 
✓A:読んだ 
✓B:読んでいる 
✓C:まだ読んでいない 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
内容 
✓自己紹介 
✓リーダブルコードとは 
✓実例で考えよう 
✓実際の改善にチャレンジ! 
✓まとめ 
✓質疑応答 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
自己紹介(1) 
リーダブルコードの 
「解説」の著者 
http://www.clear-code.com/blog/2012/6/11.html 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
自己紹介(2) 
クリアコードの代表取締役 
「クリア」な(意図が明確な) 
「コード」を大事にする 
ソフトウェア開発会社 
✓ 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
自己紹介(3) 
毎日コードを書いている 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
リーダブルコードとは(1) 
本書の目的は、君のコードを 
よくすることだ 
[「はじめに p. x」より引用] 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
リーダブルコードとは(2) 
その中心となるのは、コード 
は理解しやすくなければいけな 
いという考えだ 
[「はじめに p. x」より引用] 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
リーダブルコードとは(3) 
「コードを理解する」という 
のは、変更を加えたりバグを見 
つけたりできるという意味 
[「1.2 読みやすさの基本定理 p. 3」より引用] 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
リーダブルコード 
✓変更できるコード 
✓バグを見つけられるコード 
↓ 
読む人視点! 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
何をしているコード? 
Node* node = list->head; 
if (node == NULL) return; 
while (node->next != NULL) { 
Print(node->data); 
node = node->next; 
} if (node != NULL) Print(node->data); 
「優れた」コードって何? p. 2より 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
何をしているコード? 
for (Node* node = list->head; 
node != NULL; 
node = node->next) 
Print(node->data); 
「優れた」コードって何? p. 2より 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
どちらがリーダブル? 
// どちらがリーダブルコード?どうして? 
// リーダブルコード:変更できる・バグを見つけられるコード 
// A. 
Node* node = list->head; 
if (node == NULL) return; 
while (node->next != NULL) { 
Print(node->data); 
node = node->next; 
}i 
f (node != NULL) Print(node->data); 
// B. 
for (Node* node = list->head; node != NULL; node = node->next) 
Print(node->data); 
「優れた」コードって何? p. 2より 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
実例で考えよう 
3章「誤解されない名前」 
より 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.1 例:filter()(1) 
results = 
Database.all_objects.filter("year <= 2011") 
resultsはなに? 
✓2011年以前のレコード? 
✓2012年以降のレコード? 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.1 例:filter()(2) 
filterはあいまいな言葉 
✓選択する→select() 
✓除外する→exclude() 
✓ 
select("year <= 2011") 
exclude("year <= 2011") 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
番外1:sort()(1) 
どっちの名前がよい? 
✓sort() 
✓quick_sort()/merge_sort() 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
番外1:sort()(2) 
ソートすることが重要 
✓sort() 
✓ 
ソート方法が重要 
✓quick_sort()/merge_sort() 
✓ 
ヒント:抽象化・カプセル化 
(abstraction barrier, abstraction layer) 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.2 例:Clip()(1) 
# textの最後を切り落として、 
# 「...」をつける 
def Clip(text, length): 
✓最後からlength文字を削除する? 
✓最大length文字まで切り詰める? 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.2 例:Clip()(2) 
切り詰めるなら:Clip→Truncate 
def Clip(text, length): 
# ↓ 
def Truncate(text, length): 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.2 例:Clip()(3) 
最大length文字なら:maxをつける 
def Truncate(text, length): 
# ↓ 
def Truncate(text, max_length): 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.2 例:Clip()(4) 
最大length文字なら: 
length→chars 
def Truncate(text, max_length): 
# ↓ 
def Truncate(text, max_chars): 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
番外2:add()(1) 
どの名前がよい? 
✓add() 
✓append()/prepend() 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
番外2:add()(2) 
追加することが重要 
例:集合に追加するとき 
✓add() 
✓ 
追加する場所が重要 
例:リストに追加するとき 
✓append()/prepend() 
✓ 
ヒント:抽象化・カプセル化 
(abstraction barrier, abstraction layer) 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.3 限界値(1) 
ショッピングカートに入る商品が 
最大10点のケース 
CART_TOO_BIG_LIMIT = 10 
if cart.num_items() >= CART_TOO_BIG_LIMIT: 
Error("カートにある商品数が多すぎます。") 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.3 限界値(2) 
バグあり! 
9点までしか入らない 
CART_TOO_BIG_LIMIT = 10 
if cart.num_items() >= CART_TOO_BIG_LIMIT: 
Error("カートにある商品数が多すぎます。") 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.3 限界値(3) 
CART_TOO_BIG_LIMITはあいまい 
✓未満?以下?→境界値の情報がない 
✓ 
MAX_ITEMS_IN_CARTは明確 
✓この値が最大値(境界値を含む) 
最大値のときはmaxを使おう! 
(最小値のときはmin) 
✓ 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
3.3 限界値(4) 
# CART_TOO_BIG_LIMIT = 10 
# if cart.num_items() >= CART_TOO_BIG_LIMIT: 
# Error("カートにある商品数が多すぎます。") 
MAX_ITEMS_IN_CART = 10 
if cart.num_items() > MAX_ITEMS_IN_CART: 
Error("カートにある商品数が多すぎます。") 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
他の例 
範囲を指定するときは 
firstとlastを使う 
✓ 
包含/排他的範囲には 
beginとendを使う 
✓ 
✓… 
✓(詳細は本を買ってください) 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
実際の改善にチャレンジ! 
/* schooの学生名一覧を返す 
引数は返す学生名の最大値 */ 
function student($num) { 
/* 処理の具体的な内容 */ 
} 
✓誤解されない名前に改善して投稿 
✓よい投稿に「いいね!」して応援 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
まとめ(1) 
リーダブルコードとは 
✓変更できるコード 
✓バグを見つけられるコード 
✓↑は読む人視点 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
まとめ(2) 
「誤解されない名前」を考えた 
filterはあいまい 
✓ 
✓→select/exclude 
Clipもあいまい 
✓→Truncate 
✓ 
TOO_BIG_LIMITもあいまい 
✓→MAX_ITEMS_IN_CART 
✓ 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
まとめ(3) 
実際の改善にチャレンジした 
「読む人が理解しやすいか?」を 
とことん考えたはず 
✓ 
✓ 
名前が「他の意味と間違えら 
れることはないだろうか?」と 
何度も自問自答する 
[「3章 誤解されない名前 p. 30」より引用] 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
これから(1) 
これからも読む人のことを 
考えてコードを書こう 
✓ 
読む人のことを考えるには? 
✓読む経験をたくさん積む 
✓たくさんコードを読もう 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
これから(2) 
たくさんコードを読むコツ 
✓コードから学ぶ気持ちで読む 
✓×悪いこと探し 
✓○いいこと探し 
本来、コードを読むことは 
楽しいことのはず! 
✓ 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
悪いコード 
見つけやすい 
✓異質 
✓リーダブルじゃない 
✓ 
過剰に指摘したくなる 
✓「マサカリを投げてみたい」 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
マサカリ投げたい症候群 
早めに卒業しましょう 
必要十分な事実伝達以外の 
否定的な情報を過剰に含む指摘 
必要十分な事実伝達がない場合もある 
必要十分な事実伝達: 
○○な理由で××ではなく△△だ 
本に書いているから、は理由になっていない 
✓ 
✓ 
↑は最近の「マサカリを投げる」の捉えられ方 
参考:元々のモヒカン・手斧の使われ方: 
http://www.otsune.com/diary/2005/06/14/4.html#200506144 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
よいコード 
見つけにくい 
✓リーダブルだから 
✓すーっと理解できてひっかからない 
✓ 
これからのチャレンジ 
✓意識して見つけよう! 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4
これから(3) 
「解説」を読む 
http://www.clear-code.com/blog/2012/6/11.html 
本文:個人で 
リーダブルコードを書く方法 
✓ 
解説:チームで 
リーダブルコードを書く方法 
✓ 
リーダブルコードを読み解こう - 3章 誤解されない名前Powered by Rabbit 2.1.4

More Related Content

What's hot

Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性Yamamoto Reki
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできることkamiyam .
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみToshihiro Nakamura
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡Shintaro Kurachi
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラムamusementcreators
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事Manabu Koga
 
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方Kouhei Sutou
 
今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発Kazunori Hamamoto
 
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼンゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン光晶 上原
 
第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」Hiromu Shioya
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよkumake
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26Yoshihisa Ozaki
 

What's hot (20)

IDEALIZE YOU
IDEALIZE YOUIDEALIZE YOU
IDEALIZE YOU
 
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできること
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
 
今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発
 
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼンゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン
 
第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26
 

Viewers also liked

リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめKouhei Sutou
 
実践リーダブルコードの概要
実践リーダブルコードの概要実践リーダブルコードの概要
実践リーダブルコードの概要Kouhei Sutou
 
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたリーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたTakumi Sato
 
The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)Ki Sung Bae
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Codeeddiehaber
 
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法Rico Sengan
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable CodeBaidu, Inc.
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleJérôme Petazzoni
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでKouhei Sutou
 
コーディング入門以前
コーディング入門以前コーディング入門以前
コーディング入門以前Yutaka Kinjyo
 
Javaコーディング勉強会
Javaコーディング勉強会Javaコーディング勉強会
Javaコーディング勉強会inatus
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みHiroshi Tokumaru
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索nobu_k
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツevol-ni
 
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Fujio Kojima
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツShunji Konishi
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょうなおき きしだ
 

Viewers also liked (20)

リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめ
 
実践リーダブルコードの概要
実践リーダブルコードの概要実践リーダブルコードの概要
実践リーダブルコードの概要
 
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたリーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめました
 
The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
 
The Art Of Readable Code.
The Art Of Readable Code.The Art Of Readable Code.
The Art Of Readable Code.
 
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable Code
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
Xp祭り2013
Xp祭り2013Xp祭り2013
Xp祭り2013
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
コーディング入門以前
コーディング入門以前コーディング入門以前
コーディング入門以前
 
Javaコーディング勉強会
Javaコーディング勉強会Javaコーディング勉強会
Javaコーディング勉強会
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツ
 
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
 

Similar to 名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう

よい名前を付けましょう リーダブルなんたらとか
よい名前を付けましょう   リーダブルなんたらとかよい名前を付けましょう   リーダブルなんたらとか
よい名前を付けましょう リーダブルなんたらとかよしだ あつし
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみたYoshihiko Shiraki
 
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりSEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりKouhei Sutou
 
リーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりリーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりKouhei Sutou
 
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクSEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクKouhei Sutou
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろTakuya Tsuchida
 
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編Yutaka Shimada
 
より良いコードを書くための名前付け
より良いコードを書くための名前付けより良いコードを書くための名前付け
より良いコードを書くための名前付けkoji kobayashi
 
Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Sho Shimauchi
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_QueryHidekazu Ishikawa
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだNarami Kiyokura
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえりKouhei Sutou
 
BlockSorting
BlockSortingBlockSorting
BlockSortingiuno
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)Tomoaki Uchida
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦うYugo Shimizu
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築伊藤 祐策
 
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクSEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクKouhei Sutou
 

Similar to 名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう (20)

よい名前を付けましょう リーダブルなんたらとか
よい名前を付けましょう   リーダブルなんたらとかよい名前を付けましょう   リーダブルなんたらとか
よい名前を付けましょう リーダブルなんたらとか
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりSEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
 
リーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりリーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえり
 
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクSEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
 
より良いコードを書くための名前付け
より良いコードを書くための名前付けより良いコードを書くための名前付け
より良いコードを書くための名前付け
 
Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4
 
Sql learning
Sql learningSql learning
Sql learning
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり
 
BlockSorting
BlockSortingBlockSorting
BlockSorting
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦う
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築
 
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクSEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 

名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう