「お出かけ」をテーマに12組が開発! 社内ハッカソンを開催しました

「お出かけ」をテーマに社内全体から参加者を募ったハッカソンを2/7(金)に開催しました。12組14名が制作したアプリや機能を、アイデア・完成度・使ってみたい度の3軸で評価し合った今回。制作された作品を、発表内容の書き起こしと共にランキング形式でご紹介します。発表時の雰囲気を感じながらご覧ください。
目次
【1位】Kamal版Heroku「Kamaly」

今回は「お出かけを楽しくする」をテーマに、Kamal版Herokuを開発しました。(アプリケーションの画面を開いて)最初にデプロイボタンをポチッと押すと、はい、バックグラウンドでデプロイが始まりました。
そもそも、お出かけでどこに行くかって話ですよね。瀬戸にいるメンバーは社外のハッカソンによくお出かけしていますし、来月はソニックガーデンキャンプにメンターとして行く人もいる。そういうお出かけで心配なのは、「本番環境をちゃんと作れるか」「添付ファイルが永続化できずにデプロイのたびに消えたりしないか」「お金がどれくらいかかるのか」みたいなことです。
Rails のデプロイ先としては Herokuを始めとして Render、Fly.ioなどいろいろありますが、結局はシンプルな操作でウェブだけで完結し、金額を気にしなくていい環境が理想ですよね。それを実現するためには、Herokuを自作すればいいんです。今回作ったKamalyは設定項目が三つだけ。ウェブで完結し、ボタン一発で無料です。まあ、実際のお金は私が払っていますが。
Kamalyの設定はアプリ名とGitHubのリポジトリを選んで、Railsマスターキーを入れるだけ。技術的にはRails、Kamal、Docker in Docker、それと tailwindcssとDaisyUIのbeta版も使いました。
説明している間にさっきスタートしたデプロイが完了して、「Hello Kamaly!!」と表示されました。バッチリですね。画像は永続的に保持されますし、JS・CSSをコンパイルして複雑なフロントエンドを構築する事も可能ですが、最近の Rails らしく No Build で作った方がデプロイは早いです。ハッカソン用ということでデータベースはSQLiteに限定していますが、PostgreSQLも技術的には可能です。環境変数も今のところ対応してないのですが、Rails ならば credentialsを使って環境ごとの値を管理できます。Kamal は Dockerfileがあればデプロイできるので、原理的には Rails 以外も対応できるはずです。
Kamalyを使ってお出かけハッカソンの心配事をなくして、楽しんできてください。以上です。
そもそも、お出かけでどこに行くかって話ですよね。瀬戸にいるメンバーは社外のハッカソンによくお出かけしていますし、来月はソニックガーデンキャンプにメンターとして行く人もいる。そういうお出かけで心配なのは、「本番環境をちゃんと作れるか」「添付ファイルが永続化できずにデプロイのたびに消えたりしないか」「お金がどれくらいかかるのか」みたいなことです。
Rails のデプロイ先としては Herokuを始めとして Render、Fly.ioなどいろいろありますが、結局はシンプルな操作でウェブだけで完結し、金額を気にしなくていい環境が理想ですよね。それを実現するためには、Herokuを自作すればいいんです。今回作ったKamalyは設定項目が三つだけ。ウェブで完結し、ボタン一発で無料です。まあ、実際のお金は私が払っていますが。
Kamalyの設定はアプリ名とGitHubのリポジトリを選んで、Railsマスターキーを入れるだけ。技術的にはRails、Kamal、Docker in Docker、それと tailwindcssとDaisyUIのbeta版も使いました。
説明している間にさっきスタートしたデプロイが完了して、「Hello Kamaly!!」と表示されました。バッチリですね。画像は永続的に保持されますし、JS・CSSをコンパイルして複雑なフロントエンドを構築する事も可能ですが、最近の Rails らしく No Build で作った方がデプロイは早いです。ハッカソン用ということでデータベースはSQLiteに限定していますが、PostgreSQLも技術的には可能です。環境変数も今のところ対応してないのですが、Rails ならば credentialsを使って環境ごとの値を管理できます。Kamal は Dockerfileがあればデプロイできるので、原理的には Rails 以外も対応できるはずです。
Kamalyを使ってお出かけハッカソンの心配事をなくして、楽しんできてください。以上です。
【2位】Attendar
チームメンバー:野上&田島

