SlideShare a Scribd company logo
1 of 58
Download to read offline
リーダブル
リーダブルコード

   2012年7⽉6⽇
      ⾓征典
 kdmsnr@gmail.com


        1/58
御礼
2012年7⽉5⽇10:47KOUKeikokeiko@oreilly.co.jpWrote:


     2週間⾜らずで4刷というのはすごい
   スピードです。




                          2/58
Ebook版は秋ごろ予定




     3/58
お詫び




 4/58
⾃⼰紹介



 @kdmsnr

   5/58
⾃⼰紹介訳書(1/2)
Martin Fowler's Bliki (2003)
    ↓
『アジャイルレトロスペクティブズ』 (2007)
    ↓
スクラムガイド (2010)
    ↓
『メタプログラミングRuby』 (2010)
    ↓
『ウェブオペレーション』 (2011)
    ↓
『Facebookマーケティング』 (2011)
    ↓

                6/58
⾃⼰紹介訳書(2/2)
   ↓
『Clean Coder』 (2012)
   ↓
『リーダブルコード』 (2012) ←【イマココ】
   ↓
『Service Design Patterns』 (2012)
   ↓
『Seven Databases in Seven Weeks』 (2012)
   ↓
『Running Lean』 (2012)
   ↓
『...』(2012?)

                   7/58
TheArtof
ReadableCode




      8/58
『リーダブルコード』
     これはもう「翻訳放棄」と⾔ってもよ
   いレベルですねぇ。⾮道過ぎます。

http://twitter.com/ytaniike/status/211060068035207170

                 違うよ。全然違うよ。




                         9/58
リーダブルコードの理由
  タイトルは、あえて『 リーダブルコー
ド』にした。これは「リーダブルコード 」
という聞きなれない⾔葉にすることで、読
んだ⼈に「リーダブルコード 」というもの
について注意して欲しいからだ。

http://www.clear-code.com/blog/2012/6/11.html


                     10/58
続リーダブルコードの理由
   「リファクタリング 」という⾔葉を使
 っていて、「コードをよくすること」がよ
 り当たり前になっている。それと同じよ
 うに、読みやすいコードを⾒たら「リーダ
 ブルでいいね!」ということが⾃然に⾔わ
 れるようになるといい。

 http://www.clear-code.com/blog/2012/6/11.html

                      11/58
名前重要
      リーダブルコードは本のタイトルで勝
    ちだよなぁ。(中略)どんなコード⽬指し
    てるかすぐわかるし。

http://twitter.com/chiastolite/status/219793852087808003
           誰だか知らないけどありがとう!!!!



                          12/58
じゃあ、どんなコード?
  リーダブルコードの基本定理

  コードは他の⼈が最短時間で理解でき
るように書かなければいけない。(p.3)




          13/58
ハァ?なんで?
「コードのよさは重要だ」は危うい前提

  読むに耐えないコードが⼤⾦を稼いで
いる場⾯を散々⽬にしてきたので、商業的
に成功したり、広く活⽤されたりするう
えで、コードの品質が必要だとも、それさ
えあれば⼗分だとも思えないからだ。

    『実装パターン』KentBeck
           14/58
でもやるんだよ!
 ……誇りの持てない仕事で無駄にする
時聞はない。よいコードを書くこと⾃体が
喜びであり、そのコードを他の⼈が理解し
、評価し、使⽤し、拡張してくれれば、さ
らに喜びは増す。

    『実装パターン』KentBeck


           15/58
2章名前に情報を詰め込む



      16/58
名前をつけるのは難しい
 簡単に誤解・誤読されちゃう!

  変数の名前を決定する際には、最初の
⼦供の名前を決めるときと同じくらいの配
慮が必要なのです(JimCope)

   『CleanCode』RobertC.Martin



               17/58
本章のアドバイス
明確で具体的な単語を選ぶ
汎⽤的な名前は避ける
単位や情報を名前に追加する
スコープの⼤きさを考慮する
フォーマット規約を使う

       18/58
最も基本的なこと
  式は⾃分で⾳読するつもりで書こう。

『プログラミング作法』BrianKernighan,RobPike


  発⾳可能な名前を使⽤する。

     『CleanCode』RobertC.Martin


                 19/58
retval(何て読むの?)
     汎⽤的な名前を避ける(p.12)

var eulidean_norm = function(v) {
    var retval = 0.0;
    for (var i = 0; i  v.length; i += 1) {
        retval += v[i] * v[i];
    }
    return Math.sqrt(retval);
}


                    20/58
