
JDDに住む妖怪「はなすけ」のご紹介
はじめに
三菱UFJフィナンシャル・グループの戦略子会社であるJapan Digital Design(以下JDD)でシステム開発を担当している小笠原啓です。
さて、JDDでは生成系AIが組み込まれたサービス、例えばGitHub CopilotやCopilot for Microsoft365 などを積極的に活用しています。また生成系AIを利用したサービスの開発、検証にも力を入れています。
本日は、そんな環境で生成系AIを有効活用する方法を模索する過程で誕生した、生成系AIを利用したSlackアプリ「はなすけ」をご紹介させていただきます。
「はなすけ」の誕生
まず、「はなすけ」の誕生秘話からお話ししたいと思います。
R&Dの一環として、生成系AIを日常的に利用できる環境をJDDで働く人たちに提供したいと考えたことがきっかけでした。
名前の由来は、ChatGPT4に親しみやすい名前を考えてもらい候補を生成してもらったところ、「おしゃべり太郎」や「なごみちゃん」などの候補が出てきました。
生成された候補の中で、
「はなすけ」
―話すことを主な機能とするボットで、「助ける」を意味する「すけ」と合わせて、話すことで助ける友達のような存在感を持たせる由来を持つ
名前・由来がともにしっくり来たので、「はなすけ」と命名しました。
現在、はなすけはJDDオフィスに住む妖怪としてSlackに常駐し、JDDメンバーの様々な仕事を助けてくれるデジタルアシスタントとして活躍しています。
それでは、はなすけに自己紹介してもらいましょう。

続いて、はなすけの開発の狙いや開発状況についてお話したいと思います。
「はなすけ」を通じてJDDメンバーが生成系AIに触れる
先ほどあった通り、はなすけを開発するねらいは生成系AIを日常的に利用できる環境をJDDで働く人たちに提供することです。
そのために3つの工夫をしています。
1つ目の工夫は、社内のコミュニケーションの中心であるSlackのアプリとしてはなすけを開発したことです。
JDDはフルリモートで働くことができ、メンバーの多くはリモートで仕事をしています。そして非同期かつ文章をもちいたチャットツールであるSlackが社内のコミュニケーションの中心となっています。
こうした働き方にあわせて、生成系AIを気軽に、そして使いたいと思ったときにすぐに使えるようにするため、Slackのアプリとしてはなすけを開発することにしました。
はなすけは自分の分報チャンネルをもっているほか、任意のPublicチャンネルに追加して利用もできます。
これは、誰でも気軽に利用でき、かつ他のメンバーの利用状況を可視化しやすい環境をつくることで、仕事をしている最中にちょっと誰かに愚痴りたい、相談したいことがあったときに、JDDメンバーへ雑談をするかのようにはなすけを呼び出してもらいたいと思っているためです。
例えばあるメンバーはNDAの文書の内容のチェックをはなすけに依頼していました。

NDAの文書チェックのようなリスク管理が必要な業務は心配になる点や分からないこともあると思います。こうしたお仕事についても、最終的な確認は専門家に任せるとして、はなすけへ気軽に一次相談をしてみることができます。
2つ目の工夫は、はなすけを「JDDに住んでいる座敷童のような妖怪でいたずら好き」という親しみやすい存在にしていることです。
はなすけは自身の分報チャンネルで大喜利を仕掛けてみたり、

勉強して身に付けたおじさん構文でポエムをよんでみたりと、思わずはなすけと雑談したくなるような振る舞いをするようになっています。

おじさん構文を解説するWebサイトを参照したのですが、使いこなすには至っていないようですね。いきなり寿司を食べはじめる部分が個人的にツボでした。
3つ目の工夫は、JDDメンバーの業務を補助する実用的な能力を備えつつ、社内の情報セキュリティ基準に準拠した存在にしていることです。
実用面でいえばLangChain(Tool calling/Function calling)を利用することで、はなすけは生成系AIが苦手とする計算問題にも回答できるようにしています。

またMermaid形式を利用してシーケンス図をはじめとした図もできるようにしています。
下記は、はなすけが作成したシーケンス図です。自身がAWS、Azureを利用したマルチクラウドの環境で動作していることを正確に描き起こしてくれています。

また、はなすけは社内の情報セキュリティ基準に準拠した環境で動作しています。
これにより「こんな情報をはなすけに渡して大丈夫なのか」と悩んだり躊躇したりすることなく、はなすけを活用してもらえるようになっています。
この点では入力した情報を生成系AIのモデルの再学習に利用されないようにすることが最重要でした。また日本国外のサーバーにデータが移転されないことも重要でした。
このためJDDのデータがモデルの再学習に利用されることを防ぐために「顧客データをモデルの再トレーニングに使用しない」ことを宣言しているAzure OpenAIを利用しています。