今回のテーマがお出かけなんですが、そもそもお出かけについて考えてみた時、自分はそんなに頻繁にどこかに出かけないし、お出かけ自体にもあんまり興味がないんですよ。旅行は行くんですけど、身近なお出かけしてないなって思ってて。周りでどんなイベントが起きているのかを知らないから、自分が興味ありそうなイベントあっても気づけないっていうのが問題かなと思いました。
それで、今回作ったのは、自分の周辺のイベントを某マッチングアプリみたいにスワイプしてカレンダーに登録できるアプリです。
それで、今回作ったのは、自分の周辺のイベントを某マッチングアプリみたいにスワイプしてカレンダーに登録できるアプリです。

最初にGoogleアカウントでログインしてもらい、自分の現在地の情報も許可してもらいます。僕は最近岡山に移動したので、岡山のイベントがここに表示されています。こんな感じで周辺でやっているイベントが出てくるので、これに参加したかったらスワイプして、興味なかったら反対にスワイプしたら消えます。いいね!側にスワイプすると、カレンダーにイベントの開催日が登録されます。
使用技術としては、GoogleのログインにはGoogle OAuthを使って、Google Geocoding APIで現在位置の取得をして、グーグルCustom Search APIで周りのイベントを取ってきて、最後にGoogle Calender APIでカレンダーに登録しています。
感想としては、今回入社1年目の僕とベテランプログラマのせーじさん(野上)で一緒に開発をして、エンジニアの生産性が人によって10倍どころか全然違うんだなっていうのを身をもって体験しました。あと初めてAPIをつなげて触ったんですけど、今後の開発の幅が広がりそうで良かったなと思いました。以上です。
使用技術としては、GoogleのログインにはGoogle OAuthを使って、Google Geocoding APIで現在位置の取得をして、グーグルCustom Search APIで周りのイベントを取ってきて、最後にGoogle Calender APIでカレンダーに登録しています。
感想としては、今回入社1年目の僕とベテランプログラマのせーじさん(野上)で一緒に開発をして、エンジニアの生産性が人によって10倍どころか全然違うんだなっていうのを身をもって体験しました。あと初めてAPIをつなげて触ったんですけど、今後の開発の幅が広がりそうで良かったなと思いました。以上です。
【3位】いつでもどこでも相談できる旅行プランナー

今回は旅行サポートするエージェントを作りました。動機は、ゴールデンウィークに母親と二人で韓国旅行に行くことになったからです。でも韓国にはそんなに興味がなくて、何があるのかよくわからないし、計画を考えるのがめんどくさいなと思っていました。計画を立てるのも旅の楽しみの一つですが、相談できる人が欲しいと思って、いつでもどこでも相談できるエージェントを作りました。

さて、このエージェントを紹介しますね。
『こんにちは、旅行プランナーです。旅行プランの計画を手伝います。どこへ旅行に行きたいのですか?』
「岡山に一泊二日で旅行に行きたいです。」
『岡山旅行で一泊二日とのことですが、ご希望の宿泊日はありますか?』
「4月頃にどこかで行きたいですね。」
『4月頃に一泊二日で岡山旅行をご希望とのことですね。他に何かご用件ありますか?』
「旅行の計画を立てたいんですが、何かいい感じの場所とか教えてくれますか?」
こんな感じでこのエージェントと話しながら計画を立てることができます。
使っているのは、「Soul Machines」というサービスのデジタルヒューマンです。裏で動いているのは、GoogleのConversational Agentsというサービスで、ここでエージェントをそれぞれ定義しています。必要であればtoolsで定義したAPIのエンドポイントみたいなものを叩いて、いい感じに会話してくれる感じです。以上です。
『こんにちは、旅行プランナーです。旅行プランの計画を手伝います。どこへ旅行に行きたいのですか?』
「岡山に一泊二日で旅行に行きたいです。」
『岡山旅行で一泊二日とのことですが、ご希望の宿泊日はありますか?』
「4月頃にどこかで行きたいですね。」
『4月頃に一泊二日で岡山旅行をご希望とのことですね。他に何かご用件ありますか?』
「旅行の計画を立てたいんですが、何かいい感じの場所とか教えてくれますか?」
こんな感じでこのエージェントと話しながら計画を立てることができます。
使っているのは、「Soul Machines」というサービスのデジタルヒューマンです。裏で動いているのは、GoogleのConversational Agentsというサービスで、ここでエージェントをそれぞれ定義しています。必要であればtoolsで定義したAPIのエンドポイントみたいなものを叩いて、いい感じに会話してくれる感じです。以上です。
【4位】Deep Seek Travel To Rails

