虎の穴ラボ技術ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

もしも転生してWebアプリエンジニアになったら?インフラエンジニアの新たな挑戦

こんにちは、虎の穴ラボの原です。 本記事は虎の穴ラボ2024年夏の連載ブログ 16日目の記事です。 次回はH.Kさんによる「なにを勉強するのか、目標から考えよう」が投稿される予定です。ご期待ください!

4週目のテーマは「エンジニアの学習法」についてです!

私は、2022年の10月に入社して一年半以上が経ちました。この間、インフラエンジニアとして社内の情報システムの依頼や障害対応、新規プロジェクトのインフラ担当に携わりました。 この度、2024年4月からチームを異動し、Webアプリケーションエンジニアに転向しました。 そこで4月から本日までの間で、どうやってWebアプリケーション開発に必要な知識を勉強してきたのかご紹介します。

この記事の目的

誰に

Webアプリケーションエンジニアへの転向を考えているインフラエンジニア

なんと言ってほしいか

転向にあたってどんな勉強法があるのか知れた!

なぜWebアプリケーションエンジニアに転向した?

私は、新卒で入社した会社から前職までBtoBやCtoCのSaaSやWebサービスを提供している会社で、SRE(Site Reliability Engineering)に関する業務をメインとしたインフラエンジニアとして経験を積んできました。

その中で「よりクリエイターが広く活躍する機会を与えられるWebサービスを提供している会社で働きたい」と考えるようになり、ご縁もあって虎の穴ラボにインフラエンジニアとして入社しました。

その後、虎の穴ラボのインフラエンジニアとして、主にとらのあな通販のサービスインフラ面の業務や、社内の情報システムの業務に携わっていく中で「もっとクリエイターやそのファンにより近いところ、直接的に価値提供ができる業務がしたい!」と考えるようになり、上長などと相談を続けて今年の4月からWebアプリケーションエンジニアとして業務をする運びとなりました。

そもそもWebアプリケーションエンジニアに転向する時のスキル状況は?

この記事で、「私がWebアプリケーションエンジニアに転向するにあったって、どんな勉強法で何を勉強したのか。」を説明する前に、転向時点で私にどのような経験があるのかを整理する必要があります。 なぜなら、「このブログを参考にして、勉強したけどうまくいかない…」というのを減らしたいためです。

この記事を参考にするにあたっての注意点は、「私はコードを全く書いたことがないところからWebアプリケーションエンジニアに転向したわけではない。ある程度のソフトウェア開発技術や経験はすでに持っていた。」ということです。

私のソフトウェア開発の経験は下記のとおりです。

  • 情報科学の研究科出身
  • 6年ほどWebアプリケーションの運用及びインフラの自動化プログラムの開発・保守を担当(主にPythonとGoとシェルスクリプト)
  • 計算機科学の古典であるSICPを読了
  • 2010年ごろに、Rails3系でRailsチュートリアルを途中までやる(途中で挫折)
  • 2020年ごろに、Rails6系でRailsチュートリアルを一周完了

このとおり「プログラミング未経験からWebアプリケーションエンジニアに転向」というわけではありません。そのため、この記事を参考にするにあたっては、上記の前提は意識していただけると助かります。

どんな勉強方法?

プログラミングの経験は長い一方で、Ruby及びRailsは少ししか触っていなかったため、下記の方法を使って学習しました。

  • 異動が決まってからすぐに、Rubyのチェリー本を購入して時間をかけて一読した。
  • 研修課題と業務で発生した問題点や疑問は、GitHub Copilotへの質問やRailsのポケットリファレンス本を引いて解決した。
  • RubyやRailsの細かい仕様は、公式リファレンスから情報を得た。

始めに、Rubyのチェリー本を選んだのは、RailsはRubyの言語仕様上に実装されていて、業務としてRailsを使いこなすには、Rubyを深く知る必要があると判断したためです。 他にもいくつかのRubyに関する技術書がありますが、この本は実際の業務(Railsを含む)の時どのように使えそうか書かれているため選びました。 実際、業務にかなり役立っています。特にシンボルや、クラス・モジュールについての解説がとても役立っていると感じています。

gihyo.jp

