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

オリジナル

SolarPack

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

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

GitHubで公開しています

chorusroom-cms

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

GitHubで公開しています

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で公開 するにとどめています。