「APIって全部覚えるの?」というプログラミング初心者の疑問にちゃんと答える

プログラミング講師をやっていた時期あり、そのころ聞かれた疑問をちゃんと答えてみたくなったのでまとめました。プログラミングをこれから始めますという人向けです。

A.「APIを全部覚えようとしてはいけません」

理由を上げるとすると次の2つ。 - 全部覚えられるモノではないので、全部を覚えている人はいない - 実際に使うモノは限られるので、全部を覚えようとしてはいけない

まずそもそも全部覚えることは不可能です。数が信じられないぐらい多いからです。例えばJava SE 8のAPIリファレンス(こちら→http://docs.oracle.com/javase/jp/8/docs/api/)を見ていただければわかりますが、覚えようとすると途方に暮れるレベルです。クラス名だけでも無理でしょう。これがある期間でアップデートされたり追加されたりするので無理なはなしです。

それに、実際に使う範囲はかなり限られます。というより標準APIなどは相当広い範囲をカバーしたいという考えがあるためかなりの汎用性を持たせています。ただそれが、使う側にとってはどうしても関係ないAPIになります。毎日プログラミングをやっていても一生使いそうにないなというAPIが山ほどあります。また使う側の側も毎日プロジェクトを移り変わるなんてことがないので、そのプロジェクトで扱わなければやはり使わないAPIになっていきます。ということを考慮するとかなり限られた範囲しか使わないので、全部を覚える必要はないということになります。

どんなAPI(クラス・メソッド・関数など)があるのかをなんとなく把握して、実際に使う時には調べる

実際には、こういうかんじです。

「使う時には調べる」とサラッと書きましたが重要です。まずは公式のリファレンスをしっかり見られるようして、確認するクセをつけましょう。人の記憶は曖昧なので使ったことあるものでも自信が無ければ必ず調べるようにした方がいいでしょう。学校の学力テストをやっているわけではないので、わからなかったらその場で調べればいいのです。

書籍の解説書などもいくつか机においておきたいところです。公式リファレンスも慣れていないとわかりにくい場合などあるので、書籍やWebなんかも頼っていきましょう。ただし、書籍やWebなどは書かれている文脈が違って通用しなかったり、間違えもあったりするので公式のリファレンスや実際に動かしてみて確認はするようにするのが原則です(書籍やWebの内容が間違っていても責任はとってくれません)。

また、全く存在すら知らなければさすがに使えるようになることにはならないのでなんとなく把握する必要はあります。初心者であれば入門書に出てくるようなクラスはなんとなくおさえるところからスタートしましょう。経験を重ねるごとに把握するクラス数は増えるし、必要になりそうなクラスもわかってきます。暇なときにリファレンスをうろうろするのもオススメです。いろいろな発見があって面白いです(人によりますが)。さらに実際にサンプルなど動かしておくと記憶に残りやすくなります。経験を積み上げた人であればバージョンが上がったときにリリースノートなどを確認して変更点をしっかり把握しておきます。