8ヶ月かけてはじめての案件を完走した

8ヶ月かけてはじめての案件を完走した

長かった。

一つの案件をリリースするまでにこれほどの労力が必要になるのだと、エンジニアとして力がないことがこんなに恐ろしいものだと身を以て知った。

今の会社に転職した理由は大きく3つある。

  • サーバーサイドエンジニアとしてのキャリアをスタートしたい
  • モダンフレームワークを用いたJavaScriptの開発をやってみたい
  • 一つの案件に最初から携わってリリースをする過程を経験したい

今回の案件に携わることで上記の条件を全て達成することができた。

一つ目に、私はRubyエンジニアとしてのキャリアを始めることができた。

一番初めにRubyに触ったのは3年前のこと。
その頃はProgateというWebサービスを利用して学習していた。
その段階では基本文法も怪しいようなスキルレベルだったと思う。

最初の会社ではマークアップエンジニアとして働いていたのだが、働きながら夜間と休日を利用してTechCampというブートキャンプ形式のプログラミング学習スクールに通いRubyを学習した。
そして、そこの転職サポートの助けを借りて、現在の会社の転職したというのが大まかな経緯である。

Rubyは書きやすい初心者向け言語として知られている。
他の言語より、自然言語に近く、標準的に便利なメソッドを内包しており、他の言語では数行書かなければいけないような処理も一行で書くことができる。

また、開発者である、まつもとゆきひろさんの思想が強く反映されており、プログラミングを書くことの楽しさが最も優先されている言語だ。
そして、私もそこに強く共感し、大好きな言語である。

一方で、静的な型付けがない。
大人数での開発をする上ではそこがネックになってしまうことがある。

また、Ruby on Railsについても語りたい。
Railsは、なんといっても構想からプロトタイプを実装するまでの過程において力を発揮する。
一方で、MVCモデル、特にActiveRecordデザインパターンにおける、ModelがDBと密結合してビジネスロジックの実装を切り離せないというところに問題がある。

そのため、今回の案件では、Railsを使用しながらもSevice層の導入とVoデザインパターンの導入を試みた。

私はこの案件が始まるまではMVC以外のデザインパターンについて全く頓着していなかった。
というか、デザインパターンや設計ということについて知らなかった。

この歳で、この重要性に気づけたことは大きい。

住み分けとしては、ざっくりいうと、

  • Controller ・・・ Request/Response、パラメーターに関する処理
  • Model ・・・ DBに関する処理
  • Service ・・・ ビジネスロジックに関する処理

※ RailsAPIモードで開発したため、ViewはHTMLメールの実装以外には使用していない。

二つ目に、JavaScriptのモダンフレームワークとしてAngular4を使用した。

ReactやAngularについては転職する前に学習していたことがあったが、表面を舐めた程度の学習では実際の案件の中では全くの無意味だった。

前の会社でjQueryのみしか触っていなかったころは「JavaScript怖い」という気持ちがどこかにあったが、案件を完走した中で「調べればなんとかなるやろ」というレベルには達した。

これについてはTypeScriptが大きく寄与している。
TypeScriptによる静的な型付けの威力は本当に強力だ。

TypeScriptのコンパイルエラーを通じてJavaScriptへの理解を深められたし、Angularの基本設計を理解することができた。

最後に、一つの案件の最初の実装からリリースまでに携わることができた。

私は、なぜこれが重要だと思ったのか、と先ほどから思案に耽っている。

おそらく、最初の会社でお世話になった、私をフリーターから拾い上げていただいた、尊敬するエンジニアの方と喫茶店でお話しする機会を得られた時に、エンジニアが最も成長する機会の一つが、一つの案件の最初の実装からリリースまでに携わることだとおっしゃっているのを聞いて、ぜひ経験したいものだと考えるに至ったのだと思われる。

この8ヶ月は本当に地獄のような8ヶ月だった。
もう一度やれと言われても絶対にやらない。
エンジニアとして力がないことがこんなに恐ろしいものだと身を以て知った。

いまプログラミングを学習する、エンジニアとして成長したいと思う原動力の一つは間違いなくこの恐怖だと感じる。

自分のことを守ることができるのは自分しかいないが、力をつけるためには自分で努力する以外にないのだ。