作品紹介
私が作ったものを紹介します。主にソフトウェアと音楽です。
Music
公開した楽曲の一部を紹介します。
SoundCloud
niconico
ものすごいコンソールエラーが出るため動画枠は現在非表示にしています。 リンク先を是非ご覧ください。
Application Development
一部の制作物はタイトルがリンクになっておりGitHubリポジトリに飛べます。制作物を公開するサイトとして、SvelteKitを用いて2022年に作成しました。 ブログや旅行記を公開するサイトとしてAstroで2023年に一度作り直し、さらに2025年現在再構成の途中です。
再構成の上で、自分の趣味をさらに充実させるためのプロジェクトを進めています。 そのプロジェクトのフロントとしてこのサイトを構成するつもりです。
自身のウェブサイト制作で得たノウハウを活かして部活のウェブサイトを作りました。 Astroで制作し、NginxのDockerコンテナを用いて公開しています。 部員が自由に記事を執筆・公開できる環境を整えることを意識して現在も改良中です。 また後続の部員が開発できるようにコードの品質に気を配っています。 元部長が実機サーバーとDNSの環境を整えてくれたため非常にスムーズに開発できました。感謝。
サーバーがあるのでSSRやAPIサーバーの開発も試してみました。 Pythonを用いていましたが、Rustで作り直しました。 またSSR向けのDocker環境を作ったりしています。
家で飼っているうさぎのお世話を管理するための掲示板ウェブアプリケーションです。
餌やりや水の入れ替え、散歩等の時刻を記録でき、一覧を見返すことができます。 スマホ操作に疎い人でも使いやすいデザインに拘りました。 クライアントである家族に開発中のものを見てもらって機能改善を繰り返しています。
2023年にUIを大幅に刷新し、使用フレームワークをVueからSvelteに変更しました。 またこのときにSASSの利用をやめました。これは標準化された規格に準拠すべきと考えたからです。
うさぎさんは亡くなってしまいましたが、思い出の一つとして残しています。 フレームワークのアップデートにも追従しています。
PDF文書配布用ウェブサイト・アプリケーションです。
私がLaTeXで作成したPDF等の資産を知人等の限られた範囲で、私と閲覧者の両方ができるだけ簡便に使えるために2021年に制作したウェブサイトです。 二種類のダウンロード方法のサポート、文書へのリクエスト機能、ユーザー個人のお気に入りファイル管理機能等を持っています。
リクエストの管理コンソールも用意しました。Firebaseを管理者権限でサーバーで操作し、全体のリクエストを一元的に管理できます。UIはVueで構築し、サーバーはExpressを用いてREST APIを構築しました。
一つ下に書いているTako Boardの次にSvelteKitに移行しました。 また同じくSASSの利用をやめました。 このアップデートでダークモードに対応し、リクエストにLaTeX記法が使えるようになりました。
TinderライクなUIで機械学習を用いたアニメのマッチングアプリです。
初めてのハッカソン~オンライン開発合宿vol.1~(サポーターズ様、2021年3月開催)にて制作、努力賞を頂きました。
私の担当箇所はdocker開発環境の構築とAPIサーバー開発です。 初めてのチーム開発となり、異なる環境に合わせた開発環境構築、サーバーの基礎的な知識、リーダブルなコードへの意識など、現在の私を支える多くの知見を得ました。
またその後に参加した展示イベントで追加の開発の機会を得たため、AWS-EC2とNginxを用いたバックエンドサーバーのデプロイを行いました。
Wikipediaクローラです。
MANDARA10という日本地図塗り分けアプリを使って鉄道の設置年を使った図を作成するために2021年末に書いたスクリプトです。 自治体のページから設置された鉄道駅を順に取得していきデータを取得します。 スクレイピング独特の例外処理や効率的なログのとり方を工夫しました。
卒業論文が終わって余裕ができたので、境界要素法による数値計算をRustで試してみたものです。
Rust製ゲームエンジンBevyを用いたアクションパズルゲームです。
小学生の頃の妄想を今なら作れるのではないかと思い、就職活動が始まるころに作ってみました。 ブロックを動かして転がる玉をゴールへ導きます。 様々なギミックがあるのでそれを利用していきます。
物体間の物理演算を自分で実装しました。それなりに動くものができたので満足です。
現在は統一性のある素材画像を貼り付けたり、物理演算の改良をするなどして作り直しています。
PC部に所属していた高校生のとき文化祭向けに作ったシューティングゲームであるFailOver2をC++で全面的に書き直したものです。 Block Golfとほぼ同時期に作りました。
とあるインターンに参加し、C++でゲームを作る必要を感じたのもあり、題材として適当なこのゲームを選んでやってみました。 プログラミングへの考え方が当時と全く変わっており、高い汎用性とコードの可読性を両立したエンジンを書くことができました。 7年以上の時を経て自分の成長を感じることができました。
完全に遊びで、大阪万博2025の公式キャラクター(当時名称不定)をLaTeXのライブラリTikZで描いたものです。
Rhythm Game(仮)
Rust製ゲームエンジンBevyを用いたリズムゲームです。
リズムゲームの面白さについて考え、人間は根本的にリズムを取って遊ぶのが好きだと考えて、パターンを取り切ると演出と加点が付くシステムを考えました。 Rustの機能をうまくつかって非常に汎用性の高いシンプルなエンジンを構築できました。 デバッグ機能などの開発者向けの機能を作ることを試しています。 また、譜面制作機能も用意しています。
ゲーム本体とは関係ない部分で、デバッグ機能を充実させ、開発をスムーズに進められるように設計を考えてみました。
コマンドラインでメモを管理できるツールです。
一通りの編集やファイルの作成・消去操作の他、現在のディレクトリにコピーしたり、簡易なHTTPサーバーを立ててマークダウンをプレビューしたりできます。
Cargoのコマンドとして crates.io で公開しているので誰でもインストールできます。 使い勝手はあまりよくないのでちょっとなんとかしたいところですがあまり顧みられていません。
頭部伝達関数と音源を畳み込んで3Dオーディオを作る、というのを以前からやってみたいと考えていました。 ただ、どうせならグリグリと配置を切り替えたりその場で音が合成できたりするほうが面白いと思い、PythonやRustで書こうとしつつも放置していました。
なんやかんやでJavaScript自体にかなり親しんできたので、以前から気になっていたWebAudioAPIやCanvasの利用を試み、これらを組み合わせて動的なインターフェイスを実現できました。
今回はフレームワークは未使用で、Typescriptだけで頑張ってみました。バイナリやWebAudioの扱い等でまだまだ未知の部分が多いですが、それなりに上手く設計できたと思います。 リポジトリに使い方を記載したので是非試してみてください。
完全に余談ですが私が開発中に使用した音源はイカちゃんのマンメンミです。