卒業論文を終え、どうしてもやりたくて時間がとれなかったJava製ロールプレイングゲームエンジンWWAのJavaScriptの移植に再度着手することにしました。

下記の3プロジェクトをほぼ1人で遂行しました。

  • WWA Wing(WWAのJavaScript環境への移植)
  • WWA Loader(バイナリ形式WWAマップデータからデータのロード, JavaScriptのオブジェクトとして結果を返す)
  • WWA Phoenix(従来のWWAのHTMLタグをWWA Wingのタグに置換)

WWA Wing

Javaアプレットで動作するロールプレイングゲーム実行環境World Wide AdventureのJavaScript 版の実行環境です。 近年、非HTTPSなWebサイトでJavaアプレットを実行するには、実行を許可するサイト一覧である「例外リスト」への追加が必要になり、WWA本来の「サイトにアクセスしてすぐ遊べる」という特徴が失われたために開発を開始しました。

開発途中でWWAの公式サイトの公認を得ており、現在においては公式サイトのWWAもWWA Wingでの動作に対応しています。 また、ゲーム投稿サイトPLiCy (外部サイト) を利用することで、Webサイトを持たずにWWAを設置することができるようになっています。

公式サイトでの配布物では、ローカル環境でサーバを建てて、ゲームのテストを可能にするプログラム「WWA Debugger」(Aruneko氏による)と、 原作からのWWA作成ツール、およびWWALoaderが同梱され、それだけでWWAの開発が可能となっています。しかし、開発ツールはWindowsでのみしか動作しないため、作成ツールのマルチプラットフォーム化が今後の課題となっています。

2018年~2019年には、PLiCyさんの協力のもと、セーブデータの保存の永続化・複数化などの機能をリリースすることができました。

