プログラミングによって、コンテストやハッカソンに出場することで、人との繋がりをつくることができ、私に生きがいを与えてくれました。このような背景からプログラミングを通して「人」と「人」を繋ぎたいという思いと将来プログラミングを教える事にも挑戦したいという目標から、スキル共有の円滑化と、学習者同士が技術知識を共有し合える環境の実現を目指したアプリケーションを作成しました。アプリの名前は 「CodeBridge(コードブリッジ)」 です。 その由来は、“プログラミング(コード)を通じて、人と人とをつなぐ架け橋になりたい” という想いから名付けました。
運用優先順位:GitHub共有+チャット+AI分類の共同開発 < CMS+RAG
このアプリはフロントエンド・バックエンド・リアルタイム通信の3層構成で開発しています。 それぞれの役割に応じて、以下のようにツールを分けて使用しました。
使用した技術
- フロントエンド:React
- バックエンド:REST Framework、Express.js
- データベース:SQLite(Django側)、MongoDB(Express/Socket側)
- リアルタイム通信:Socket.io(Express)
- 認証:JWT(JSON Web Token)
- AIモデル:PyTorch(BERTによる文章分類)
機能の紹介
01ユーザー認証(JWT)
アカウント作成・ログイン機能は、トークンベースで実装しました。 JWT(JSON Web Token)を用いることで、フロントエンドとバックエンド間で安全に認証情報をやり取りし、ログイン状態を維持できるようにしています。
02ルーム機能
ルーム名とパスワードを入力することで、新しいルームを作成したり、既存のルームに参加できます。 ハッカソンやチーム開発のようなグループ単位での情報共有を想定した設計です。
03リポジトリ登録・カテゴリ分け
GitHubリポジトリのURL、タイトル、概要、デモ動画をリポジトリデータとして登録できます。カテゴリを複数選択して紐づけることで、目的別に絞り込み表示も可能です。
04メッセージ投稿
ルーム内で投稿されたリポジトリにリアルタイムでメッセージの送受信ができます。送信されたメッセージは、他のユーザーに未読として通知が届きます。他のユーザーが対象のリポジトリデータの詳細画面を開いている場合は、未読通知は送られません。
05お気に入り
リポジトリを「お気に入り」に追加・解除することができます。 追加したリポジトリは、専用の「お気に入りページ」で確認でき、そこからメッセージのやり取りも可能です。お気に入りに登録すると入室しているルームに関係なくリポジトリデータが確認できます。お気に入り登録のリポジトリのメッセージや通知もリアルタイムで送受信ができます。
<追加デモ>お気に入りにリポジトリデータを追加した場合の、メッセージや通知の送信と受信についての動作のデモ動画です。
06BETA版:AI検索機能
自然文で「作りたいアプリの概要」を入力すると、類似する自作リポジトリを自動提案します。現在は5クラス分類のシンプルなモデルで試作しており、アプリのイメージのため、少量データで学習をしたため推論に過学習が起きています。運用をする際には、LLM(API) を用いた分類/類似検索へ移行し、運用で蓄積した質問・回答ログ(同意ベース)を活用して再学習、必要に応じてクラス拡張を行います。
目標は、学習者が作りたいものベースで学習ができることです。