これまでに私が作った主なソフトウェアを紹介します。公開可能なものはGitHubに置いています。

オリジナル

SolarPack

FreeBSDのportsシステムをSolarisに移植したもの。FreeBSDのportsのように、make を実行するだけでソースコードの取得・展開、ビルド、Solarisのソフトウェアパッケージを作成 することができるようにしたものです。所属研究室で多数のSolarisワークステーションを管理する 必要があり、オープンソースソフトウェアのコンパイル・インストール作業がめんどくさくなってきて 作り始めたもので、1999年頃から2003年頃まで開発し自ら使用していました。

当時はGitHubみたいなソフトウェア公開に適したサービスがなかったので、どうやって公開しようかなあ、 と思っているうちに、DebianパッケージがSolarisに対応し、公開のタイミングを逃してしまいました。 惜しいことをしたなあ、と、思っています。

GitHubで公開しています

chorusroom-cms

趣味で運用していたサイトのために自作した、静的HTMLページ生成システム。1998年頃から2005年頃まで 実際に使用していました。多言語のコンテンツ(日本語、英語、フランス語、ドイツ語、マジャール語、など) を扱う必要があったこと、比較的複雑な構造の半構造データを扱う必要があったことなどから、XMLでソースを 用意し、XSLTでHTMLに変換するというアーキテクチャになっています。

service.dbsj.org

日本データベース学会が会員向けに提供している研究動画配信サービスの ためのサーバサイドWebアプリケーション。Railsで実装しています。2011年2月に開発を開始し、2ヶ月 ほどでローンチ、その後2016年初め頃まで保守・運用を続けていました。初めてRailsを使った割には まあまあのスピードでローンチできたのではないかと思いますが…

特徴としては、当時まだ珍しかったHTML5での動画再生を行っている点が挙げられます。この時はまだ HTML5の動画再生は混乱期で、H.264, WebM, Ogg Theoraの3通りの動画を用意し、さらにFlashで フォールバックするという構成にしていました。

公開は難しいので、BitBucketのプライベートレポジトリに置いてあります。

weightlearner

2015年度に卒業した学生の研究成果 をPythonで実装し直したもの。当該学生はC++で実装していたのですが、ライブラリとして使える状態に なっておらず(というかmain()関数だけという構成でした…)、自分のPython・numpyの勉強も兼ねて、 一から作り直したものです。

本当は公開したいんですが、企業との共同研究の成果ということで、当該企業側から公開にかなり制限を かけるよう要請があり、公開作業が止まっています(今どきpipでインストールできない形でPythonの パッケージを公開しても、誰も使いませんよね…。だいたい論文で公開してるんだから、使いたかったら 論文を読んで自分たちで実装するでしょうし…)。

GitLabのプライベートレポジトリに置いてあります。

Vagrant, Chefによる仮想マシン環境

研究用ソフトウェアはインストール手順があまりちゃんと整備されていなかったり、依存関係が複雑だったり して、セットアップが難しいものが少なくありません。で、セットアップを自動化するためのVagrant環境や Chefのレシピもどきを多数書いています。多くはGitHubで公開しています。

既存ソフトウェアの補修・リファクタリング

リファクタリング、好きです。自分に向いているみたい。で、いろいろやってます。

member.dbsj.org

日本データベース学会の会員管理Webアプリケーションのリファクタリング・保守・ 運用を、2002年頃から2016年初めまで行いました。最初は当時の研究室の学生さんに書いてもらった超レガシーな PHPアプリケーション(HTMLとPHPが入り混じっているような…)で、なんとか動いていたものの、もちろん テストも全くなく、バグ修正や改修も一苦労な状態でした。諸事情で、途中から私が一人でメンテナンスする ようになりまして、一念発起して全面的なリファクタリングに着手、延べ半年弱の作業の結果、自作ではあるものの MVCアーキテクチャに沿ったWebアプリケーションとなり、ユニットテストによるコードカバレッジ100%まで 持っていくことができました。

実はそのあと、CakePHPのような定評あるPHPフレームワークで再実装するつもりだったのですが、学会の 方針で、外部業者にシステムを発注することになり、開発はここで中断しました。

公開は難しいので、BitBucketのプライベートレポジトリに置いてあります。

algebra-ruby2

知人から、原信一郎先生が公開されていたRubyの代数ライブラリ algebra がRuby1.9で動かないと 相談を受けまして、Ruby1.9以降でも動くように改修を行ったものです。原先生にご報告したところ、 たいそう喜んでいただきまして、先生のページからもリンクを張っていただいています。私自身は このパッケージで扱うような数学は全く素人で、かつ(このライブラリでかなり激しく使っている)Rubyの メタプログラミングもよくわかっていないので、今でもこの改修でいいんだろうか、と迷いながらメンテナンス していたりします。原先生が書いてくださっていたユニットテストが通るように、最新のRubyで調整している だけ、というのが正直なところです。

GitHubで公開しているほか、 rubygemsでも公開しています

研究用ソフトウェアLCore

以前所属していた人工知能系の研究室の教授がこれまでやってこられた研究の 過程で作ってこられたソフトウェアです。およそ15年以上取り組んでこられたテーマのようで、ソフトも、 C, C++, Perl, Shell, Pythonと多岐にわたる言語で実装された30以上のサブモジュールが 組み合わされているというシロモノで、しかもこれが手作業で組み上げられているという状態でした。 必要に迫られてこれをUbuntu 14.04 LTSで動かさなければならなくなったのですが、上述のように かなり複雑なシステムなので、現職の学生さんではかなり荷が重く、私が作業を担当しました。

半年程度の作業の結果、CMakeとPythonによるビルドチェインを構築し、Gitレポジトリからのソースの 取得、必要なUbuntuパッケージのインストール、ソースコードからのビルドを比較的簡単な作業で行える までに整備を行いました。

また、これに伴い、一部のオープンソースソフトウェアについて、 LaunchpadにPersonal package archive(PPA) を開設し、ここからUbuntuバイナリパッケージとして配布する作業も行っています。

ソースコードをさらに整理・リファクタリングする作業を進めていましたが、諸事情で私が新たに研究室を 立ち上げることになり、研究面での連携も切れてしまったので、その時点で作業は中断しました。

一部公開できないプログラムが含まれている関係で、現在はGitLabのプライベートレポジトリに 置いています。いずれ公開できるかもしれません。

翻訳

XPath 2.0

XPath 2.0の勧告候補(CR), XQuery 1.0の勧告候補(CR) を、自分の勉強を兼ねて翻訳したものです。かなりの分量で、その後の原文の変更をキャッチアップする ことができなかったこと、すでにW3C勧告になっているものであることなどの理由で、 作業レポジトリをGitHubで公開 するにとどめています。