プロジェクト
フリーランスプロジェクト及び趣味のプロジェクトの一覧
フリーランス
ライデン大学卒業論文の共同採点・播信のウェブアプリ
Nuxt/Vueで書いた卒業論文の播信・採点を共同で行うためのウェブアプリケーションです。 指導教員情報の入力・仮審査の透かし・成績通知書PDFの生成などといった論文播信における過程を自動化します。 もともとはライデン大学のソフトウェアエンジニアリングコースのために開発されましたが、そのプロトタイプは評価が高かったため、後さらに開発を依頼されました。
- Vue
- Nuxt
- Python
- Flask
- MongoDB
- JavaScript
- Pytest
- Reportlab
個人サイト(Laarman教授)
ライデン大学教授Alfons Laarmanの個人サイトです。Svelteで書かれ、SvelteKitで静的に生成されています。 Markdownファイルから生成されたニュース項目と、BibTexファイルから生成された出版物の概要が主な機能です。
- Svelte
- JavaScript
趣味・コース
LDPFUSE
LDPFUSEとは、ファイルシステムを完全にユーザー空間で動作するためのLinux FUSEに代わるものです。 C言語のヘッダオンリーライブラリであり、カスタムなファイルシステムの開発をより簡単にします。 その後、実際にファイルシステムを使うには LD_PRELOADのトリック(英語)を使います。プロセス内に埋め込まれるためコンテキストスイッチは不要で、普通のFUSEより格段にパフォーマンスが向上します。 詳しくはリポ自体をご覧ください。
- C
DBDライブゲーム情報
人気ゲームのデッド・バイ・デイライト(DBD)用のTwitch.tvの拡張機能です。現在のゲームに使われている技名とその説明を表示するインタラクティブなUIを視聴者に提供します。 拡張機能は、配信者用・モデレーター用・視聴者用の3つのオーバレイで成り立っています。Twitchによって検討され承認されましたが、多忙のため、開発を一旦中止します。
- React
- WebSocket
- ExpressJS
- TypeScript
CyberSpies
CyberSpiesとは、人気ゲームAmong Usに似ているようなゲームを現実世界で複数の人でプレイできるモバイル用のウェブアプリケーションです。 ゲームのロケーション(例:タスク、ミーティングルーム)を代表するNFCタグをWeb NFC APIを通じてスキャンしてプレイする感じです。 また、プレイヤー自身もNFCタグを肩につけ、ゲーム中に互いにスキャンするとインタラクションができます。 Svelteのフロントエンドでは、ロビーを作成したりQRコードで参加したり、ゲーム内情報を表示したり携帯電話のNFCスキャナーを使用したりすることができます。 ExpressJSバックエンドは、ウェブソケットを介してゲーム内の情報を全プレイヤーにリアルタイム同期させ、ゲーム内のタイマーを強制します。
- Svelte
- ExpressJS
- WebSockets
- JavaScript
ゲームボーイアドバンスエミュレーター
Rust言語で作ったゲームボーイアドバンスのエミュレーターです。まだ開発中でゲームを実行できませんが、Armv4t命令セットの多くの命令のデコード・実行はできます。
- Rust
サイドチャンネル分析用ECDSA実装
ChipWhisperer-Liteで公開鍵の生成・ 秘密鍵によるメッセージの署名のためのECDSAアルゴリズムの教育用の実装です。 サイドチャネルアタックの脆弱性がわざと含まれているため、サイドチャンネル分析の勉強のためになります。
- C
BoterBotTS
TypeScriptで書かれている、MongoDBを使ったモジュール式のDiscordボットで、機能は次のようです。 YouTube動画からサウンドトラックの保存、保存されたサウンドクリップをFFMPEGを通じて元と違うスピードやピッチで再生、友達による言葉を保存・表示、ロシアン・ルーレット (参加希望のユーザーがボットのメッセージにリアクションを残してから、1人がランダムで選ばれてチャンネルからキックされます。)
- TypeScript
- NodeJS
- MongoDB
- Mongoose
- FFMPEG
- Docker
CMinusコンパイラ
Rustで書かれた最小限のCライクな言語のコンパイラです。 デッドコード削除、演算子強度低減、ヌルシーケンス削除、定数畳み込みなどという様々な最適化が実装されています。
- Rust