たばりばりスタイル

Ruby経験をもとにGo案件に参画した方法と感想

僕は今年の 1 月から Go を使う案件に参画しています。

それまでは 2 年ほど Ruby on Rails を使った開発に携わっていましたが、去年あたりから静的型付け言語を経験したいと思い、Go をメインで扱う案件に参画することに決めました。

Go を選んだ理由は、他静的型付け言語に比べて下記の点で良さそうだと思ったためです。

  • 流行っている *1
  • Java/ScalaC# などの他言語と比べ、覚えることが少なそう
  • フリーランス案件で Go の案件は高単価が多い *2

Ruby の経験

SIer 時代はスクリプト作成や Chef/Itamae などの DSL で簡易的に使うレベル感で 1 年半ほど。Web 系に転職してからは、Ruby on Rails を使った Web サービスの開発を 2 年ほど経験しています。

Go 案件に参画した方法

「Go 未経験でも他サーバーサイド言語の経験・理解があれば歓迎する」という案件を中心に商談を行いました。

数年前より Go 経験 x 年以上 ~ みたいな求人も増えてきた感じがしますが、他言語の経験者を歓迎する求人も探せばまだ見受けられます。まだ流行り始めてから浅いため、今がチャンスかもしれません。数年後は厳しくなるかもと予想しています。

他言語から移る場合は、商談ではなぜ Go をやりたいかを聞かれることが多いと思うので、回答は考えておいた方がいいと思います。

僕の回答例は、下記のような感じです。

  • 静的型付け言語を業務で使ってみたいと考えた
    • コードを読む際に、型が見える方が読みやすいから
    • コードを書く際に、意図しない値を渡さないようにチェックできるから
  • キャッチアップが好きで、新しくて流行りな Go を業務で覚えたいと考えた
  • Go の開発ではクリーンアーキテクチャが採用されることが多い印象なのでその辺の知見にも興味があった

また、商談では、新規開発やスクラム開発、自動テストコード作成、インフラやフロントエンドなどの経験など、どの言語でも共通して使える経験があればアピールしておいた方がいいと思います。

Ruby on Rails と Go の開発を比べて

僕はいまでも Ruby / Rails を使った開発が好きです。コーディング試験があれば Ruby を使うと思いますし、正直 ActiveRecordRSpec がないサーバサイド開発にはやりにくさも感じてしまいます。

ただ Go にもすごく魅力を感じているので、しばらくは Go 案件で手に馴染ませたいと考えています。 もし今後 Ruby 案件に戻る選択をしたとしても、Go での経験が活きることもあるだろうし、もう少し Go を触る環境にいるつもりです。

開発面で比較すると、Rails を使った開発は用意された様々な便利 API を覚えて、効率よく使うことが求められる感じがします。一方 Go での開発は必要最低限の薄い Web フレームワークを使うことが多いため、必要な処理を自分で実装することが求められる感じがします。

個人的には、天下の ActiveRecord から離れたことでいかに多くのことを Rails に助けられていたかを感じています。SQL なんてほぼほぼコードで書いた記憶もありませんでしたが、Go で有名な ORM (GORM) ではがっつり SQL を書きます。JOIN 句とかほぼ SQL を丸々書きます。まだ慣れません。。

Rails のテスト環境や RSpec がないこともすごく寂しいです。これらは考慮する点を減らして、テストコードを書く時間に集中できる、凄く良い環境を用意してくれていたんだなと感じました。

ただ、Go での開発では interface(抽象)や goroutine、クリーンアーキテクチャなどこれまで経験してこなかった技術を学べるので、この辺は刺激があって楽しいです。Go と仲良くなれるまでは頑張ります!

まとめ

Ruby 経験者が Go 案件に参画するには、他言語経験者を歓迎する Go 案件にコンタクト取ってみるのが良いと思います。

また、Rails と Go の開発を比較すると、求められる事が少し違う感じがしました。これは他の人の意見も聞いてみたい…。

以上です。

*1:有名なメガベンチャーを始め、多くの企業で採用されてる

*2:以前利用していたエージェントから聞いた