プログラミングの学び方(8) – どの言語から学び始めるのがいいのか?
いざ、プログラミングを始めるとき、どの言語から学び始めればいいのか?考えこんでしまう人もいるだろう。
今回は、実際にプログラミング言語をどのように取捨選択すればいいのか?についてお伝えする。
はじめに、プログラミングで何を実現したいか?から逆算する
プログラミング言語を新たに学ぶときは、「何を実現したいか」から逆算するのが一番の近道だと思う。
例えば、
- WordPressを使って、サーバーサイドのカスタマイズを行いたい
→PHPを学習する。 - フロントエンドを柔軟にカスタマイズできるようにしたい
→Javascriptを学習する。将来的にはReactやVue.jsも学習する。 - IoT(インターネットとモノの融合)のため、ドローンに埋め込む処理を開発したい
→C#を学習する。 - 傾向分析や機械学習を行い、未来予測を行いたい
→PythonやR言語を学習する。
といった形で、目的によって学ぶべき言語は変わってくる。
実は、他にも選定時の条件がある。
エンジニアとして、プログラミング言語を実際に選んだ際の体験談
実は、私は学生時代に情報工学やプログラミングを専攻しなかった人間だ。学生時代に学んだのはExcelのマクロくらいでしかない。
一応、最初に入社した技術者の派遣会社では、Javaを3か月ほど研修で学んだが、それほど多くの勉強を積んだわけではない。
そのような私が、どうやって複数の言語を学んだのか?体験談をお伝えしようと思う。
データセンター内の課題解決
最初に、プログラミングを駆使したのは、最初に入った会社から前職の会社に紹介予定派遣で正社員になりたてのころだ。
その時、データセンターの運用でいくつか大きな課題があったが、その中でも直近に解決したいと思ったのが、
「HDD容量のチェックを、目視確認から脱却したい」
という課題だった。
現実として、
- 500台近いサーバのHDD容量を曜日ごとにふるい分けし、夜勤者が毎日50台以上サーバにリモート接続してHDD容量チェックをしていた
- 調べた結果を記帳し、日勤者に引き継いでいた
- 日勤者は、ある一定の閾値を越えたサーバのHDDを確保していた
- サーバの新規追加や解約の際、監視リスト(紙)に追記していた
といった運用を実施していた。その結果、
- サーバの新規追加や解約時に、監視リスト(紙)への反映漏れがしばしば発生した。その結果、HDD容量の監視漏れが発生し、システムが止まったことがあった。
- サーバOS(Windows / Linux)ごとに接続方法や認証情報(ユーザー名、パスワード)が異なるため、非常に手間のかかる作業だった。
ということがわかってきた。
では、実際にどうやって解決したのか?
課題の整理と解決の道筋の策定
まず、プログラミングを始める前に、どのような情報処理が課題解決になるかを検討した。
- 毎日HDD容量をチェックしないと、システムダウンにつながる恐れがある
→毎日のHDD容量を集計し、保存できるデータベースが必要だ。
→データベースに接続しやすいプログラミング言語が望ましい。 - 毎日集計したHDD容量を、レポート化し運用担当者に知らせてあげる必要がある。
→レポート化が容易なプログラミング言語が望ましい。
→メールの送信が容易なプログラミング言語もまた望ましい。 - サーバにリモート接続して、HDD容量を取得する必要がある。
→Windows / Linux問わず、リモート接続が容易なプログラミング言語が望ましい。 - 万一開発者の自分が辞めてしまったり病気になったとき、社内の他の人でも保守できる体制を作る必要がある。
→社内で頻繁に使われているプログラミング言語が望ましい。
といった感じで、学ぶプログラミング言語をあれこれ、というのではなく、現場の課題と解決の筋道に応じた言語選定を行った。
その結果・・・
前職との秘密保持契約(NDA)の絡みもあるので、これ以上の詳細はお伝え出来ないが、開発したこのシステムによって5年以上データセンターの運用が軽減されたのは事実だ。
言語選定に関しても、4を除いてはほぼ達成できたので、少なくとも失敗ではなかったと自負している。
最初のうちは、PHPがいいのかも・・・
ただ、上記の例はあくまで一例でしかなく、読者の皆さんがおかれた状況と異なるケースの方が圧倒的に多いだろう。
だからこそ、これから先エンジニアとして稼いでいくには、
「仕事でプログラミングを使って何を実現したいのか?」
という視点が非常に重要だ。
そして、その点ある程度のことを簡単に実現できるプログラミング言語の1つが、PHPだと私は思っている。
実際に、
これだけの有名なサイトがPHPで実現できているし、
- プログラミングしやすいフレームワークが数多くある(CakePHP / Laravel / Symfony)
- PHPベースのシェアが高いオープンソースが多い(WordPress / EC-CUBE)
- composerを使って容易に拡張機能(ライブラリ)の導入が可能
- WindowsやLinux、MacとあらゆるOSに対応し、それぞれ親和性が高い
- 軽量で使いやすい開発環境(IDE)であるVisual Studio Code(VS Code)と親和性が高い
- バックグラウンド処理も実装できる
と、PythonやRubyの様な他の言語と比較しても遜色ない特徴を有している。
一方、スマホアプリの開発は出来ないといっても過言ではないので、もしスマホアプリを開発するのであればJavaやFlutterを勉強すると良いだろう。
本気でエンジニアを目指すのであれば、プログラミングの登竜門として、PHPを勉強するのはありだと思う。