タイトルWWA Wing ( 発表当初「World Wide Adventure on JavaScript」)
作者WWA Wing Team (まつゆき, [Aruneko](https://www.aruneko.net), [Aokashi](http://aokashi.net), [ヒラリラー](http://hirarira.net))
ソースコードhttps://github.com/WWAWing/WWAWing
開発言語TypeScript, JavaScript, CSS, HTML
使用ライブラリpackage.json を参照
ライセンスMIT License
開発期間2015年2月3日〜現在

WWA Loader

WWAのマップデータ(バイナリ)を解析するJavaScriptプログラムです。 WWA Wingで必要になるため作成を開始しました。

開発当初は、基本的にWeb Workerとして呼び出すことを前提としているプログラムでしたが、多くのブラウザで直接本体に組み込んだ方が動作が速くなることがわかったため、 現在は webpack によって WWA Wing 本体と結合されて動くようになっています。他の npm で開発されている JavaScript のプログラムと一体的に動作させることも可能です (2021年2月現在、ブラウザに限る。 nodeなどのランタイムで動作させることも実現できるか検討中)。

マップデータファイル名を与えると、そのマップデータファイル名を XMLHttpRequest で取得し、解析結果をJavaScriptのオブジェクト として返します。

タイトルWWA Loader
作者WWA Wing Team (まつゆき, Aruneko, Aokashi, ヒラリラー)
ソースコードhttps://github.com/WWAWing/WWAWing/tree/develop/packages/loader
開発言語TypeScript, JavaScript
ライセンスMIT License
開発期間2013年4月〜現在

WWA Phoenix

WWA Wingは、WWA設置サイトの管理者が対応するまで、その効力を発さないという欠点があります。 ですので、既存のWWAを遊ぼうとした時には相変わらずJava版となってしまいます。 そこで、従来のWWAをWWA Wing相当の実行環境に置き換えるブックマークレットとして、WWA Phoenixを開発しました。

タイトルWWA Phoenix (開発当初「JumpGate」)
作者WWA Wing Team (まつゆき)
ソースコードhttps://wwaphoenix.github.io/
開発言語JavaScript
ライセンスCreative Commons CC-BY 4.0
開発期間2013年4月〜現在


大学に入って所属した研究室で卒業論文を書きました。

あるシステムを構築しました。技術的にはだいたいこんな具合。

  • Java。サーブレット。
  • Spring Framework を用いた Model-View-Controller の構成。
  • サーバサイドにある複雑な情報を予め組み立ておきます。
  • クライアントからのリクエストに応じて、JSON形式で組み立てた情報を返します。(Web API)
  • 必要な情報はMySQL上に保存。JavaのオブジェクトとSQLの対応(O/Rマッピング)にはHibernateを用いました。


2014年8月に行われた、「セキュリティ・キャンプ全国大会 2014 (Web・セキュリティ・クラス)に参加しました。

Webクラスとしては、主にContent Security Policyなどの任意のJavaScript実行を 防ぐ仕組みを学びました。実習では、実習内用の脆弱なWebアプリケーションの脆弱性を探し、脆弱性とその対策をまとめてチームで発表しました。

この実習用のWebアプリケーションは、実習で貸し出されたFirefox OS端末(Flame)から使われる想定となっていました。スマートフォン上におけるHTML/JavaScriptの取り扱いがとても新鮮でした。

この他、他のクラスの方と合同で「セキュアな企業」についてディスカッションしたり、CTF(Capture the Flag)という競技で戦ったりしました。

素晴らしい方々と出会える貴重な機会でしたが、人とコミュニケーションを取るのが苦手であった当時の私は、折角の機会を逃す傾向にあったと思います。

副産物「進捗Clicker」

当時注目されていた、スマートフォン向けOSである Firefox OS のアプリケーションを作成する事前課題が出されたため、作成したゲームです。

タイトル進捗Clicker
作者rmn.(現: まつゆき)
ソースコードhttps://github.com/matsuyuki-a/progress-clicker
開発言語JavaScript, HTML, CSS
使用ライブラリBuilding-Blocks
ライセンスApache License 2.0
開発期間2014年6月-2014年8月

2014-08-12 22.02.44



2013年の大学学園祭では、各部員が作成したゲームからスコアサーバにスコアを 送信して、ランキングを表示するシステムを作成しました。

展示では、スコアサーバは普通のWindowsマシンでした。常時起動していて、 画面には現在のスコアランキングが表示されていました。各端末からのリクエストを受け取ると ゲームのIDとスコアを適切な順位の場所に挿入し、画面の更新を行っていました。

当時はなぜか生のTCP/IPを扱っていましたが、のちに普通にHTTPでやりとりして、 サーバは普通のWebサーバで、ランキングのデータ保持は関係データベースを使った方が 簡単にできると感じました。そして、2015年度の学園祭では後輩がそれを実装しました (PHP+MySQLだったようです)。

データ

タイトルERS( E. Ranking System )
作者rmn.(現: まつゆき)
ソースコード公開準備中
開発言語C++ (Microsoft Visual C++ 2012 Express)
使用ライブラリDXライブラリ
開発期間2013年8月-2013年10月


2012年の大学学園祭では、部員のゲームを起動するプログラムを作成しました。 Windowsアプリケーションをプロセス処理によって起動し、起動中ランチャは最小化されるようになっています。

データ

タイトルOnly One Launcher
作者rmn.(現: まつゆき)
ソースコード非公開
開発言語C++ (Microsoft Visual C++ 2012 Express)
使用ライブラリDXライブラリ
開発期間2012年8月-2012年12月


Point P

大学の授業向けにアクションゲームを作成しました。物理演算を行うJavaScriptライブラリの 「Box2DJS」を用いました。HTML Canvas上で動作します。

また、ゲームをプレイしながらプレゼンテーションを行う新しい取り組みをしました。

現在でもプレイできます

タイトル線分ABを点Pがノリノリで動くゲーム
作者rmn.(現: まつゆき)
ソースコードhttps://github.com/matsuyuki-a/matsuyuki.dev/tree/master/public/trivial/pointp
開発言語JavaScript, HTML
使用ライブラリBox2DJS, Prototype.js, ExplorerCanvas
ライセンスApache License 2.0
開発期間2012年11月頃


2012年から、データ入力のアルバイトを始めました。

といっても、実際には、Excelでかなり複雑な関数かVBAマクロを組むなど、 プログラミングの要素がとても強かったと言えると思います。

その他、地形データを扱うためにXMLファイルを処理したり、GISソフトウェアを 使って地図上に情報を描画したり、SQL方言でその情報を絞り込んだりといった 作業を行いました。



2012年の頭一発目は、サーブレット!

当時レンタルしていたチャットサービスには、入室者の情報を取得するためのAPIが存在していました。 具体的には、XML形式で、入室中のユーザ数とその一覧を取得することができました。

チャットに人を集めるべく、現在の入室者情報を1時間おきにAPIから取得、TwitterでつぶやくシステムをJavaで書き、 Google App Engine 上で動かしていました。

また、2013年には、Twitter API のバージョンが 1.1 になったため、Twitter4j のアップデートを適用しました。

(現在は、アカウント・サービスともに公開を終了しています。)

データ

タイトルAcari (Advanced Chat Anouncer Rmn Imagined)
作者rmn.(現: まつゆき)
ソースコード公開調整中
開発言語Java
使用ライブラリTwitter4j
プラットフォームGoogle App Engine
開発期間2011年10月6日-2012年1月1日(下準備を含む)
公開期間2012年1月1日-2013年7月6日


WWAを参考に、大学で入ったプログラミング関係のサークルで、予めテキスト形式で記述されたマップデータを読み込むことで動作する 2次元ロールプレイングゲームのエンジンをMicrosoft Visual C++ 2010とDXライブラリを用いて開発しました。 このプログラムは、Windows上のデスクトップアプリケーションとして作成されました。

友人が担当していた戦闘シーン実行プログラミングと組み、2011年度の学園祭で展示されました。

データ

タイトルシンプルRPG
作者rmn.(現: まつゆき)、ごまごま
ソースコード非公開
開発言語C++ (Microsoft Visual C++ 2010 Express)
使用ライブラリDXライブラリ
開発期間2011年8月15日-2011年12月18日


最初のプログラミングの授業

大学では情報科学を学ぶ学科に進みました。

入学初年度はC言語の基礎を勉強しました。既に、TOWN でPerl によるプログラミングを、 某所でJava によるプログラミングを勉強していたため、そこそこ順調に勉強は進んでいきました。

この授業では、Webアプリケーション上である問題が与えられ、その問題を解くためのプログラムをサーバに提出して正誤が判定されるシステムが用いられていました。 授業で使用されていたシステムの全ての問題 を解いたことが自信となり、その後の技術向上につながったものだと考えています。

Aizu Online Judge

また、さらなる技術向上を目指し、競技プログラミングへの挑戦を始めました。具体的には、Aizu Online Judge(以下AOJ) にある問題を解き進めるなど。

(でも、ちょっとアルゴリズムを工夫しないといけない問題はほとんど解けないのでした。)