【エンジニア】公式ドキュとかソースコードの読み方
-----------------------------------------------------------------------------
【とにかくソースコードを読むコツだけ知りたい人】
(↑【簡単】他人が書いたソースコードの読み方【プログラマー初心者必見】のサイトに飛びます)
【ツール・ノウハウ、粒度細かめ】
-----------------------------------------------------------------------------
【コードにも公式ドキュにも言えそうなので、引用】
幸か不幸か Apache HTTP Server のソースコードを読むことになったことを想定
(初心者にそんなシナリオあるか、とも思うが、あるかもしれないw)
1.読む前に、読む目的を定めておく。
目的もなく httpd 本体のコードを展開して読み始めたところで、
「なーんかいっぱいファイルあるなー、いっぱいコードかいてるなー」
と死んだ魚の眼でテキストを延々スクロールするだけで終わってしまう。
なにを知りたくてそのコードを探索するのか。ゴールをはっきりさせておく。
「すべてを知りたいから写経のために全部読んで書くよ」
…無茶ですが、まぁ本気でそう考えているならそれも目的といえる。
2.読む前に、それが何をするものなのか理解しておく。
ApacheがWebサーバであることは、知っている人も多いかもしれないが
じゃあWebサーバってそもそもなにするのか?とか、
もうちょっと潜ってApache のモジュールってどうやって設定しているか?とか、
外部仕様を正確に理解していることは、そのコードを読む上で非常に役に立つ。
-----------------------------------------------------------------------------
【ソースコードリーディング】
内容的にはかなり重複があると思うので、個人的な読みやすさとか手のつけやすさ順に並べた。
(とても個人的な見解であり、精査されたものではない。理解度やその時の状況に応じて変更する予定)
体系的なまとめ(コードリーディングについての考え方、定義とか)
参考2:ソースコードの追い方、読み方の方法やコツをまとめておく
ノウハウ・ハウツー(手続き的知識系)のまとめ(コツとか)
参考1:【簡単】他人が書いたソースコードの読み方【プログラマー初心者必見】
参考2:【すぐに使える】ソースコードの読み方【効率読む6つのコツ】
-----------------------------------------------------------------------------
【公式ドキュメントの読み方】
公式ドキュメントはその特性上、「どうしたら読めるのか」、「(良い)読み方」など(手続き的知識)についての言及が少ないように感じた。そのため、うまく分類できなかったので、おおまかに「公式ドキュとは何か」系、「読むと何がよいのか、なぜ読むのか(読まなくてはいけないのか)」系、「なぜ読めないのか」系でまとめてみた。
(コードリーディングもそうだがそれ以上に、これらの区別はあいまいでグラデーションになっていたり、重複があったりするので、随時整理していきたい)
「公式ドキュとは何か」系
参考1:フリーランスエンジニアは「公式ドキュメント」で信頼を得よう
参考2:【プログラミング】「公式ドキュメント」は読むべきなのか?
「読むと何がよいのか、なぜ読むのか(読まなくてはいけないのか)」系
参考1:[重要]プログラマーが公式ドキュメントを読むと起きること
参考2:【プログラミング学習】 公式ドキュメントが読めた方が良い理由
参考??:33:公式ドキュメントを読もう(できたら苦労しない;)
「なぜ読めないのか」系(読み方やコツっぽいのはこれかも)
参考1:公式ドキュメントの読み方
番外「読める人へ~読めない人からのお願い、あるいは読めない人(自分)のあるある~」
-----------------------------------------------------------------------------
【公式ドキュまとめ】
参考1:プログラミング言語の公式ドキュメントの読み方・楽しみ方(入門)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
個人的に思ったこと(思っていたこと)
こうゆう内容は、宣言的知識や手続き的知識、知(識)とは何か、「読む」とは、「知る」とは、「分かる」とは、「できる」とはなどに関わってくる。ちまたにあふれる、「知っていること」と「分かること」と「できること」は、違う、とかいう(あまり好きでもないし、賛同もできない)話もついてくる。
もっというと、知識(あるいは認識)と行為(あるいは行動)の区別、さらに言うと認識論と存在論とか、表現論、記号論とか、「成る」と「為す」の区別、とかともかかわっているように思える。
数学、物理学、理学、工学、経済学、社会学などアカデミック、学門界隈でも、研究的な側面、示唆的な側面、などの区別が散見される。科学と技術という区分にもなんらかの関わりがあるだろう(多分)。
ましてや、記述したことが、一意な命令(ひいては処理機構の実際の挙動)に対応しているようなプログラミング言語は、なおのことこうした点がいろんな混乱を招いているように思う。
大風呂敷を広げすぎて、収集もつかないし、ためにも参考にもなるようなことは全くないが、なんとなく、「何を表現しているのか」、「何で表現するのか」、という点を軸に考え方を整理できたら良いな、と考えている。