いつでも発展途上

猫と珈琲とゲームが大好きなシャチ。ITエンジニアらしいです。メモ代わりにいろいろ書いています。

新しいプログラミング言語を覚えるときにしていること

この記事は エムスリーキャリア アドベントカレンダー の4日目です。ハードルを下げていく所存です。

1. オフィシャルサイトを見る

オフィシャルサイトにはその言語の制作者がもっとも伝えたいことが書かれており、情報の鮮度も良いため、あれこれググるより効率的なことがしばしばあります。

だいたい英語ですが、最近は非ネイティブに配慮したやさしい英語を用いているサイトが多く助かります。日本語翻訳がある場合は、感謝のあまり錐揉みジャンプしつつ利用させてもらいます。

そのプログラミング言語が生まれた経緯や、設計思想なども読んでおくと、あとあと役立ちます。その言語の本来の用途から大幅に外れたコードを書くと、将来の誰か(自分ふくむ)が泣くことになるでしょう…

2. 言語処理系を手元のマシンで使えるようにする

オフィシャルサイトからそのプログラミング言語の処理系をダウンロードしてきて、手元のマシンで Hello World します。

3. プロダクトコードを読む

  • 3-1. 業務で扱う対象となるコードが目の前にあれば、まずはそれを読みます
  • 3-2. その言語で書かれた有名なプロダクトのコードが Github 等で公開されていれば、それを読みます

例: Ruby ですと tDiary とか昔はよく読んでました。いまは Mastodon をたまに。

できれば 3-1. だけでなく 3-2. もやっておくと、その言語でのだいたいのお作法なんかがわかります。気合の入った人や C/C++ のわかる人は、言語自体のソースコードとかも読むと楽しいかもしれないです。

4. 自分でなにか作る

これが一番大事です。とにかく自分で手を動かしてなんか作ります。大切なことは ハードルを上げすぎない ことです…!

あまり大きなプログラムですと挫折するので、私は だじゃれ bot の移植をよくしています。これはテキストファイルからだじゃれを読み込んでランダムに抽出し、SNS に投稿するというシンプルなものですが、覚えたい言語でこれを移植することにより以下のことがわかります。

  • 言語機能の調べ方(疑似乱数はどう生成するの?とか)
  • File I/O のやり方
  • ライブラリの探し方、使い方
  • デバッグのやり方、エラーメッセージの見方
  • その言語の雰囲気(アバウトですが、意外に大事)

手を動かすと、ささいなことで悩みます。オフィシャルのチュートリアル(あれば)を読むなり、ググりまくるなり、人に聞きまくるなりでどうにか動作までもっていければ、しめたものです。

例: Scala に移植してみた

5. 継続的に情報を収集する

イベントや勉強会に参加する、SNS でタグやエバンジェリストを追う、著名プロダクトの更新やニュースをチェックする、同僚に聞く、などなど。


他にも、こんなことをやると良いよ、自分はこうやっているよ、などがあればぜひコメントで教えてください。