冬休み成果発表会を社内で開催しました
冬休み成果発表会を冬休み明けの2024年01月05日(金) に開催しました。
弊社執行役員でもある野上の呼びかけで開催が決まった今回の成果発表会。冬休みに行った開発の成果や、得た学びについて、若手ベテラン合わせて13名が発表しました。
プライベートサイトのセキュリティ強化やAIを活用した開発など多種多様な発表がされ、最後にはそれぞれが「一番グッときた人」に投票してその成果を称え合っています。
今回は、そんな13名の発表内容を簡潔に紹介します。ぜひ気になる発表からご覧ください。
目次
プライベートのサイトにパスキー認証を導入した / Hotwire の Strada を試した
中谷
プライベートのサイトの管理者のログインにパスキー認証を導入しました。パスキー認証はパスワード認証の代わりになるセキュリティなログイン手段で、生体認証などが使えます。おかげでとても楽にログインできるようになりました。
もう1つ、Stradaの試用をしてみました。Strada は Hotwire 技術の一つで、シームレスにWebとネイティブアプリと通信するライブラリです。
今回はソニックガーデンジムの iOS アプリを試作して組み込んでみました。Webのボタンをネイティブに置き換えてみたところ、少ないコードで連携することが出来ました。
もう1つ、Stradaの試用をしてみました。Strada は Hotwire 技術の一つで、シームレスにWebとネイティブアプリと通信するライブラリです。
今回はソニックガーデンジムの iOS アプリを試作して組み込んでみました。Webのボタンをネイティブに置き換えてみたところ、少ないコードで連携することが出来ました。
「Sonic」の返事の文面を生成AIで作った
松村
納品のない受託開発のお客様とのコミュニケーションツール「Sonic」でお客様から来た投稿内容への返事の文面を生成AIを利用して作成するツールを作りました。
Chrome Extenstion として、ブラウザから問い合わせ文面を抽出し、生成AIのAPIを叩くことで返答の文面を作る仕組みです。
返事としては、成り立つ文面は作れるところまでできました。まだまだ、自然な文面ではないので、プロンプトや、返答の背景をAIに伝えるような仕組みができるとより良いものにできそうです。
Chrome Extenstion として、ブラウザから問い合わせ文面を抽出し、生成AIのAPIを叩くことで返答の文面を作る仕組みです。
返事としては、成り立つ文面は作れるところまでできました。まだまだ、自然な文面ではないので、プロンプトや、返答の背景をAIに伝えるような仕組みができるとより良いものにできそうです。
AIによるコードレビューを試してみた / 社内コミュニケーションツールの改善
野上
巷で話題のAIによるコードレビュー「coderabbitai」を社内のプロジェクトでいくつか試してみました。
日本語用のプロンプトをいじったり、SGのコードレビューの観点を学習させたモデルを利用したりしてみました。結果、GPT3.5のモデルよりGPT4のモデルを使う方がやはりそれっぽいコードレビューしてくれたので、しばらく使ってみようと思います。
もう一つは、普段社内で利用している自社開発のコミュニケーションツール「world」を改善しました。worldには、返事しないとbotがリマインドしてくれる機能があるのですが、そのリマインドが関係ない人にとってノイズなっていた問題があり、そのノイズを除去するように改善してみました。
日本語用のプロンプトをいじったり、SGのコードレビューの観点を学習させたモデルを利用したりしてみました。結果、GPT3.5のモデルよりGPT4のモデルを使う方がやはりそれっぽいコードレビューしてくれたので、しばらく使ってみようと思います。
もう一つは、普段社内で利用している自社開発のコミュニケーションツール「world」を改善しました。worldには、返事しないとbotがリマインドしてくれる機能があるのですが、そのリマインドが関係ない人にとってノイズなっていた問題があり、そのノイズを除去するように改善してみました。
SG用のGoogle Cloud管理ツール「Garden」を作り始めてみた
遠藤
SonicGardenでは納品のない受託開発において結構な領域でAWS(Amazon Web Service)を使っていますが、最近FirebaseなどでGoogle Cloudを利用することも増えてきました。その中で今までAWSで動かしていたRailsをGoogle Cloudで動かして見たところ、思ったよりも納品のない受託開発に向いてそうな事が分かりました。
そこで、SonicGardenのみんながGoogle Cloudを簡単に扱える様にするために、オレオレHerokuの様な管理ツールを作り始めました。Google CloudのAPIが膨大なのでまだ完成にはほど遠いですが、近い将来みんなが使える形にまとめたいなと思ってます。
そこで、SonicGardenのみんながGoogle Cloudを簡単に扱える様にするために、オレオレHerokuの様な管理ツールを作り始めました。Google CloudのAPIが膨大なのでまだ完成にはほど遠いですが、近い将来みんなが使える形にまとめたいなと思ってます。
VS Codeでプレゼン資料を作成した
田中
Marp for VS Codeを使用し、Markdownを活用して簡単にスライド資料を作成してみました。
即時プレビュー、複数フォーマット(HTML、PDF、PPT)への出力、発表用スクリーンとコメント機能があり、テーマをCSSで作ることもできます。今回、SonicGarden用のテーマも作ってみました。
即時プレビュー、複数フォーマット(HTML、PDF、PPT)への出力、発表用スクリーンとコメント機能があり、テーマをCSSで作ることもできます。今回、SonicGarden用のテーマも作ってみました。
メッセージサイズ制限のないPostgreSQLベースのActionCableアダプタを作った
西川
Rails標準のPostgreSQLアダプタには8KBのメッセージサイズ制限があり、使いにくい場合がありました。そこで、メッセージの本文をレコードに保存し、レコードのIDをやり取りするようにし、基本的にサイズを気にしない仕組みを冬休み期間を利用して作ってみました。
ただ、作ったあと、同じ発想で作られた既成 gemを見つけたので、今はそちらを使っています笑
ただ、作ったあと、同じ発想で作られた既成 gemを見つけたので、今はそちらを使っています笑
Vertex AI Gemini API を試すついでにRemixも試してみた
広上
年末に発表されたGoogleの新しいAIモデルGeminiを試したかったのでFirebase + CloudRun + Remixでチャットアプリを作ってみました。モデルの評価は置いておいて、GCP内でいろいろ完結できるのはとても魅力的でした。
Remixも年末年始の時点ではSSRオンリー感が強かったのでFirebaseと組み合わせるのは微妙に思っていましたが、SPAモードが追加されたことで話が変わってきそうです。今後も引き続きキャッチアップしていきます。
Remixも年末年始の時点ではSSRオンリー感が強かったのでFirebaseと組み合わせるのは微妙に思っていましたが、SPAモードが追加されたことで話が変わってきそうです。今後も引き続きキャッチアップしていきます。
HonoでRAGを作ってみた
菅原
JavaScript/TypeScriptのWebフレームワークである「Hono」で、Retrieval Augmented Generation(RAG)を作ってみました。
RAGというのは、ChatGPTのようなAIに渡すプロンプトを、DBからの情報を使って、いい感じにする仕組みです。
例えば、DBに友達Aの好きなものを登録しておいて、AIに「友達Aの誕生日に何をあげたらいい?」と質問したら、DBに登録した友達Aの好きなものを加味した返答をAIがしてくれます。
RAGというのは、ChatGPTのようなAIに渡すプロンプトを、DBからの情報を使って、いい感じにする仕組みです。
例えば、DBに友達Aの好きなものを登録しておいて、AIに「友達Aの誕生日に何をあげたらいい?」と質問したら、DBに登録した友達Aの好きなものを加味した返答をAIがしてくれます。
テーブル設計のやり方や判断基準ってなんだろう?それについての本を読んでみた
谷宮
今まで何となくでテーブルやカラムの設計・命名をしていましたが、基準や型があれば設計がもっとやりやすくなると思い、本を読んでみました。
本の中で、リソース系が複雑になりやすいこと、リソース系かどうかは、テーブル名の後ろに「〜する」を足して不自然かどうかで判断することを学びました。たとえば、注文テーブルと商品テーブルがあった時にそれぞれ「〜する」足すと、注文「する」、商品「する」となり、後者の商品テーブルがリソース系とわかります。本では、テーブル設計は、リソース系は細かく分解した後、項目(カラム)とリレーションを設定すればできると書いてあったので、今度試してみます。
本の中で、リソース系が複雑になりやすいこと、リソース系かどうかは、テーブル名の後ろに「〜する」を足して不自然かどうかで判断することを学びました。たとえば、注文テーブルと商品テーブルがあった時にそれぞれ「〜する」足すと、注文「する」、商品「する」となり、後者の商品テーブルがリソース系とわかります。本では、テーブル設計は、リソース系は細かく分解した後、項目(カラム)とリレーションを設定すればできると書いてあったので、今度試してみます。
Stimulusを使ってみた
菅野
Rails7に標準で組み込まれているStimulusを使ってみました。HTMLに直接data-controller属性を追加するだけで、JavaScriptの振る舞いを実装でき、直感的で使いやすいと感じました。ひとつひとつのコントローラーごとに機能を書いて管理できるのでコードの管理がしやすくなります。今回、画像のプレビュー機能を作成してみましたがかなり簡単に実装できました。
Turboを使ってTODO機能を作ってみた
石崎
Rails7から標準で組み込まれたTurboを使ってみました。Turbo stream という、画面の中で2つ以上のコンテンツを画面遷移無しで更新できる機能を使い、実際に実装してみることで、「こういう時に使うと良さそうだ」という感覚を掴むことが出来ました。
RailsでSPA風TODOアプリ作ってみた
熊谷
Rails標準の機能であるTurboFrames/TurboStreamsを使ってSPA風のTODOアプリを作成しました。自分好みのUIでタスク管理アプリを作成して、今後、業務でも利用したいなと思っています。なので、Basic認証や二要素認証を入れてセキュリティ対策を行うことが今後の課題です。ストレッチとしてMarkDownが使えるように実装することでより良いものにできそうです。
個人フットサルの予約システム作ってみた
下村
個人フットサルのイベントを不定期で開いていきたいという友人にヒアリングしながらフットサルの予約システムを作りました。今のところ会員予約・ゲスト予約をできるだけのシステムですが、fly.ioにstaging, productionを作成してデプロイ手順を考えたり、メールの配信サービスを選定したりと1から自分で色々考えないといけないことが勉強になりました。イベントの開催とそのフィードバックでシステムも改善していけれたらと思います。
今回、「一番グッときた人」への投票は、「個人フットサルの予約システム作ってみた」を発表した23年入社の若手プログラマ・下村が制作したアプリを使って行いました。
今回の会を主催した野上の、「AIによるコードレビューを試してみる / 社内コミュニケーションツールの改善」の発表が最多得点を獲得し、「ナイスチャレンジ!」部門1位を、先ほど紹介した下村が獲得しています。
若手からベテランまで試す技術や内容がさまざまで、興味関心の多様さが現れていたのが印象的でした。
改めて皆さん、発表お疲れ様でした!