Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

待望のGo新機能のリリース!!でもちょっと待って!プロダクションコードに反映する前に・・・

この記事はalias go='go1.18'でお送りしています。 Money ForwardでGoエンジニアをしている @yoskeoka です。

Go1.18がついにリリースされましたね!

特に注目度の高いGenericsFuzzingのような言語の新機能、Go tool chain, standard packageの拡張などなど・・・、あなたのチームで開発しているプロダクトで早速活用してみたいのではないでしょうか。

でも、ちょっと待ってください。 Go公式からのリリース発表だけを見て早速新機能を使ったコードを書いてしまっていいのでしょうか?

いきなりアップデートしてしまう前に、新しいバージョンのGoの新機能が手元の開発PCから本番環境まで対応済みかどうか、丁寧に確認してから計画的にアップデートしましょう。

TL;DR

今回注目度の高かった新機能を含むGoのリリースに合わせて、関連ツールなどの対応状況を簡単に調べてみましたが、以下のようなGoコミュニティの対応の良さを感じました。

  • ほとんどのGoのツール・環境が公式リリースと同日に新機能に対応している
  • 一部対応がまだなものもあるが、温度感高く新機能をサポートしようとしている

これからも安心してGoを使っていけそうです!

Goのリリース

Beta、RC版を経て、Go Teamから正式なリリースがアナウンスがされます。 Twitterのアナウンスで知る人も多いのでは。

毎回しっかりとRelease Notesが書かれているので、変更を確認してからアップデートしたいですね。

Release NotesにBreakingChangesがなければ、実はGoのバージョンはアップデートしてしまっても基本的に互換性が保たれているため問題は起こらないと思います。

ですが、新機能を使うことを目的としてアップデートする場合は話が変わってきます。 あなたの手元で書いた、新機能を使ったGoのコードが、チームでの開発プロセスを経て、プロダクション環境で動くか?までを考えておく必要があります。

新バージョンをサポートしているか確認していく

以下でそれぞれのツール、環境のGoサポート状況を確認していきますが、v1.18リリース当日(2022/03/16)の情報です。 後ほどアップデートされている可能性はありますし、見逃しもあるかもしれません。

Goのインストール方法

バイナリインストール

公式リリースからダウンロードするか、アナウンスについているgo install golang.org/dl/go1.18@latestのコマンドでインストールする一番確実で、リリース直後から使える方法です。

Goを公式リリースのバイナリからインストールしていない人もいると思います。 チーム開発しているなら、チームメンバー全員が新機能に対応したGoのバージョンを使う必要があるのでいくつか環境構築に使われているものを調べました。

  • Homebrew
    • 対応はまだでした
    • 有志によるものなので仕方なし。たいてい1週間以内程度で対応される印象
  • goenv
    • 爆速対応されていました

Go Playground

Goのちょっとした動くコードを共有するのにGo Playgroundを使うと思いますが、これもRelease版でGenericsを含むコードが動くようになっていました。 試しにGenerics TutorialのコードをGo Playgroundで動かしてみましたが問題なし。

エディタ

vim, VSCodeといったよく利用されるエディタでは、Goのサポートのために内部的にgopls (GoのLanguage Server Protocol)を使用しています。

  • gopls
    • v0.8.0で爆速対応済み
    • リリース日にもv0.8.1で追加の修正をおこなっていました
  • GoLand
    • Go Genericsについてはサポート状況をしっかりと告知している様子でした。(実際の動作までは確認できてません)

lint

数が多いので主に使っているものだけ調べました。

CI/CD

  • CircleCI cimg/go
    • cimg/go:1.18tagで 爆速対応済みでした!
  • GitHub Actions

コンテナ系

Money Forwardではローカルの開発環境以外ではGoコンテナで動かしているので

その他

  • AWS Lambda Go
    • go1.18に対して、特別対応が必要な設計になっていなかったので問題なく使えるようです

調べてみた結果

Goのエコシステムは多くのコントリビューターの手で支えられているんだなぁ(小並感) と感じました。 これからもたくさんお世話になって、こちらからもコントリビュートしていきたいです!


マネーフォワードでは、エンジニアを募集しています。 ご応募お待ちしています。

【サイトのご案内】 ■マネーフォワード採用サイトWantedly福岡開発拠点京都開発拠点

【プロダクトのご紹介】 ■お金の見える化サービス 『マネーフォワード ME』 iPhone,iPad Android

ビジネス向けバックオフィス向け業務効率化ソリューション 『マネーフォワード クラウド』

おつり貯金アプリ 『しらたま』

お金の悩みを無料で相談 『マネーフォワード お金の相談』

だれでも貯まって増える お金の体質改善サービス 『マネーフォワード おかねせんせい』

金融商品の比較・申し込みサイト 『Money Forward Mall』

くらしの経済メディア 『MONEY PLUS』