🍲

社内デモを通して人と技術を活発にするための仕組みづくり

2023/11/30に公開

こんにちは、株式会社シグマアイのリサーチャーの@mullchanです。
今回の記事では、「デモを社内向けに公開するための仕組みづくり」についてご紹介します。
テックブログとしては、前回の記事に引き続き、社内環境のお話となります。

はじめに

デモを社内向けに公開可能な環境を構築しました。後述するポータルページから、それぞれのデモに簡単にアクセスすることができます。デモを使ってみて不具合や改善点などがあれば、開発チームにフィードバックでき、随時デモが改善される仕組みも整えました。

概要図

ここでのデモは、シグマアイで開発している最適化や機械学習を用いたアプリケーションのデモを指しています。デモの種類としては、プロダクトや社内プロジェクト、ツールなどがあります。

プロダクトのデモ画面:

プロダクトのデモ画面

実験補助ツールの画面:

実験補助ツールの画面

なぜ作ったのか

シグマアイでは物流や製造、倉庫など様々なドメインの課題に取り組んでいます。その課題に応じて、採用する技術も様々です。案件ごとにドメイン知識や技術が蓄積されるのですが、社内の課題として、自分の関わっていない事例や技術的アセットが活かせない状態にありました。
既存の事例やアセットを洗い出してみると、主に以下の3つの状態にあることが分かりました。

  1. そもそも存在が認知されていない
  2. 知っているが試せない
  3. 試せるが活用できる状態にない

1番目は、特に最近入社したメンバーが過去の事例を把握できていないというケースです。2番目については、資料は参照できるがデモが動作していない状態で、実際に触ってみて理解の解像度を高めることができません。3番目は、デモは触れるが使い勝手や機能が不十分であり、客先で紹介したり実際に売り込むことが難しい場合です。

実現したいことは以下のとおりです。

  1. これまでの事例やアセットを一覧できる
  2. 事例やアセットに関するデモをいつでも触れる
  3. 不具合報告や提案が開発者に伝わり、デモが改善される

他の理由としては、シグマアイは主にAWSにてサービスを提供しているのですが、過去の案件で使用したリソースが一部放置されており、それをオンプレの社内サーバに移すことでコスト削減を図りました。

今回作ったもの

上記を実現するために、今回以下のものを作りました。

  • 事例やプロダクトを集約したポータルページ
  • 社内サーバでデモを動かして限定公開するためのインフラ構築
  • 目安箱の設置、CI/CDの導入

以降、それぞれ具体的に何をどのように作ったのかを解説していきます。

ポータルページ

まずは、各デモのリンクを集約するためのポータルページをNotionで作成しました。Notionのギャラリービューを用いることで、事例やプロダクトのサムネイル画像を並べることができます。

Notionのポータルページ

ちなみに、正式なプロダクトとしてリリースしていないものについてはサムネイル画像がないため、Adobe Fireflyなどのサービスを利用して用意しました。

当初は各デモのリンクだけ集約できればよいと考えていたのですが、デモだけでなく事例やプロダクトに関する資料へのアクセスの悪さも問題となっていたため、これらを一箇所に集約できないかと考えました。

ポータルページの詳細

詳細ページには、デモのリンクの他に以下のような情報を記載しています。これにより、資料の在り処や社外秘かどうか等を担当者に尋ねる手間が省けます。

  • ホワイトペーパー
  • GitHubリポジトリ
  • 社外秘か否か

また、事例やアセットの関係図も作成してみました。これは半分自分の趣味でして、系統樹のように事例やアセットを整理したものになります。図内の要素の関係としては、プロダクトと提供先企業、技術的な関連性、プロダクトのコンセプトレベルでのつながりがあります。
個人的な想いとしては、案件やプロダクトが残念ながら終了してしまったときに、そこで培った技術や経験は決して無駄でなく、"connecting the dots"ではないですが、いずれ別の何かに活きる可能性があると信じています。それを具現化したのがこの記事の内容でもあります。
もう半分は実用面で、上記のポータルページと同様、デモや資料へのリンクを図の中に設置することができます。

案件・プロダクト関係図

自分が関わっているプロダクトの周辺を一部紹介します。

案件・プロダクト関係図の詳細

自分は物流、特に現時点では配車・配送の効率化のためのサービス(CirqLog)を開発しています。その技術を活かして、静脈物流における回収ルートの効率化に関する実証実験を行いました。
また、シェアサイクルの最適化は、アルバイトの学生さんと一緒に始めたプロジェクトです。これは回収という点で技術的にも静脈物流の件との関連性があります。
新型コロナウイルスが流行した際に、シグマアイでは我々の技術でできることをいくつか提案しました。その一つに、開設するお店や学校などの施設を計画的に削減するという問題があり、これもシェアサイクルにおけるポートの配置問題と類似しています。

