はじめに
これまでプログラミングで制作してきたものをポートフォリオとしてまとめてみました。参考になれば幸いです。
プログラミング歴
制作物の紹介の前に、自分のプログラミング歴について軽く説明します。
プログラミングを勉強し始めたのは高校に入ってからで、趣味の一つとして始めました。
最初に学んだプログラミング言語はJavaです。目標はゲーム開発でしたが早々に諦め、ちょうどJavaで開発できたAndroidアプリを作って遊んでいました。機械学習にも興味があったので、技術書を買ってお手本通りにプログラムを組んだりしていました。この時にPythonやCにも軽く触れました。
大学でも似たような感じでプログラミングを行っていました。このブログに制作記録を残しているものもあります。また、情報系の学科だったので授業でPythonやC, Javaを学んだり、実習としてUnityやAWSを利用したグループ開発などを行ったりもしました。
1. 英語学習用Androidアプリ
高校の頃に制作しました。使用言語はJavaです。開発環境にはAndroid Studioを利用しました。
一問一答型の簡単な英文クイズができるAndroidアプリケーションです。自分の英語学習に使おうと思い制作しました。
メイン画面では、RecyclerViewを使用して複数の問題をリスト選択できるようになっています。リストの一項目は問題データのテキストファイル1つに対応しています。このため、後からテキストファイルを追加することで問題の数を増やすことも可能です。
かなり昔の制作物なので、最新版のAndroid Studioで開いてみるとGradleのバージョンアップやAndroidxへの対応などが必要で、ビルドするだけでかなり大変でした。無事ビルドが成功したものは、細かい修正等を加えてGithubに公開しました。↓
mitaka1962/studyEngApp (GitHub)
2. 自作ブログ
このブログのことです。大学に入ってから制作しました。使用言語はHTML, CSS, PHPです。
日記執筆やプログラミングの情報発信のために制作しました。ブログサービスを利用すると広告などが付いて見栄えが悪いので、一から自分で作ることにしました。
記事の一覧表示やサイドバーのタグ分類、日付分類等はPHPとSQLiteを使って実装しました。このため、新しい記事を追加してもデータベースにタイトルやタグなどを登録さえすれば、ページ全体が自動的に更新されるようになっています。
3. 太宰治風文章生成モデル
大学の頃に制作しました。使用言語はPythonです。機械学習ライブラリとしてPyTorchを使用しています。
RNN(リカレントニューラルネットワーク)に太宰治の小説を学習させて、太宰風の文章を生成させるという試みです。ニューラルネットワークを利用した自然言語処理に関する本を読み、自分でも何か作ってみようと思ったので制作しました。RNNモデルの基本設計に関してはその本を参考にしつつ、学習結果向上のためいくつか改良を加えました。さらに、ニューラルネットワークの実装をより簡略に行うためにPyTorchを使用しました。
学習データに関しても、青空文庫で公開されている太宰治の小説のWebスクレイピングによる収集や、収集したデータの整形・前処理などをPythonによって実装しました。このあたりの制作過程の詳細や学習結果はブログでつづっています。↓
GitHubでも公開済みです。GPUを使うためにGoogle Colaboratory上で開発したので、Jupyter Notebook形式になっています。↓
mitaka1962/dazai-text-generation (GitHub)
4. Gray-Scottモデルの可視化
大学の頃に制作しました。使用言語はJavaScriptです。レンダリングにはWebGL2を使用しました。
人工生命関連の本で知った「反応拡散方程式」というものが面白かったので、その一種であるGray-Scottモデルを可視化してみました。参考にした本ではPythonで実装されていましたが、ブログでの公開を考えてJavaScriptとCanvasを使って実装しました。また、描画処理の負荷を軽減するためや、3D風に見せるためにWebGL2を使った改良も行いました。
こちらもブログで制作物やソースコードの解説を公開しています。↓
GitHubでも公開済みです。↓
mitaka1962/gray-scott-model (GitHub)
5. ノベルゲーム制作(未完成)
大学の頃にUnityを利用して制作していました。Unityなので使用言語はC#です。
UIやスキップ機能、オート機能などの基本的な機能を1から実装しました。BGMの変更やSEの再生、背景の変更による場面転換といった演出を可能にするために、テキストファイル上で演出効果を指示できるような簡易的なスクリプトも実装しました。
...
「もっと気を付けないとな……」
そうして、また注意深く歩き始める。
##bgmFadeout // bgmのフェードアウト
##fadeinBg bg2 // 背景をbg2へ変更
##bgmFadein セドナ // bgmとして「セドナ」を再生
23歳の俺は、紺地に淡い白が点々とした紺絣(こんがすり)の着物に灰色の袴をはいて、そんな荒っぽい浜辺を歩いていた。
頭には東京から持ってきていた大学の制帽をかぶり、朝の日差しを避けている。
...
プログラミングの他、テキストやイラストの作成、フリー音源集めなどやることが多かったので第1章を作ったところで力尽きました。基本的な機能は出来上がっているので、いずれまた続きを作りたいです。
スマホアプリとして作っていましたが、今回WebGL版でビルドして公開してみました。(おそらくPCのみで実行可能です)※音が出ます!↓
UnityプロジェクトはGithubに公開しました。↓
mitaka1962/game_watatsumi (GitHub)
6. 授業制作物
その他、大学の授業内で制作したものです。グループで作ったものが多いです。
Javaで実装した簡易ビデオレンタルシステム
Pythonで実装した心霊写真自動生成器
Unityで制作したARシューティングゲーム
AWSを利用した遠隔着席検知システム