加えてAzure Open AIのJPリージョンにデプロイしてあるモデルを利用することでデータが日本国外に移転されないようにしています。
こうした仕掛けを行ったことが功を奏したのか、半数近くのメンバーたちがはなすけの分報チャンネルに参加してくれています。

また23個のPublicチャンネルにはなすけは利用されています。今のところ狙い通り、はなすけは活躍してくれているようです。
機能改善をし続ける「はなすけ」
開発者は、はなすけが活躍し続けられるよう改善要望にいち早く対応しています。
例えば、はなすけがいるスレッド内で人間同士が会話をしているとはなすけが割り込んできてしまい、使いづらい部分がありました。

この投稿をみた開発者によって翌日には「はなすけ立ち去り機能」がリリースされました。
立ち去り機能は、はなすけに別れを告げると以降はスレッドの会話に参加しなくなるという機能です。

これによりスレッドを切り替えることなく、スレッドの話題に興味のあるメンバー同士が会話を続けることができるようになりました。
こうした改善要望への対応の早さには驚きの声が上がっていました。

この他にも、はなすけが下記に説明する通り、様々なことにはなすけは対応してくれています。今後も要望を受けてさらにはなすけには成長をしてもらいたいと思っています。

生成系AIを業務で活用するには、このように生成系AIを利用して試行錯誤することが重要です。
JDDのValue(行動指針)である「常に学び早く実践する」「プロフェッショナルである」が、はなすけの機能改善を通じてまさに体現されていると感じます。
そしてこうして試行錯誤をするためには、こんなことに使えるかも?こんなことを頼んだら便利かも?と思ったことをすぐに試せる環境が重要です。
はなすけがJDDで働く人たちに生成系AIに親しめる環境を提供してくれています。この環境を通じて業務への生成系AIの新しい適用方法が発見されることを期待しています。
JDDの文化が「はなすけ」の開発を支えている
はなすけの開発は、JDDらしさやJDDの文化に支えられています。
JDDは「常に学び早く実践する」というValueに基づいて、資格取得の支援のほか積極的なスキルアップも推奨しています。
そのためか余裕があるときは興味のある新技術について調べ、それをまとめて共有し、みんなで盛り上がるという文化があります。
以前noteで公開した社歌のハッカソン(シャッカソン)の取り組みは、まさにこうしたJDDの文化の現れであると思います。
はなすけの開発も、こうしたJDDの文化に支えられています。
はなすけの開発状況はSlackのPublicチャンネルで公開されており、チャンネルには開発予定の機能や開発状況、検討内容などが書き込まれています。これをみて興味を持ったメンバーが自発的に開発に携わってくれています。
はなすけのアイコンの作成がその一例として挙げられます。
はなすけの見た目(アイコン)は、当初、Azure OpenAIのDALL-Eで作成しようとしていました。

上記は実際に生成したものの一例です。ちょっと愛嬌が足りず、電子機器のような見た目で冷たい印象です。この後もプロンプトを工夫したのですが納得がいくものができませんでした。
その結果をSlackでつぶやくと、あるメンバーがはなすけのアイコンを作ってくれました。

これが現在のはなすけです。

JDDのロゴを活かした、まさに「はなすけ」と呼びたくなるような愛らしい見た目です。
作成してくれたのは普段はインフラ周りを担当しているエンジニアです。ネタとして作成してくれたようなのですが、愛らしい見た目がJDDメンバーたちの心をつかんだ結果、そのまま採用されました。
最近でははなすけのシステムエラーをSlackに通知する仕組みを構築する際に、エラー用アイコンも作成してくれました。

このように公開されている情報から自分が関われそうなことを発見し、積極的に関わる人たちがはなすけの開発を盛り上げてくれています。
今後もこうしたJDDの文化がはなすけを成長させてくれると期待しています。
さいごに
この記事を書いている当日2024/05/14にHello GPT-4o が発表されました。
機能を紹介している動画を見るだけでも生成系AIがより使いやすく、高性能になっていることがわかります。
はなすけの利用しているモデルもGPT-4oを切り替えると、より業務での利用の幅を広げることができそうです。
Japan Digital Design株式会社では、一緒に働いてくださる仲間を募集中です。カジュアル面談も実施しておりますので下記リンク先からお気軽にお問合せください。
この記事に関するお問い合わせはこちらにお願いします。
Technology & Development Division
Dev2 Lead / Senior Engineer
Kei Ogasawara