次に、研修課題や業務で発生した疑問点は、ほぼGitHub Copilotへの質問で解決しています。 特にエラーが発生した時に役立っています。エラー内容は読めばなんとか分かるのですが、Railsの知識がまだ乏しく、エラー内容から解決に導くのが難しいためです。 この時に、GitHub Copilotに質問することでスムーズに解決できる場面が多くありました。すぐに質問できる体験がとても素晴らしかったです。 また、Railsの実装で「これのどちらがRails的にスタンダートだろう?」と考えた時にも、GitHub Copilotに質問することで解決できたと思います。 他にRailsのポケットリファレンス本も使っています。これは、「GitHub Copilotが言ってることがわからん。キーワードごとに解説が引ける本が欲しい。」ということで購入しました。 これにより、GitHub Copilotが言っていることだけではなく、ネット上の解説記事や既存コードのリーディングがスムーズにできていると感じています。

gihyo.jp

RubyやRailsの細かい仕様は、言うに及ばないですが公式リファレンスから情報を得ました。 RubyやRailsは、他の言語やフレームワークに比べてネット上に情報が多い一方で、やはりその情報だけを信じるのではなく、公式リファレンスと見比べて内容を理解した上で使うことが大切だからです。

付け加えて、プロジェクト進行についても学びました。 ガントチャートやバーンダウンチャートといったプロジェクト管理手法も重要な一方で、私は関係者との調整といったコミュニケーションの取り方について学んでいます。 なぜなら、関係者(ステークホルダー)が多いプロジェクトでは、「彼らをどう管理して、誰に相談するのが良いか?誰がどのようにこのプロジェクトに関わっているか?」を整理することが重要だからです。 具体的な例として、最も重要な関係者には定期的にプロジェクトの状態を報告する体制を作ることは、プロジェクトの信頼性の観点でとても重要になります。

これらのように、私は技術的な面とプロジェクト進行の面で、本や公式リファレンスだけではなく、AI技術であるGitHub Copilotも使ってスキルアップを進めています。

どんなことを学んだ?

Webアプリケーションエンジニアとして成長するために、Ruby・Rails・プロジェクト進行について学び続けています。

Ruby

2010年ごろに、Railsチュートリアルを実施する際にRubyの基本的な文法を勉強していました。 その上で、今回の転向にあたってRubyのチェリー本を読み、主にRubyの下記の項目についてキャッチアップしています。

  • 特異メソッド・特異クラスの動作
  • シンボルを使ったメソッド実行
  • クラスおよびモジュール
  • メソッドの可視性

過去にSICPを読了していたため、Rubyの言語仕様を知るにあたって、SICPで紹介されているクロージャーや環境モデルの知識が役に立ちました。

Rails

実際に業務としてRailsのコードを書いていく中で、個人的なRailsチュートリアルの範囲以上に、下記のことを学びました。

  • 実際の業務として開発するためのフローやチームとして守るべきルールについて
  • 性能やフェイルセーフを考えたRubyのコードの設計と実装について
  • Railsを使ったWebアプリケーション開発で頻出のパターン

Railsでよく使われるパターンは多くあり、今後も継続してキャッチアップしていきます。

プロジェクト進行

一人で開発するときはあまり意識することがないような、チーム開発におけるプロジェクトの進行や管理について学びました。

  • タスクの分割方法について
  • タスクの見積り時間と実績時間の管理について
  • 進行についての説明責任と質問責任
  • ステークホルダーとの調整について
  • 不具合や障害発生時の連絡経路について

この中で、最も重要だと感じたのは「プロジェクトに関する質問責任と説明責任」をきちんと果たすことです。過去の会社でも、この重要性を学んできましたが、虎の穴ラボに入ってからはこれをさらに意識するようになりました。

今後どうなっていきたいか?

クリエイターやそのファンをサポートするWebサービスに精通した、エンジニアになっていきたいと考えています。

また、技術的なスキルだけではなくマネジメントのスキルにも興味があります。チームとして課題を解決することの重要性は、働き始めてから常に経験してきました。そのため、技術的な面だけではなく、クリエイターやファンに役立つWebサービスを提供し続けられるチームをどのように運営していくのか興味を持っています。そのため、チーム運営に関するスキルも磨いていこうと考えています。

採用情報

虎の穴ラボでは一緒に働く仲間を募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧ください。
toranoana-lab.co.jp