この記事は セゾン情報システムズ Advent Calendar 2021 21日目の記事です。
はじめに
自分のやりたいことを細分化する
Googleの完全一致検索を使う
とりあえずドットをつけてみる
とりあえず英語で検索してみる
デベロッパーツール、WireShark、IDEのデバッグ実行などのツールを使ってみる
まとめ
はじめに
自分のITエンジニアとしてのキャリアもいよいよ二年目が終わりそうになってきていますが、ありがたいことにすごいと本気で思えるエンジニアの方たちと働く機会に恵まれた日々を過ごせております。
そのような方たちを見ているとその人が何もかもを知っているように自分には見えたことが幾度かありました。
ただ実際にそういう方たちと働いてみて知識量もすごいですが調べることに関してとてもうまく、その調べる力のうまさゆえにその人が何もかも知っていると感じてしまう部分もあるのではないかと感じました。
現に自分が一緒に働いている方で初めて触れる技術(と本人は少なくとも言っている)もすぐにキャッチアップして実務で使いこなしているような方もいます。
このようなことを通じて技術の知識をつけることもそうですが、調べる技術を高めることも大事だと感じましたのでここに自分がエンジニアリングに関わっている際に何かを調べる時に考えたり試みていることをまとめていきます。
自分のやりたいことを細分化する
こちらの記事にも書きましたがブラックジャックを作るうえでもいきなり「ブラックジャック 作り方」と調べることも可能です。
しかしその場合ですとサンプルコードは出てくるかもしれませんがそれらの詳細について知ることができずに応用もきかせにくいかもしれません。
「SQLite Rust」等要件を細かくしてそれらについて調べた方が自分が成し遂げたいことに関することに必要なステップ一つ一つがイメージしやすくなりますしより解像度の高い検索が可能だと思います。
間接的でもやりたいことを実現できないか考える
Aというツールを用いてBを実現できないか調べる際に「A B 方法」等の直接的なワードで検索をかけたところそのような機能が調べても調べても見つからなかったとします。
この時点で
直接的にBを実現する機能はAにはなさそう
ということまでわかります。
しかし本当にAを用いてBの実現は不可能なのでしょうか?
例えばですがAには直接Bの実現機能はなくともそのツールがCは実現可能でありかつC→Bの実現は可能な場合A→Bと直接の実現はできずともA→C→Bとやることで間接的にA→Bを実現できます。
その場合はCをAから実現する方法を調べればよくなります。
Googleの完全一致検索を使う
ダブルクォーテーション("")で囲んだワードは検索で必ずヒットします。
調べる際自分のワードと若干ズレた結果になる時がありますがそのような時はこちらのやり方を使っています。
例えばですがエラーコードやメッセージで検索をかけた時に似ているが若干異なる結果が出てくる時があるのでそのような場合に該当メッセージやコード番号をダブルクォーテーションで囲むことで確実にヒットさせることができます。
とりあえずドットをつけてそれっぽい名前のメソッドを探してみる
Javaのコードの例になりますが例えばList型の変数のサイズを知りたい際.size()というメソッドを用いると取ることが可能ですが、このメソッドを知らない場合でもIntelliJ等のIDEですとその変数名にドットをつけるとそのクラスにあるメソッド一覧が出てくるのでその一覧を見るとsizeという名前を見つけることができるのでこれで実現できそうだなという推測が立ちます。
ArrayList<String> list = new ArrayList<>();
list.add("hoge");
list.add("hogehoge");
list.add("hogehogehoge");
//この時点で候補一覧が出てきてそこからメソッドを探してlist.size();と補完できる。
int listSize = list.
上記例ですとListの公式ドキュメントを読むでも済む話ですが他の方が書いたオリジナルのクラスをコード上で使う時に使えます。
そのクラスの実装を見に行くでも大丈夫ですがドットを用いる方が実装を意識せずに直感的に自分が実現したい振る舞いのメソッドを探すことができるのでオススメです。
加えてこれは自分の場合ですがこのようなやり方でメソッド探しをやっていると実際のコードの実装を意識せずにメソッドを探す側の感覚(?)を得られるのでクラス設計の際も直感的にわかりやすいメソッド名にしようという心構えが前よりできるようになったような気がします。
とりあえず英語で検索してみる
日本語で検索しても得られない情報が英語で検索するとあっさり得られることは結構あります。
最近はDeepL等便利な翻訳ツールも増えてきているので英語で検索する敷居は下がってきているのかなと感じています。
特にエラーの調査の時は英語での検索の方がよくヒットする印象があります。
あと稀にライブラリ自体のバグが原因でエラーが起きている場合もあるのでそのような場合は英語で検索をかけるとGithubのIssueが引っかかりライブラリのバージョンの問題であるとわかる場合もあります。
デベロッパーツール、WireShark、IDEのデバッグ実行などのツールを使ってみる
Webツールの開発時にデベロッパーツールのNetwork部分やWireShark等で通信経路を調べたりリクエストヘッダーの中身を見る等することで謎のエラーの原因が突き止められる時があります。
デバッグ実行でコードの動きを追ってみて、変数の中身を逐一チェックしていくことも有効です。
これらのツールの使い方の詳細に関してはググってみてください。
ググり力の特訓もかねてというオチをつけてみようとしましたが実際は書くのがめんどくさかっただけです。
まとめ
調べることというのは簡単なようでかなり難しいと思っておりますし奥が深いと思っています。
実際過去に自分も何時間も調べてわからなかったことが検索ワードの方向性を変えたらあっさり見つかったこともありました。
何かを調べる時はその検索ワードは本当に正しいのか?自分が本当に実現したいことは何なのかを考えながら調べると自分の調べたい情報の解像度が上がり得られる情報の質も上がるのではないかと思っております。
この記事が何かを調べる際の参考に少しでもなれば幸いです。