見出し画像

転職を機にGo言語へ挑戦。フラーサーバーサイドエンジニアの語るGo言語習得への道

フラーのデジタルノート

フラーではサーバーサイドの開発現場において、Go言語を使用しています。

今回は、Ruby on Railsでの開発経験を生かし、フラーに入って一からGo言語を習得したメンバーに話を聞きました。

——エンジニアとしてのキャリアを含め、簡単な自己紹介をお願いします。

小林:
サーバーサイドエンジニアの小林です。フラーには、今月で入ってちょうど一年になりました。

プログラミングを始めたのは、新卒でSIer系の会社に入ったときです。研修で一ヶ月ほどJavaを学びました。
しかし、その後に業務として担当した案件はシステム運用、監視や社内SE的な定常業務、パッケージシステムの導入支援などが主で、本格的な開発はできませんでした。

自分でコードを書いて開発をやりたいという気持ちがあったので、業務改善的なツールをPowerShellやGoogleAppScriptで自主的にちょこちょこ作ってはいたのですが、結局、「この会社にこのままいてもちゃんとした開発経験は積めないな」と思って、転職を考えることに。
独学で勉強を始め、スクールなどにも通ってRuby on Rails、JavaScript、HTML/CSS、Pythonあたりを学びました。

転職先では、いわゆるWeb系の開発を担当。AWSやRuby on Railsを使って、サイト全体の構築をしていました。

——フラーに入社したきっかけはなんですか?

小林:
フラーを知ったのは秋葉原駅の駅広告です。偶然にもフラー本社のある柏の葉に引っ越した頃のことで、「自分が今住んでいるところに良い感じのIT企業がある!」と驚きました。

そこから興味を持ってnote記事などを色々読んだところ、雰囲気がすごく良さそうで、技術的にも正直当時の会社よりもイケてそうだなと。特に「Goを使っている、イケてそう」みたいな印象もあったなと思います(笑)

また、当時の会社に勤めている中で、技術的なマンネリ感を覚えていたこともありました。

——フラーに入社するまで、Go言語は経験がありましたか?

小林:
いえ、ありません。業務でやったことがあるサーバーサイドの技術はRuby on Railsのみで、Goは知ってはいましたが触れたことはありませんでした。

自分がGo言語を学び始めたのは、フラーへの転職を目指したときからです。アピール材料として、やってみようかなと。Tour of Goをこなしたり簡単なWeb API作ってみたりして、基礎的なところを勉強しました。

それまでGo言語について「やりたい!」と積極的に思っていたわけではないのですが、「Goをやっていたらイケている」という雰囲気を個人的には感じていたので、ここで学んでみるのは良い機会だなと思って。新しいことをやるのも好きですし。

また、フロントエンドかバックエンドかで言えば、自分の性質としてはバックエンドが合っているかなとも思っています。

——フラーに入社してから、Go言語についてどのようなオンボーディングを受けましたか?

小林:
簡単なWeb APIを作成してみようという課題を用意してもらいました。内容としては、固定のデータを返すだけのAPIを作ってみるとか、登録と更新をできるようにするとか、データベースを使ってみるとか、そういったものです。期間は一ヶ月くらいだったかな?

進め方は、こういうリクエスト受けてこういうレスポンス返すように作ってください、程度のざっくりとした指定だけもらって、あとは自由にやっていいという形でした。なので、自分で色々とパッケージの使い方などを調べつつ進めていきました。

フラーのオンボーディングは「Goに慣れる」ための内容や量なのかなと思っていて、その目的はきちんと果たされていると感じます。どうしてもオンボーディングと現場での開発は違ってきてはしまうのですが、あらかじめこういった内容をこなしておいたおかげで、現場に入ったときに慌てずに済みました。

——オンボーディングにおけるサポート体制はいかがでしたか?

小林:
メンターとして付いてくださった方々の言語能力が高く、コメントが丁寧でとても助かりました。また、メンターにアサインされているわけではない他のメンバーの方々が、自主的に見てコメントをくれたのも嬉しかったです。

疑問点が出たときは毎日の進捗確認の時間で聞いて解決していましたが、そもそもあまりつまづくことはなかったですね。書き方はわかりやすい言語だと思います。

とはいえ勉強になったことも色々あって、例えば、恥ずかしながらそれまで意識していなかったレースコンディションの考慮についてご指摘いただいたことなどが印象に残っています。
過去のコメントとかを見る限り、もしかしたら同じ課題をやる全員が指摘されてきたことなのかな。

——他の言語と比べてどのような印象を持ちましたか

小林:
文法がわかりやすいですよね。
自分が今まで業務で扱ってきたのはRubyくらいですが、その経験があればGoで苦戦することはなかったです。

一方で、自分で書かなきゃいけない、決めないといけない部分が多いなあとは感じます。
例えば、ポインタにするか値にするか自分で決めなくちゃならなかったり、データベースの操作周りでRuby on Railsと比べると「え、自分で書くの?」と思うことがあったり。