[ネタ]詠太2で⾳読する
http://www.justsystems.com/jp/products/ichitaro/feature6.html

            ※Windowsじゃないと動きません。




                           21/58
読み⼿のことを考える
  相⼿を意識したときに、よい⽂章が⽣
まれるように、よいプログラムも読み⼿を
意識したときに⽣まれる。

    『実装パターン』KentBeck




           22/58
とは⾔っても、難しいよ



     23/58
5章コメントすべきこと



     24/58
必要なことはコードに書く
  私はだらしのないプログラマなので、
⾃分が担当したコードが、どのように書か
れていたのかまったく覚えていません 。…
…私は常に、覚えておくべき情報をコード
内に書き込んでおくことにしているので、
わざわざ覚える必要がないのです。

   『リファクタリング』MartinFowler

             25/58
コードがドキュメントだ
  ※写真はイメージです。




       26/58
でも、ないものは⾒えない
コミットする前のコード
使わなかった選択肢
却下された要望や提案
これからやること


       27/58
監督コメンタリー
       p.60
映画DVDの特典のように
説明・思い・裏話をコメントに書く
うまくいかなかったことも書く
疑問を先回りして埋めておく

        28/58
理由重要
  ⼈に何かを頼み事をするときには理由
を添えた⽅が成功しやすくなる

『影響⼒の武器[第⼆版]―なぜ、⼈は動かされるのか』




            29/58
理由は何でもいいらしい
◯すみません……急いでいるので、
先にコピーをとらせてくれませんか
?
×すみません……先にコピーをとら
せてくれませんか?
『影響⼒の武器[第⼆版]―なぜ、⼈は動かされるのか』



            30/58
「なんとなく」が⼀番困る
「どうしてこうなってるんですか?」
「なにがですか」
「ここのコードが」
「ああ、なんとなくですよ」
「えっ」
「えっ」
「……」
「……」




            31/58
こじつけでも、つじつまが
合えばそれにこしたことは
    ない!!


     32/58
思考の断⽚を刻む場所
(コードではないかもだけど……)
コミットの情報
 須藤先⽣の「解説」も参考に
 チケット駆動開発(Ref,Fix,Close)

ドキュメント
 ReVIEW(ステマ)
 http://github.com/kmuto/review
 Sphinx
               33/58
たいせつなTODO.md
  多くのデベロッパは、この種の観察作
業のために簡単なtodoリストを作って
いる。

 『テスト駆動JavaScript』ChristianJohansen




                 34/58
TODO.mdの例
# 商品関連
* 在庫のトランザクション。楽観的ロックでいいの?

#   管理画⾯
*   Admin::ApplicationControllerにBasic認証
*   Twitter Bootstrap使うかもしれない
*   ■ Deviseのカスタマイズ → できたけど微妙

# 画像リサイズ
* ■ RMagicでやる → できた!



                     35/58
ドキュメント読まれないし
それでも「ポステルの法則」を参考に

  受信するものには寛容に、送信するも
のには慎重に

 http://ja.wikipedia.org/wiki/ジョン・ポステル




                  36/58
12章コードに
 思いを込める



   37/58
アインシュタインの⾔葉
       p.158

  おばあちゃんがわかるように説明でき
なければ、本当に理解したとは⾔えない。




         38/58
テディベアやアヒルちゃん
    に説明してみる(p.165)




『プログラミング作法』や『達⼈プログラマ』にも記述がある

             39/58
説明内容をコメントに書く
      (すごく⼿続き的だけど)
# originalディレクトリのhtmlファイルから

# code.literalの要素を削除する
# (ってか、Nokogiriの使い⽅わからねえ)

# それから、ファイルをテキスト形式に置き換えて

# ワード数を数える



               40/58
