はじめに
以前ツイートした内容を記事にしてみる。
ライブラリ習熟度のレベル分け(あくまで一例)
— QDくん@金融工学x機械学習 (@developer_quant) November 15, 2020
Lv1.サンプルの切り貼りでライブラリを呼び出せる
Lv2.自前コードでライブラリを呼び出せる
Lv3.ライブラリの一部を粗い指示に従い修正できる
Lv4.ライブラリの一部を自力で修正できる
Lv5.根本的に新しい機能を追加できる
Lv6.ライブラリ全体を設計できる https://t.co/ghlkeDgZC4
ライブラリ習熟度のレベル分け
上から下に行くにしたがって難しくなっていく。
学んでいく際には上から順番にできるようにしていくことを意識してみるとよい。
レベル1:サンプルの切り貼りでライブラリを呼び出せる
レベル2:自前コードでライブラリを呼び出せる
レベル3:ライブラリの一部を粗い指示に従い修正できる
レベル4:ライブラリの一部を自力で修正できる
レベル5:根本的に新しい機能を追加できる
レベル6:ライブラリ全体を設計できる
レベル1は初心者だが、他人の書いたコードを切り貼りすることで、動くコードを作れる、というもの。ライブラリを学ぶにはまずここからスタートするとよい。ライブラリにはたいてい、初めからサンプルコードやテストコードが一緒に付いてくるので、そのコードをうまくつなげて動くものを作る。これならライブラリの内部を詳しく学ぶ必要はない。
レベル2では、自分のコードでライブラリを呼び出せるようになる。これができるためには、自分が興味を持っている機能について、ある程度ライブラリの中のコードを自力で読めないといけない。しかしライブラリのコードを自分で修正するといったことはできない。
レベル3以降は、ライブラリの中を修正できるようになっていく。
まずレベル3では、詳しい人からざっくりとした指示をもらいながら、その通りにライブラリのコードを修正できるようになる。そのためには、ある程度広い範囲のコードを自力で読めないといけない。
レベル4では、何をどこに追加し、何をどういう感じに直すか、指示をもらわなくても自力でコードを修正できるようになる。ここまでくるとオープンソースのコミッターになっているイメージである。クラス継承の階層構造が頭に入っているだろう。というのも、どのようなクラスをどの階層に追加すればいいか自分で判断できている、ということだからだ。
レベル5では、今まではなかった新しい機能を自分でライブラリに追加できるようになる。こうなると、自分でクラス継承の階層構造をデザインすることができるようになっている。
レベル6では、ライブラリ全体を自分で設計できるようになる。時間さえ投入すれば、ゼロから自力でライブラリを作れるようになっている。
ライブラリをユーザーとして外から使うだけであれば、レベル2まででよいことになる。他の誰かが作ってくれた機能を呼び出すだけなので、内部のコードを自分で修正する必要はない。
一方で、ライブラリの中を修正したいとなると、レベル3以降まで進歩しないといけない。レベル3とレベル4の間には大きめの壁が存在する気がする。粗い指示であっても、修正する際の方針を教えてもらえれば、それを取っ掛かりにして的を得た調査ができる。しかし指示を全く受けられないとなると、どこから調べればよいかわからなくなる。
ライブラリの学習方法については、以下の記事を参照してほしい。