質問: Java、JavaScript、JQuery、PHP辺りを勉強しているのですが、APIリファレンスの使い方がわかりません。 自分が実装してみたい機能があったとして、APIリファレンスでどうやってそれを見つけたらよいのでしょうか? あと例えば、JavaのArraylistの部分を見たのですが、よくわかりませんでした。説明が難しいのですが、どうやったら理解できたり、実装の仕方がわかるのでしょうか? 質問の説明も合っているのかよくわかりませんが、教えてください。よろしくお願い致します。
回答: こんにちは。 unauさんの「APIリファレンスは手段なので、作りたいものを作り始めたら、自然とAPIリファレンスを読むので慣れるはず」というアプローチと、dsuzukiさんの挙げられている、「逆引き」本の実装例から、APIリファレンスを参照して理解を深めるという方法、いずれも効果的だと思います。 私の提案として、これら加えて、もう二点ほど挙げます。 **1.入門書ではない書籍に挑戦する。** Javaであれば、具体的には * プログラミング言語 Java 第4版 * EFFECTIVE JAVA 第2版 といったあたりです。 ただし、これらは、APIリファレンスに書いてある内容の理解度を深めてくれることになるとは思いますが、Javaである程度、実践を積んでからのほうがよいかもしれません。 なお、上記で実践というのは、「開発に使える時間を決められて、ある機能要件を満たすものを作らないといけないという、差し迫った状況」を意味しています。 **2.欲しいAPIリファレンスに早くたどり着くために英語力を高める。** ご質問の中には、おそらく 「何か目的を果たすプログラムを作ろうとして、そのために必要なクラスやメソッドが分からないから、そもそもAPIリファレンスのどこを見たらよいかも分からない」 という問題も含まれているものと思います。それはどうやったら解消されるか(あるいは、自己解決する力がつけられるか)について、メソッドとクラスの順に以下、書きます。 まず、メソッド名については、たくさんプログラムを書いているうちに、類推できるようになります。何かを取得するメソッドだったら、getやfindから始まってその後欲しいものが英語になっているメソッドがないか探してみればよいかと思います。逆にいうと、一度使ってみたメソッドの名前に意識を向けて、次に、同じような機能のメソッドが必要になったときにそれを類推できるように、普段から心がけておくとよいでしょう。値を取得するメソッドはたいていgetで始まりますが、findもあれば、fetchも使われますし、retrieveなんてのも使われる。これらのように、同じ「取得する」でも複数の動詞があり、これらの微妙なニュアンスの違いも意識して自分のものにしておけば、APIリファレンスを「こういうメソッド、ないかな?」という調べ方であたるときに、欲しいメソッドに早くたどり着けるようになります。 次にクラスですが、これは例を挙げます。 たとえば今、複素数を使うプログラムをJAVAで書きたいとしましょう。 今これを書いている時点で、実はこの私も、複素数クラスを誰かが既に書いているとは思うけど、誰が作っていて、どこからダウンロードしたらいいのか、APIドキュメントがどこにあるのかわかりません。 そのときはまんまGoogleで検索してしまいます。複素数は英語で、complexですから 「complex java api」 あたりでググります。 すると、(ラッキーなことに)一番上に Complex (Apache Commons Math 3.6.1 API) が出てくるので、Apache commonsのライブラリを入手して、このComplexのJavaDOCを読めば、おそらくほとんどやりたいことは解決できるのではないでしょうか。 上記で、メソッド名を推定するにしても、自分の欲しい機能を提供してくれるクラスの名前で検索するにしても、上記の例でいえば、「複素数」と言われて、「complex」がすぐ思いつくかで、正解にたどり着くスピードが変わってきますので、英語に慣れるのが効果的という結論になるのですが、分からない単語も和英辞典で調べることを習慣にしていけばよいと思います。 たとえば、何かの製品の受発注システムを作るときに「注文」というクラスを書く場面があったときに、「注文」の英訳が分からないからといって、和英辞典で引く手間を惜しんで、ローマ字まんまの public class Chuumon なんていうクラスを書くのはダメで、和英辞典で調べてちゃんと public class Order というクラス名にするとかです。そういう細かいところで差がつくと思います。 以上、ご参考になれば幸いです。