もっと効率的にプログラミング言語を学ぶための4つのオプション

Yoshifumi Shiiba
7 min readAug 13, 2015

--

これは「効率的にプログラミング言語を学ぶための4つのステップ」の追加の選択肢だ。

プログラミングを学ぶために必須ではないが、あればより良い効果を生み出すはずのスキルだ。本質的な、プログラム自体の学習に先んじでとりかかる必要はないが、余裕が生まれたら取り組むべきだろう。あるいは、学習をつづけるうちに自然と身につくのではないか。

1. 英語の読み書き

最もプライオリティが高い。学習のステージが進めばこれは例外なく必須のスキルになる。

プログラミングは英語圏の文化だ。プログラム自体も英語の影響を強く受けているが、コミュニティにおけるコミュニケーションも英語で行うのが普通だ。

iOS向けのドキュメントであれ、AWSのドキュメントであれ、それは英語で記述されている。そして一部のものがオフィシャルに日本語に翻訳されたり、コミュニティがアンオフィシャルに翻訳したりする。これらのリソースを参照することで日本語を用いて学習や開発を行うことは可能だが、翻訳というタスクがはさまるぶんスピードは落ちる。

日本語のみでの学習では最先端にいることはできなくなるはずだ。すでに広まり、枯れた技術を学ぶのは日本語でも十分である場合が多いが、モダンな技術を学ぶ際には英語を読むことは必ず必要になる。

コミュニティに質問をしたり、何かをパブリッシュする際には英語を書くタイミングも多々ある。これも重要だ。英語の壁のせいで受動的な学習に終始してしまうプログラマは多いように感じる。

2. UNIX系 — POSIX — OSを使う

よっぽどのガジェットオタクかベンチャー企業に務めているのでもなければ、あなたが使っているPCはWindowsマシンだろう。もしそうなら悪いニュースだ。デバイス向けの組込ソフトウェアやDirect Xなど、特定の領域での開発を行うのでなければそのOSではないOSを使うほうが、より容易なプログラマ人生を歩めるだろう。

伝統的にオープンソース・ソフトウェアの世界ではPOSIXと呼ばれるUNIX互換環境で開発する。有用なツール群がPOSIX環境であれば容易に使用・移植ができるため、いまだにプログラマの使用するコンピュータはPOSIXであることが多い。とくにPOSIXのシェルはプログラミングを続けるならいつかは必要になる必須のものだが、初めてなら慣れ親しむために少し時間がかかってしまう。可能なら最初から扱っておくほうがずっと効率がいい。

POSIXとはMac OS X, Linux, BSDなどなどだ。現状、容易に手にはいり使いやすいMacがプログラマに使用されることが多い。宗教上の理由でMacを使えないのであれば、手持ちのWindowsマシンにUbuntuなどのLinuxディストリビューションを入れるのが容易だろう。

Windowsを捨てるというのは、宗教や信条によるものではなく現実的な対応だ。ほんとうだ。Git、Atomやnodeにしろ、モダンな開発ツールやプログラミング言語が序盤に移植の困難さからWindowsを無視するということはとてもよくあることだ。ほとんどの場合時間がたてば解決策が提示されるし、そうでなければWindows上にUNIX互換環境を構築できるアプリケーションソフトウェアもあるので、やれないわけではない。が、そこまでして使う価値がWindowsにあるとは思えない。

繰り返しになるが、特定の領域のプログラミングにおいてはWindowsマシンであるほうが効率が良いことも多々ある。自身のケースに従って考えよう。

3. エディタを選ぶ

ひとつ先に言っておくが、VimよりEmacsだとかそういう話がしたいわけじゃない。

ひとくくりにテキストエディタといっても、プログラマにとっての有用性に関して大きな差がある。プログラミングをするのなら、プログラミング専用に作られたエディタを使うべきだ。

学習コストはかかるが、エディタとはプログラミングというタスクを行うための直接的で唯一のツールだ。こだわって選択し、自分の書きやすいようにカスタマイズするというのは意味のある大事な作業だ。

特別な思い入れがあるならVimやEmacs、そうでもないのなら、AtomやSublimeを使うのが良いだろう。学習が容易だ。特にAtomに関してはGitHubの開発であるという点もあり、将来性も加味するに選択肢として大きな強さがあるだろう。

プログラマ向けのエディタなら、ショートカットキーを活用することでキーボードから手を離さなくても開発が進められるようになっているはずだ。ないなら付けたそう。それを活用すること。ショートカットキーを恐れずに活用することで、開発効率は劇的に向上するはずだ。

4. 学習するプログラミング言語を選ぶ

流行を読むことや目的に合わせたプログラミング言語を選択することはとても大事なことだ。多様なプログラミング言語はそれぞれに特長を持っている。

どの言語を選ぶべきかという選択は完全にケースバイケースだ。とりあえずプログラムが書きたいだけならPythonは強くおすすめできる。WebアプリケーションがつくりたいならJavaScriptと追加できるならRubyだろうか。

様々な言語たち

Pythonは誕生の歴史的経緯からも教育用のプログラミング言語並みの習得のしやすさを持っている。日本ではあまり採用されない言語かもしれない。うちの会社ではよく使う。

Rubyは開発者が日本人であることもあり、日本のコミュニティがとても大きく、日本語で学習しやすいだろう。それを差し引いてもRailsの台頭によって新規のWebアプリケーションに採用されることはとても多い。

JavaScriptはそれを最初に学ぶことを強くはすすめづらい難解な思想を持った言語だが、nodeとの組み合わせで様々な場面で使われる。最も将来性のある言語だと断言できる。

Javaはうんざりするシンタックスとクラス群の学習が必要で静的型付け言語だが、最もよく使われる言語のひとつだ。Androidの開発も行える。

CやC++も適用範囲が広く、かなり広範に使われている。知っていて損はないし、他の命令形言語の学習におおいに役立つだろう。ただ、学習は他の言語に比べて少々骨が折れるかもしれない。

様々な言語を学ぶこと

1つの言語に無意味に固執しているさまは、プログラマがとりうる最も見苦しい行為の1つだろう。

1つの言語を極めることは素晴らしいことで、そういった言語を持つべきだと思う。だがそれをするためには、その言語の優れた点を比較的な観点から確認することが必要なはずだ。動的な型付けの言語の利点を学ぶためには、静的な型付けの言語を知っていなければいけない。並列化可能な美しい関数記述を、それができない言語を知らずに褒め称えることはできないだろう。また上位的な機能、マクロやミックスインを活用することを知らずに、それのない言語の良さを語ることなど出来ないはずだ。

たとえば、IoやLuaを学びプロトタイプベースのオブジェクト指向言語について知ることは、JavaScriptを深く理解する助けになるだろう。LispをやらずにRubyの設計思想を理解することも難しいのではないだろうか。

たくさんの言語を学ぼう。

P.S.

Mediumに最初の学習に関するポストをした時、上記の点は記載したいリストにのぼったが、議論がある点として省いていた。英語に関しては、英語ネイティブな文化圏のおごりだという議論があったり、根強いWindows信奉者もたくさんいる。エディタや言語は言わずもがなだろう。

物事を単純な良し悪しで判断できることなどそう多くはないはずだ。ぼくはベンチャーでソフトウェア開発を仕切りながらコードを書いているが、ぼくのような外的要因を持った人間にとっては、上記のようなスタンスは正であると信じられる。ただ、そうでない場合においてすべてが正であるとはならない。重要なのは自分の置かれた状況に応じて、現実的で適切な学習を行うことだ。

--

--