社内サーバのインフラ構築

デモを社内限定で公開するために、以下のような構成でインフラを構築しました。

インフラ構成図

ネットワーク周りはCloudflareのサービスを利用しています。

Cloudflare Tunnelはサーバのアプリケーションへのインターネットからのアクセスを実現します。Cloudflare Zero Trustはゼロトラスト認証を実現するサービスであり、ここではGoogle OAuthと連携することで会社のドメインのみアクセスを許可しています。

Google OAuthの画面

これらのサービスは現在、有り難いことに基本的に無料で利用することができます。ただし、Cloudflareで独自ドメインが必要になります。今回は過去のプロジェクトで取得したものの使っていなかったドメインがありましたので、それをCloudflareに移管しました。

社内サーバの内部では、Nginxを用いてパスに応じて各デモにルーティングするように設定しています。

    location /optope/ {
        proxy_pass http://0.0.0.0:10010/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /cirqlog/ {
        proxy_pass http://0.0.0.0:10020/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

実際に社内サーバにデモを立ち上げる際には、共用のデプロイ用ユーザを利用します。

  • Linuxユーザ
  • GitHubマシンユーザ

LinuxユーザにはNginxの設定ファイルの読み書きと、Nginxの再起動を行えるように権限を与えています。GitHubのマシンユーザは個人アカウントは別に作成が許されているアカウントであり、後述するCI/CDを含めてデプロイを容易にするために採用しています。

これらの認証情報は、1Passwordにて管理・共有しています。開発者向けのSSHの機能がとても便利です。

目安箱

不具合や要望を集めるために、簡易的ではありますがNotionに目安箱を設置しました。

目安箱

目安箱を元にしたデモの改善プロセスは、大まかに以下のようになります。

  1. プロダクトチームが目安箱から実際に対応する意見を選ぶ(GitHubリポジトリにissueを立てる)
  2. 意見をチームで解釈した後、機能の開発や不具合の解消を行う
  3. メインブランチへのpushにより、デモが自動更新される

デモの更新にはGitHub Actionsを利用しています。CI/CDに不慣れなメンバーもいるので、まずは社内で慣れるという育成の側面もあります。
目安箱はまだ導入したばかりで効果の測定は今後行いますが、単に試せるだけでなく影響を及ぼせる体制にあるというのは、デモへの向き合い方といった心理面で現時点でも良い効果があると考えています。

副次的な効果

主な目的は上記のとおりですが、副次的な効果として期待していることがいくつかあります。

  • 自主的な活動の促進
  • アルバイトのオーナーシップの醸成
  • デモを通じた社内コミュニケーションの活性化

まずは、既存アセットや新しい技術の活用方法について、公開する場を設けることでアイディアを具現化する活動を促進したいと考えています。
単にデプロイするだけでなく、その後もリソースを割いて改善を図る意思決定をしたものについてはチームを組成することになります。アルバイトは単発の仕事に従事するケースがあるのですが、このようなチームに属することでプロダクトに対するオーナーシップを持って、モチベーション高く働いてもらえたらという願いがあります。
また、シグマアイは特定の技術やドメインに絞らず広く手掛けているため、日頃のコミュニケーションがどうしても案件のチームごとに閉じてしまう傾向にあります。デモを介したコミュニケーションを促し、お互いの取り組みや作っているものに対する敬意につながれば最高だと思います。

今後の展望

今後の展望としては、社内でブラッシュアップした技術を社外へ展開できればと考えています。

  • 試用版・無料版の提供
  • アセットとLLMの接続

1つ目は試用版の提供ということで、機能や利用期間を限定した形でデモを公開し、実際のユーザからのフィードバックを増やしていきたいです。
後は、アセットをChatGPTのようなLLMと接続することを考えています。LLMがオペレーティング・エージェントとしてアセットを利用するためのUIとなっていくはずです。その際にアセットが集約・整備されていると、それらを連携して新たな価値を提供できるのではないかと想像しています。

まとめ

デモを社内向けに公開する仕組みを作りました。主要業務とは別に少しずつ進めている取り組みのため、あまり時間がかけられず素朴な方法を採用しましたが、実現したいことは達成できているため、社内向けとしては十分だと思っています。
ちなみに、Zennの記事には絵文字を設定する必要がありますが、この記事を1個の絵文字で表すとしたら何だろうと考えた時に、今回作った仕組みによって、人や技術が社内で対流してほしいという考えから「スープ」を選びました。

何か気になる点がありましたら、お気軽にコメントをもらえると嬉しいです。
ここまで読んでくださり、どうもありがとうございました。

シグマアイテックブログ

Discussion