Works
Secrethome2
個人用の動画管理アプリです。動画をアップロードして、サムネ、タイトル、概要、タグを設定することができます。
YoutubeのようなUIになっており、動画一覧の表示やタグでの絞り込みを行うことができます。
基本的にはNext.jsのServer Component、Server Action、Route Handlersを使用しているためフロント・バックエンドは1つのパッケージになっていますが、アップロードした動画や画像の変換処理はRust製の独立したバックエンドで行っています。アップロードした動画はHLS形式に変換しています。

Secrethome2の動画一覧画面
再生ボタンやシークバーなどの動画コントローラは独自に実装しています。このポートフォリオでも同様のコントローラを使用しています。

Secrethome2の動画コントローラ
フォームには、Headless FormライブラリのConformを使用しています。ReactのServer Actionを使用しており、クライアント・サーバーの両サイドでZosスキーマによるバリデーションを行っています。

Secrethome2の動画アップロードフォーム

Secrethome2のタグ管理画面
H8/3069F エミュレータ
宇部高専の実習で1~5年にわたって使用したマイコンである、H8/3069Fのエミュレータを作成しました。 高専3年次に趣味で開発を始め、5年次からは卒業研究として開発を行いました。
実機用にコンパイルされたLEFファイルを読み込み、実行することができます。
主要なCPU命令はほぼ全て実装されており、各命令の動作クロックも計算して20MHzの処理速度も99%以上の精度で再現しています。
また、割り込みコントローラや8bitタイマも実装しており、授業で学生が作成したプログラムの多くを実行することができます。
実習キットシミュレータ
宇部高専の実習で1~5年にわたって使用する「実習キット」のシミュレータを作成しました。 高専の卒業研究として開発を行いました。
実習キットとは、H8/3069FにLED、7 Segment LED、プッシュスイッチ、トグルスイッチ、モータなどのモジュールが接続された、宇部高専の実習用オリジナルキットです。
このシミュレータでは各モジュールを再現して実装し、GUIで表示や操作を可能にしています。子プロセスとしてH8/3069F エミュレータを実行し、ソケット通信でI/Oポートの状態をやりとりしています。
Cubener2
MinecraftをUnityで簡単に再現したゲームで、VRに対応しています。高専3、4年次の高専祭で展示しました。
3次元移動、ブロックの設置・破壊ができ、パーリンノイズを使用して地形が生成されるようになっています。

Cubener2のスクリーンショット
クラスde Eco ウォッチ
2024年の高専プロコンで課題部門に出場し、製作したアプリケーションです。 3人のチームで、UIデザイン担当、メインのプログラム担当、センサー部分のプログラムや資料製作担当に分担して開発を行いました。 私はメインのプログラム担当として、フロントエンド、バックエンドの開発を行いました。
このアプリは、小・中学校において二酸化炭素削減に関する教育用アプリとして開発しました。Raspberry Piにモニタとセンサをつけたクラス設置用端末を用意し、人感センサ、照度センサ、温湿度センサで照明やエアコンの消し忘れを検知します。
照明やエアコンを適切に使用できているかどうかをポイントとして生徒にフィードバックすることで、生徒に節電を意識させるというコンセプトになっています。
クラス設置用端末の他にも、生徒や教員が記録を確認するためのWebアプリも開発しました。

システム構成図

クラス設置用端末の画面
Other
Minecraft Mod開発
Modとは、Minecraftに対して規約の範囲内でシステム改変やコンテンツの追加を行うプログラムで、Javaで開発されています。
GTNHというMod Packを開発している海外のコミュニティがあり、100個以上のメンテナンスされなくなったModがフォーク・メンテナンスされています。
これらのうち、いくつかのModに対してコンテンツ追加やバグ修正といった貢献をしており、これまでに40個のPull Requestを作成してマージされました。
現在は「Contributor」としてコミュニティに所属しており、公式DiscordサーバーやGitHubでコミュニケーションを取りながら開発をしています。