Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

新しい技術の導入時に大切にしていること

こんにちは、koidです。こちらは Gunosy Advent Calendar 2018 、25日目の記事です。昨日の記事は @hoshitocat さんの Swaggerでインタフェースの共有をしつつ社内管理画面を作る でした。

早いもので、Advent Calendarもあっという間に最終回となりました。この記事を持って、今年も無事(?)完走となります。

さて、本題です。

今年も弊社では、様々な技術*1や手法にトライし、プロダクションへの導入を行ってきました。 そんな中で、そういった新しい技術を導入していくにあたり、どんなことを大切に考えているのか、先日 IVS CTO Night というイベントでLTをする機会があったので、その際にお話ししたことを書きたいと思います。

技術は目的ではなく、課題解決のための手段である

下記の記事で前CTOの松本が「課題解決型組織」と言っていますが、我々はユーザに価値を届けるため、何らかの「課題」*2を解決するために集まっています。

その中で、我々にとって技術は課題解決のための手段であり、使うこと自体がゴールになってはいけないと考えています。

gunosiru.gunosy.co.jp

どんな課題を解決したいのかを明確にする

何か技術を採用・導入する場合、下記の例のように、何かしら解決したい課題や実現したい機能があると思います。

  • 新しいユーザ体験の創出
  • 既存のユーザ体験の向上
  • 開発速度の向上や運用の効率化

例えば、先日リリースした「グノシースポーツ」では、AppSync(GraphQL)を採用しましたが、クライアントサイド・サーバサイド共にコード記述量が多いことや、インターフェースの共有に前々から課題を感じており、それを解決するための手段として、(ちょうど良いタイミングでAppSyncが登場したこともあり)AppSyncを採用しました。

tech.gunosy.io

良くない例(課題が明確になっていない例)

「世間でコンテナ流行ってるらしいからコンテナやろうよ」

コンテナを導入するならば、流行っているからではなく、コンテナで何を解決したいのか(デプロイフローの改善?運用の効率化?コスト削減?)、解決したい問題があり、コンテナ(=技術)が選ばれるべきだと考えています。コンテナを例に出しましたが、 サーバレスでも、他の技術でも同じだと思っています。*3

もちろん、技術トレンドを軽視しているわけではなく*4、いざ課題に直面した際の選択肢を増やすため、また、選択肢として選んだ際にすぐ使えるようにしておくためにも、トレンドを理解しておくこと、実際に触って特性を理解しておくことは非常に重要だと考えています。*5

解きたい課題があれば、同じ技術でも、どうやって使うか(構成や組み合わせ方)は、変わってくると思っています。

みんなに使ってもらうためにはどうしたら良いか

さて、導入しはじめた技術が、当初の期待通りワークした・しそうだとします。Gunosyでは自分のチームだけが使えれば良いや、ではなく、有用なものは全社・他のプロダクトチームでも使えるようにしていくこと、より多くの課題を解決していくことを大切にしています。

CI/CDパイプラインを含めてデザインする

時として新しい技術は既存のCI/CDパイプラインにはスッとは溶け込まないかもしれません。新しい技術に取り組むに当たって、手作業は凄いストレスがかかりますし、導入へのハードルを押し上げてしまいます。

なので、CI/CDまで、必要であればツールの選定含め、なるべくセットで考えるようにしています。例えば、AppSync導入時には、いままで使っていたツールで対応しているものがなかったので、CloudFormationに舵を切ったりしました。(また、新規・既存に関わらず、GunosyではCI/CDの改善に積極的に取り組んでいます。)

tech.gunosy.io tech.gunosy.io

アセット化・横展開を意識する

何度かブログでも書いていますが、不定期に開催されるテックナイトで、各プロダクトチーム持ち回りで、「こんな課題があって、こんな技術使い始めた」等の共有や、Pros/Cons、デザインパターン(組み合わせ例)の共有を行っています。

また、それだけでなく、「他のチームでも使いそうだ」となった時点で、早い段階でモジュール化やテンプレート化を行い、車輪の再発明を防ぐように意識しています。その際も、自分以外の人間が使いこなせるか、即ち、誰でもすぐに利用可能か、ということを意識してモジュール化・テンプレート化を行うようにしています。

tech.gunosy.io

まとめ

だいぶポエムになってしまいましたが、どんどん新しい技術が出てくる中で、ただ単に「流行っているから」ではなく、その技術が何を解決し得るのか、どういった価値を持つのかを常に思考しながら、今後も採用・導入していきたいと思っています。

Game Server Services の 丹羽さんに撮って頂きました :)

最後に

Gunosyでは、一緒に課題解決*6に取り組んでくださるメンバーを募集しています!

gunosy.co.jp

*1:各種サービスやSaaSも含む

*2:ユーザの課題はもちろんのこと、ユーザに価値を届けるにあたっての課題も含め

*3:Gunosyでもコンテナ化は積極的に進めており、主にサーバリソース共有によるコスト削減の手段としてコンテナ化に取り組んでいます。これはまた別の機会にでも書きたいと思います。

*4:流行るからには何かしらの理由があるはずです

*5:Gunosyでは、論文輪読や各種社内勉強会等、トレンドのキャッチアップは積極的にやっています。

*6:本記事ではだいぶ開発・運用寄りの例が多くなりましたが、ライブ動画やパーソナライズなど、ユーザ体験を変えていくトライもたくさんしています!