1


http://www.kerneldesign.info/wiki/image/method/2005_6_23/h001.PNG

  • 昔、どこかの雑誌の記事で"米国の平均的なプログラマーが把握できるソースコードの量は1万行だ"というのを読んだことがあります。どういう方法で出した値なのか不明ですが、ともかくプログラマーが把握できるソースコードの量は記憶力に強く依存するのではないか、っと思いました。つまり、あまり記憶力に依存しないような方法でソースコードを読めるなら、いくらでもソースコードは読めるのではないかと、そう考えたわけです。
  • 大学生の時、Javaで書かれた通信関係のソースコードを読みました。2万行くらいだったと思います。A3の紙に小さい字でプリントアウトし、ソースコードを読み、分かったことを小さな文字で書き加えていきました。これだと、後でソースコードを読んだとき"ココはこういう機能だったな"と思い出せるので安心して忘れることが出来ました。そうしたこともあって、記憶力の悪い私でも何とか2万行のコードを読むことができました。無論、もっとスマートなやり方はあったのではないかとは思いますが、この経験から"記憶力に強く依存しないソースコードの読み方を見つければ、個人が読むことができるソースコードの量を飛躍的に増やすことができる"と確信しました。
  • 近年、多くのソフトウェアのソースコードが公開されていますが、そのほとんどは1万行を軽く超えているようなものばかりです。「読みたい→規模がでかい→自分では無理だ」このような状況が出来上がっているように感じます。しかし工夫次第で、天才でなくともこうしたソースコードを読めると私は確信しています。その私なりの工夫、つまりひらメソッドを紹介します。

2


http://www.kerneldesign.info/wiki/image/method/2005_6_23/h002.PNG

  • 発想は極めて単純です。
  • hoge1()という関数を読みたい場合、
    • hoge1()関数はhoge2()関数を呼び出し、
    • hoge2()関数はhoge3()関数を呼び出し、
    • hoge3()関数は他の関数を呼び出していない。
  • このモデルを題材に、説明を行います。

3


http://www.kerneldesign.info/wiki/image/method/2005_6_23/h003.PNG

  • hoge1()関数からhoge3()関数へと読み進めるトップダウンのアプローチでhoge1()関数を読もうとすると、知らない関数が続々と登場する
    • これによりトップダウンで読んでいると途中で知らない関数の登場により思考がブツと切断されます
  • このようなトップダウンのアプローチは個人的には、
    • 疲れる
    • 段々とソースコードを読むのが嫌になる
    • 楽しくない
  • 例えば、Linuxの起動時に呼び出されるstart_kernel()などは50個ほど初期化関数がズラーと記述されており、その1つ1つが数十の関数を呼び出します。
    • start_kernel()関数を読み終えるのに恐らく数百の関数を読まなければならないことを考えると、このトップダウンのアプローチだと難しいのではないかと思います。

4


http://www.kerneldesign.info/wiki/image/method/2005_6_23/h004.PNG

  • 発想を切り替え、hoge3()関数からhoge1()関数へと読み進めるボトムアップのアプローチをとる場合、知っている関数しか登場しない
  • このようなボトムアップのアプローチは個人的には、
    • 淡々と読み進めることができる
    • 疲れない
    • 楽しい
  • 先ほど、トップダウンのアプローチで読むのが難しいのではないかと指摘したstart_kernel()関数もボトムアップのアプローチで(2005/6/23現在)半分ほど読むことに成功しています


  • このようにボトムアップに関数を読んでいくアプローチがひらメソッドの根底にある考え方のひとつです。






トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-03-29 (土) 08:53:00 (1271d)