最初に思いついたのは観光スポットや飲食店の紹介でしたが、それではありきたりすぎると感じました。ただ移動するだけでなく、何かを探すこともお出かけの楽しみの一つだと思います。旅行を計画するときや新しい場所を探索すること…ウェブサイトを見たりするのもお出かけの一部ですね。Railsの巨大なコードベースは巨大な街みたいなものです。その巨大な街を観光できる「DeepSeek Travel To Rails」というアプリを作りました。Railsという街を自然言語で会話しながら、観光できます。
<デモタイム>例えば「Tell me about AcctiveSupport」と入力すると、関連情報を教えてくれる感じです。検索中に少し話すと、データを全部ベクトル化するとかなり時間がかかります。全ての情報は必要ないので、必要な部分だけベクトル化して検索できるようにしています。
使った技術は「DeepSeek R1」と「Ollama」というもので、これらは、世界で提供されているモデルをローカルで簡単に動かせるようにするものです。フロントエンドは「Streamlit」というツールを使っていて、とても使いやすいです。データベースはPostgreSQLを使っています。Deep Seekはローカルで動かせるので、気軽に使えて便利だと思います。以上です。
<デモタイム>例えば「Tell me about AcctiveSupport」と入力すると、関連情報を教えてくれる感じです。検索中に少し話すと、データを全部ベクトル化するとかなり時間がかかります。全ての情報は必要ないので、必要な部分だけベクトル化して検索できるようにしています。
使った技術は「DeepSeek R1」と「Ollama」というもので、これらは、世界で提供されているモデルをローカルで簡単に動かせるようにするものです。フロントエンドは「Streamlit」というツールを使っていて、とても使いやすいです。データベースはPostgreSQLを使っています。Deep Seekはローカルで動かせるので、気軽に使えて便利だと思います。以上です。
【5位】美術館の絵のAI解説

今回のテーマは「お出かけ」です。実は、直近で同僚のみっちゃんと美術館に遊びに行く予定がありまして、それをテーマに考えてみました。美術館にはよく行くんですが、解説を聞かないと作品がよく理解できないんですよね。ただ、音声ガイドを借りるとお金がかかるので、いつも「借りようかな、どうしようかな」と迷ってしまいます。
そこで、この問題を解決するために、「AIに解説してもらえばいいんじゃないか」と思いました。でも、小難しい解説はちょっと避けたいので、なるべく会話している感じで楽しく解説してもらいたいですよね。あと、個人的には、AIが美術作品を鑑賞しているという設定で、どれくらい内容について高度な会話ができるかも試してみたいと思いました。
そこで作ったのが、OpenAiの「太郎さん」とGeminiの「花子さん」を使ったアプリです。この二つのAIが会話する形で解説をしてくれるんです。
はい、じゃあデモをしますね。画像を登録して、その画像についてAIに話してもらいます。今回はこちらの画像を対象にしました。ちょっと時間がかかるので、お待ちくださいね。
そこで、この問題を解決するために、「AIに解説してもらえばいいんじゃないか」と思いました。でも、小難しい解説はちょっと避けたいので、なるべく会話している感じで楽しく解説してもらいたいですよね。あと、個人的には、AIが美術作品を鑑賞しているという設定で、どれくらい内容について高度な会話ができるかも試してみたいと思いました。
そこで作ったのが、OpenAiの「太郎さん」とGeminiの「花子さん」を使ったアプリです。この二つのAIが会話する形で解説をしてくれるんです。
はい、じゃあデモをしますね。画像を登録して、その画像についてAIに話してもらいます。今回はこちらの画像を対象にしました。ちょっと時間がかかるので、お待ちくださいね。

こんな感じで解説してもらいました。OpenAiが会話を生成して、Geminiがそれを受けてまた会話を返す、というラリー形式で進めています。本当は要約機能も作りたかったのですが、今回はそこまで行かなかったですね。音声も聞けるようにしていますが、うまくいっているかはちょっと自信がないです。AI系技術を使っていて、テキスト読み上げでText to speech APIと画像解析のためにVisionAPIを使いました。
感想としては、Geminiの1.5 Flashモデルを使ってみたのですが、エラーが出てしまって、モデルのバージョンを下げなければならなかったりと、完全には使い切れなかった感じがあります。ただ、AI同士の会話のラリーをして、精度の比較ができたのは個人的に楽しかったです。発表はこれで以上です。
感想としては、Geminiの1.5 Flashモデルを使ってみたのですが、エラーが出てしまって、モデルのバージョンを下げなければならなかったりと、完全には使い切れなかった感じがあります。ただ、AI同士の会話のラリーをして、精度の比較ができたのは個人的に楽しかったです。発表はこれで以上です。
ソニックガーデンでは、「『遊び』こそが成長につながる向上心を生み出す源泉になる」という考えのもと、毎月社内ハッカソンを開催しています。 皆さんもぜひプログラミングで遊んでみてはいかがでしょうか?
年2回開催している、弊社主催「ツクってアソぶハッカソン」へのご参加もお待ちしています!