Vol.0|Linuxを極めたいと思ったら、なぜかJavaが楽しくなっていた話
キャリアチェンジの動機
私はもともとインフラエンジニアとして、サーバーやネットワークの運用保守を長年担当してきました。
ある時、「もっと技術力を高めたい」と思い、真剣に学び始めたのが Linux です。
Linuxを極めたくて、カーネルの世界へ
きっかけは、OpenStack の運用経験 でした。
OpenStack を構成する技術(Namespace、KVM、Open vSwitchなど)に触れる中で、
「IaaSって、結局Linuxの仕組みの上に成り立ってるんだな」
と気づき、
「じゃあLinuxを極めよう」 と考えるようになりました。
さらにその中で、
「Linuxの仕組みを本当に理解するには、カーネルのソースコードを読めるようにならなきゃ…」
という考えに至ります。
カーネルの壁:C言語が読めない…
Linuxカーネルのソースは C言語 で書かれています。
いざ読もうと試みたものの、
「全然読めない……そもそもC言語の構文すら危うい」
という現実に直面。
レベルを下げる決断。そしてスクリプト言語へ
そこから私はこう考えました。
「いきなりC言語は無理でも、もっと簡単な言語から始めればいいのでは?」
まずは学習コストの低いスクリプト言語から始めて、
プログラミングの基礎体力をつけよう と決意します。
インフラ自動化の世界とPython
同時期に、構成管理ツール(Ansibleなど)やクラウド環境の自動化スクリプトを学んでいる中で、
Python によく出会いました。
- 「あれ?インフラ自動化って、Pythonのライブラリでいろいろできるじゃん」
- 「インフラエンジニアだって、コード読めないとダメな時代かも…」
こうして、
「インフラ屋こそプログラミングが必要」 という認識が強まりました。
LAMP環境構築とPHPとの出会い
「どうせやるなら、Linux上にLAMP環境を構築してWebアプリも勉強しちゃおう」
という流れで、PHP による Web プログラミング に着手します。
簡単なブログやECサイトを作ってみるものの――
ほとんどが「写経」で終わり、なかなか自信には繋がりませんでした。
ある人のひと言で、Javaへシフト
悩んでいた時、ある知人からこう言われました。
「オブジェクト指向やらんと、本当の意味でプログラミング分かったとは言えないよ」
PHPでコードは書けるようになってきたけど、
「設計」や「構造化された開発」には不安がある…
そう感じていた自分には、その言葉がズシンと響きました。
そして現在:JavaとStruts2で開発中
- 「じゃあ、オブジェクト指向言語を学ぼう」
- 「せっかくだからWebアプリを作るのにフレームワークも触ってみよう」
こうしてたどり着いたのが、Java × Struts2 という選択でした。
最初は不安だらけでしたが、今では
画面遷移・セッション管理・MVC構成など、やればやるほど楽しいと感じています。
Linuxを極めたいと思って始めた旅は、
いつしか 「アプリ開発って楽しい!」 という実感に変わっていました。
まとめ:回り道だらけ。でも、全部が今につながっている
- Linuxカーネルを理解したくてC言語を目指した
- プログラミングの入口としてスクリプト言語を学んだ
- インフラ自動化でPythonにも触れた
- でも結局、Javaでアプリ作るのが楽しくなっていた
そういう回り道の末、今では Struts2で掲示板アプリを開発中 です。
遠回りに見えるけど、実は全部つながっていた――
そんな経験を、これからシリーズで記事にしていきます。