Media Do Tech Do Blog

株式会社メディアドゥのエンジニアによるブログです。

Go Conference 2019 Spring スポンサーセッション レポート

f:id:hrk02:20190524102721p:plain

こんにちは、シニアエンジニアの濱口です。
2012年に新卒社員として入社し、現在もシステムの開発・保守運用を担当しています。

2019年5月18日(土)に開催されたGo Conference 2019 Springにて、スカラーシップスポンサーとして参加し、登壇をさせていただきました。

techdo.mediado.jp

はじめに

弊社では最近、Goで新規システムを立ち上げたりしていますが、同時に既存のシステム(JavaやPHP)の機能拡張・効率化も進めています。
私含む、既存システムの開発チームは、その中でどのようにして一緒にGoを盛り上げていくのかを考えました。

具体的な活動の紹介も含めて、メディアドゥとしてどのようにGoを盛り上げていくのかをお話させていただきましたので、紹介します。

Go初導入の組織で社内外で貢献していくために実施した2つのこと

以下は、スライドの内容を補足する形で内容の説明をしていきます。

Goについて貢献したい

今回の発表の視点は、9年程可動しているレガシーなシステムを運用しているメンバが中心です。
では、まず社内において、どのようにしてGoで貢献しましょう?それは、このようなシステムに、すぐにGoを入れてしまおうということです。
言っていることは、至極そのままではありますが、運用中のシステムでこうした動きを取るのは容易ではないことが少なからずあるかと思います。
また、導入することのメリットは何なのでしょうか。 そしてどのように導入するのでしょうか。
メリットが見えなければ、意味もなくなってしまいます。
「Goするぞ!」と意気込みを入れても、なかなか進めることができません。

Go習得への道

Goを扱えるようになるために、どのように進めればいいのでしょうか。
個人で勉強を頑張れば、それはそれで良いのですが、それでは組織全体が育ちません。
私たちは、Goを導入したての環境で、本番運用も見据えた知識を得るために、会社という枠を払うこととしました。
そして、実際にGoを使っている方々、導入しようとしている方々と連携することを考えました。

連携する方法として選択したことは、このブログ本体の名前にもなっている、Tech Doの活用です。
これはもともと社内向け勉強会として立案したイベントではありますが、さらなる活動として社外向け勉強会としても実施したいという思いがありました。
そこで、最短で、かつ効果的なイベントとして思いついたものが、「Goハンズオン」の開催です。

Go ハンズオン

メディアドゥには、イベント開催が可能な広いスペースがあります。 これを利用し、参加者へ向けて勉強スライドを用いた説明と、課題を解く時間を作ればハンズオンは開催できるという状況でした。
しかし、私含め社内の関係者には、下記の弱点がありました。

  • まだプロダクトでGoを使っていない
  • ハンズオンの実施が初めて

とりあえず企画を立ち上げたものの、上記のハードルがなかなか高く、推進することが難しい状況でした。
そこで、助け舟があったのです。
それは、実際に業務でGoを使っている、社外エンジニアによる協力でした。

Go初心者であるメンバと、協力者であるエンジニアで、Goの言語仕様や、コーディング作法をひたすら復習しました。
これにより、個人で勉強するよりも早くGoを習得することができました。
会社という枠は超えていますが、1つのチームとして、効果を発揮し始めたところです。

このような形で、半年間で3回、ハンズオンを実施することができました。
3回目を開催する頃には、フレームワークの導入なども含めて、実践向きな知識も付き始めました。

プロダクトへの役立て

ハンズオンなどを通した勉強により、Tech Do運営メンバ以外の社内エンジニアにもGoの会話をすることができるようになりました。
ここまで来たら、当初の「Goするぞ!」という考えは、「〇〇をGoで解決するぞ!」と言えるようになっています。
問題解決のツールとして、やっとGoと向き合うことができるようになりました。

実際のところ、Go導入でレガシーシステムの機能拡張を促進するという考えは、当初からなんとなくのイメージまで検討はしていましたが、開発チーム全体で力を入れるには準備が不足していたのです。
個人の力ではなくチームの力で進めるために、その土壌を作る必要がありました。

ハンズオンなどの活動を通して、社内のエンジニアもGoに触れたりする機会が得られたことで、プロダクトへの役立てる作戦を、全体で合意することができたのです。

作戦はついに手を動かすフェーズに近づいてきており、いよいよJavaとPHPで長らく運用してきたシステムに、Goが追加されていきます。

実際に、既存のシステムのサブシステムとしてGoを入れるということは、シングルバイナリである取扱の容易さや、処理速度、メモリ安全性、型付け言語、などなどのGoの特性により、導入しうるメリットがあることも、納得できました。

おわりに

弊社は積極的にGoを取り入れ、ハンズオンやスポンサーなどの形で皆さんと一緒に、盛り上げていきたいと考えています。
第4回目のハンズオンなども企画中です。
これからも何卒よろしくお願いします。