その下にコードを書く
# originalディレクトリのhtmlファイルから
Dir.glob(original/*.html).each do |html|
  doc = Nokogiri.HTML open(html)
  # code.literalの要素を削除する
  # (ってか、Nokogiriの使い⽅わからねえ)→できた
  doc.search(//code[@class='literal]).remove
  # それから、ファイルをテキスト形式に置き換えて
  text = doc.css(body).text
  # ワード数を数える
  wc = text.split.size
end


                    41/58
整形する
def count_word_in_html_files
  word_count = 0
  Dir.glob(original/*.html).each do |html|
    doc = Nokogiri.HTML open(html)
    doc.search(//code[@class='literal]).remo
    text = doc.css(body).text
    word_count = text.split.size
  end
  return word_count
end



                    42/58
説明とコードを可逆に
あまり⼤きなリファクタリングはしない

  読む側の少し上を⾏くのはよいが、あ
まり複雑すぎると、相⼿にされなくなって
しまう。

    『実装パターン』KentBeck



           43/58
例:本体のないif⽂
              p.159
//   権限があるのは、以下の2つ
//   1) 管理者
//   2) ⽂書の所有者(⽂書がある場合)
//   その他は、権限がない。




                44/58
例:本体のないif⽂
            p.159
// 権限を確認する
if (is_admin_request()) {
    // 1) 管理者は権限あり
} else if (...) {
    // 2) ⽂書の所有者は権限あり(⽂書がある場合)
} else {
    // その他は、権限がない。
   return not_authorized();
}


              45/58
⾃分の思いを込める前に
  その分野ですでにどんなことが解明さ
れているかを調べてみなければならない。
さもないと、優れた⼿法がすでに存在す
るのに、⾃⼰流の下⼿なやり⽅を考案する
のに時間を無駄にするはめになるからだ。

『プログラミング作法』BrianKernighan,RobPike


                 46/58
例えば、どういうふうに?



     47/58
13章短いコードを書く



     48/58
APIをぜんぶ読む
                     p.172

    yugui:Javaを覚えるとき『プログラミ
  ング⾔語Java』を読んで、それからリファ
  レンスマニュアルを頭から全部読みまし
  た。

http://www.atmarkit.co.jp/news/200907/24/ruby2.html


                        49/58
不要な要求を削除する
              p.168

  DOorDONOT.ThereisnoTRY.
やるか、やらぬかじゃ。試しなどいらん。

ヨーダの⾔葉(『CleanCoder』RobertC.Martin)




                 50/58
[余談]試しにやってみる
  「試しにやってみる」は前向きな感じ
がする。でも、それで何か「できた」ので
あれば、それまで⼒を温存していたことに
なる。

   『CleanCoder』RobertC.Martin



                51/58
あれ?
  だんだん
コードの話から
 離れてきた




   52/58
名著を読もう!
  p.218




   53/58
リーダブルコード
もよろしくお願いします。




     54/58
ぼくのかんがえた
 さいきょうの
リーダブルコード


   55/58
やり⽅
1. みんなでコードについて話し合う
2. 須藤先⽣の「ぼくならこう書く」
3. 質疑応答
   ※これを3ラウンド繰り返します。




          56/58
お題
0.   github.com/dproject21/yaruo_tdd_triangle
1.   github.com/mataki/fast_spork_runner
2.   github.com/randym/axlsx
3.   github.com/todesking/okura

          ※「0」のお題でやり⽅を説明します。




                      57/58
ENJOY!!




   58/58

More Related Content

What's hot

継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキングTakayuki Kondou
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji Kubota
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Hitoshi Kurokawa
 
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Taku Miyakawa
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsUchio Kondo
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjugYuji Kubota
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々torutk
 
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみたレビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみたTakhisa Hirokawa
 
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入Hiroki Tamiya
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp CodereadingHiro Yoshioka
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウchancelab
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳Uchio Kondo
 
Xilinx SDSoC(2016.3)解体新書ソフトウェア編
Xilinx SDSoC(2016.3)解体新書ソフトウェア編Xilinx SDSoC(2016.3)解体新書ソフトウェア編
Xilinx SDSoC(2016.3)解体新書ソフトウェア編Mr. Vengineer
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係yy yank
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 

What's hot (20)

継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
 
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
 
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみたレビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみた
 
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳
 
Xilinx SDSoC(2016.3)解体新書ソフトウェア編
Xilinx SDSoC(2016.3)解体新書ソフトウェア編Xilinx SDSoC(2016.3)解体新書ソフトウェア編
Xilinx SDSoC(2016.3)解体新書ソフトウェア編
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 

Viewers also liked

闇深めだったサービスのスタイルガイド作成までの真実
闇深めだったサービスのスタイルガイド作成までの真実闇深めだったサービスのスタイルガイド作成までの真実
闇深めだったサービスのスタイルガイド作成までの真実Yuriko Okabe
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話Shohei Okada
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
スタートアップの失敗を90%減らす10のポイント
スタートアップの失敗を90%減らす10のポイントスタートアップの失敗を90%減らす10のポイント
スタートアップの失敗を90%減らす10のポイントMasa Tadokoro
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
 
エンジニアのための経営学
エンジニアのための経営学エンジニアのための経営学
エンジニアのための経営学Michitaka Yumoto
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道nishio
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 

Viewers also liked (10)

闇深めだったサービスのスタイルガイド作成までの真実
闇深めだったサービスのスタイルガイド作成までの真実闇深めだったサービスのスタイルガイド作成までの真実
闇深めだったサービスのスタイルガイド作成までの真実
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
 
とにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたいとにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたい
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
スタートアップの失敗を90%減らす10のポイント
スタートアップの失敗を90%減らす10のポイントスタートアップの失敗を90%減らす10のポイント
スタートアップの失敗を90%減らす10のポイント
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
エンジニアのための経営学
エンジニアのための経営学エンジニアのための経営学
エンジニアのための経営学
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 

Similar to 20120706-readablecode

触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみるasa88
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Hiro Yoshioka
 
Blenderソースコードリーディング
BlenderソースコードリーディングBlenderソースコードリーディング
BlenderソースコードリーディングTetsuo Mitsuda
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
201207 ssmjp
201207 ssmjp201207 ssmjp
201207 ssmjpth0x0472
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxKouhei Maeda
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方Shigenori Sagawa
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Hiro Yoshioka
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理Kouji Matsui
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49shoma h
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011Takako Miyagawa
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践LINE Corporation
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Shinnosuke Tokuda
 
TokuDB試してみる
TokuDB試してみるTokuDB試してみる
TokuDB試してみるyoku0825
 

Similar to 20120706-readablecode (20)

触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
 
Blenderソースコードリーディング
BlenderソースコードリーディングBlenderソースコードリーディング
Blenderソースコードリーディング
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
201207 ssmjp
201207 ssmjp201207 ssmjp
201207 ssmjp
 
Goodby Hatena, hello Sphinx
Goodby Hatena, hello SphinxGoodby Hatena, hello Sphinx
Goodby Hatena, hello Sphinx
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
 
TokuDB試してみる
TokuDB試してみるTokuDB試してみる
TokuDB試してみる
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
 

More from Masanori Kado

優れた研究提案書の書き方
優れた研究提案書の書き方優れた研究提案書の書き方
優れた研究提案書の書き方Masanori Kado
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方Masanori Kado
 
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestTokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestMasanori Kado
 
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」Masanori Kado
 
Tokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & PrototypeTokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & PrototypeMasanori Kado
 
Tokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team BuildingTokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team BuildingMasanori Kado
 
プロトタイピングとユーザーテスト
プロトタイピングとユーザーテストプロトタイピングとユーザーテスト
プロトタイピングとユーザーテストMasanori Kado
 
実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)Masanori Kado
 
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)Masanori Kado
 
データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)Masanori Kado
 
データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)Masanori Kado
 
20160924 edp-b teambuilding
20160924 edp-b teambuilding20160924 edp-b teambuilding
20160924 edp-b teambuildingMasanori Kado
 
中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室Masanori Kado
 
hacku-titech-2016-briefing
hacku-titech-2016-briefinghacku-titech-2016-briefing
hacku-titech-2016-briefingMasanori Kado
 
The Lego Scrum Awakens
The Lego Scrum AwakensThe Lego Scrum Awakens
The Lego Scrum AwakensMasanori Kado
 
デザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイクデザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイクMasanori Kado
 
アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学Masanori Kado
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案Masanori Kado
 
改善の型 コーチングの型
改善の型 コーチングの型改善の型 コーチングの型
改善の型 コーチングの型Masanori Kado
 

More from Masanori Kado (20)

優れた研究提案書の書き方
優れた研究提案書の書き方優れた研究提案書の書き方
優れた研究提案書の書き方
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方
 
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestTokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
 
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
 
Tokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & PrototypeTokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & Prototype
 
Tokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team BuildingTokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team Building
 
プロトタイピングとユーザーテスト
プロトタイピングとユーザーテストプロトタイピングとユーザーテスト
プロトタイピングとユーザーテスト
 
実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)
 
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
 
データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)
 
データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)
 
20160924 edp-b teambuilding
20160924 edp-b teambuilding20160924 edp-b teambuilding
20160924 edp-b teambuilding
 
中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室
 
hacku-titech-2016-briefing
hacku-titech-2016-briefinghacku-titech-2016-briefing
hacku-titech-2016-briefing
 
ideathon 20160325
ideathon 20160325ideathon 20160325
ideathon 20160325
 
The Lego Scrum Awakens
The Lego Scrum AwakensThe Lego Scrum Awakens
The Lego Scrum Awakens
 
デザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイクデザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイク
 
アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
改善の型 コーチングの型
改善の型 コーチングの型改善の型 コーチングの型
改善の型 コーチングの型
 

Recently uploaded

2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 

Recently uploaded (12)

2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 

20120706-readablecode