ORMライブラリもありますが、フラーで標準的に使っているものはなくて、現状自分たちでSQL書くことが多いです。

——フラーにおけるGoの標準構成や、開発における特徴を教えてください

小林:
Webアプリケーションフレームワークとしては、Goaを使っています。GoaでWebAPIのインターフェイスを作り、内側は社内の既存プロジェクトを参考にしつつ自分たちでよしなに作っていっています。

便利な各種ライブラリも、各プロジェクトでちょこちょこ導入したりもしていますね。それを見て、他のプロジェクトのメンバーも「こっちでも使おう」となったり。

開発において、各々に裁量があるのがフラーの良いところですね。アーキテクチャが決まりきっていない、という面でもあるんですが……。

ただ、アーキテクチャの統一に向けて動いてはいます。徐々に良い感じになってきてはいるかなと。
古めのプロジェクトでは密な結合をしてしまっている部分もあるんですが、最近はレイヤーを分けて作れるようにしていこうという流れになってきていたり。

なお、フラーは多くのアプリを開発しているので、他のプロジェクトの事例も参考にでき、勉強になります。

——実務で扱うようになった上での、Go言語への感想を教えてください

小林:
正直、配列の扱いやポインタと値の相互変換などで、地味に面倒な部分があるなと最初は思っていました(笑)
でも、慣れてしまえば平気ですね。

言語の文化のことを言うと、Ruby on Railsと比べると大きなフレームワークがあまりないので、自分自身で設計をしていく能力が求められるなと感じます。型の使い方やアーキテクチャに関して、しっかり学ばないといけないなと感じています。
フラーではこういう話が好きな人が社内メンバーにいるので、有志で話し合う機会もあります。標準のアーキテクチャを作ろうよ、という会議をしたり。

Goを一年仕事で書いた上で、良い意味で最も想定との乖離があったとすれば、思ったより簡単だなということ。もっと難しい書き方をするのかな、なんてイメージがあったのですが、とにかく文法がシンプルです。
悪いところは……先にも話した通り、ちょっと面倒なところでしょうか(笑) でも、ここは愛嬌の範囲かなと思います。

——実務を経験した今、入社当時のオンボーディングを振り返るとどんな印象ですか?

小林:
やはり、言語に慣れるのに役立ったと思います。
なんらかの他の言語でWebアプリケーションの開発に関する知識を得てさえいれば、フラーのオンボーディングを受ければ実務にも入っていけるかなと。流石に「サーバーって何?」のレベルで来ると厳しそうですが。

また、僕が入ったときはまだなかったのですが、インフラ周りの内容もオンボーディングに追加されつつあるようです。

逆にオンボーディングだけで足りなかったものとしては、業務で制作するアプリの規模の大きさを考えたとき必要になってくる、型の扱いやプログラムを整理整頓する勘所、アーキテクチャ的な知識が挙げられるでしょうか。
また、データベースの操作周りについても、オンボーディングではシンプルなSQLを扱う課題を行いますが、実際はもっと複雑になるので、そこも足りないと言えば足りないかも。

ただ、もちろん入社すぐに一人でプロジェクトにアサインされることはなく、サポートをもらいながらやっていけるので、こういった知識は実際のプロジェクト入った後に、コードレビューで指摘をもらったりしながらOJT的に学んでいけます。

——フラーへ入ってGo言語を習得する上で、必要なことはなんですか?

小林:
何かしらの言語でのWebアプリケーション開発経験は必要ですね。あとは、新しい言語に抵抗感がなければいけると思います。

Go言語は、型やインターフェースの書き方が簡素なので慣れやすいです。
また、型を自分で決めて作っていくので、型の責務などアーキテクチャ的な話を意識しやすく、「コードの美しさってなんだろう」といった話を考える機会は多いかも。このあたりが好きな人にはおすすめです。
個人的には、より良い、美しいアーキテクチャを目指すのはモチベーションの1つになっています。

——最後に、フラーでの働くことのオススメポイントを教えてください

小林:
フラーには継続してやっていく案件がいくつもあるので、将来的な改修しやすさなどを意識して開発するようになっていきます。それは、エンジニアとしてより一層のレベルアップに繋がるかなと思います。

もちろん継続案件の保守だけでなく、新しい案件の新規構築も経験できます。両方の経験ができるのも、フラーの魅力的なところです。

お知らせ

小林さん、ありがとうございました。

フラーではエンジニアをはじめ一緒に働くメンバーを積極採用中です。
フラーやフラーのエンジニア・開発にご興味お持ちいただけましたら、お気軽にご連絡ください。

採用ピッチ資料はこちら↓



この記事が参加している募集

仕事について話そう

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!

最後までお読みいただきまして、ありがとうございます!もっと詳しくフラーを知ってみませんか?