ログイン
編集不可のページディスカッション情報添付ファイル

2016-12-01 04:22:31時点のリビジョン2

メッセージを消す
why/post/adventcalendar/mma/2016/17

MMA

この記事はMMA Advent Calendar 2016 17日目の記事です。

昨日は /dev/null さんの "/dev/null"でした。

[[[ここにURLを貼りたいなあ]]]

はじめに

MMAが管理しているOSSの1つとして、uecmma/meshiコマンドがあります。

これは元々MMAが持つコアサーバ(現在はnestという名前です)で管理されていたコマンドで、少なくとも17年前(1999年頃)には存在していた事が確認されています。^1

このコマンドは簡単に言えば調布でご飯を食べに行く際に、どこにご飯に行くかを考えるときに利用するコマンドです。

meshiコマンドを実行するだけで、ご飯選択を素早く決める事が出来ます。

問題点

meshiコマンドの実装は100行にも満たないシェルスクリプトです。shコマンドを中で叩いているだけの簡単な実装ですが、内部でshufコマンドが使われている部分に問題があります。
基本的にどこでも動く事が前提とされているのですが、shufコマンドは各ディストリビューションにおいてインストール方法がかなりばらついており、また基本インストール時にはインストールされていないという致命的な欠陥を抱えています。

基本的に実行する際にはnest上で行われている事を想定していた為に、今まで大きな障害にはならなかったのですが、OSSとなった今そうも言っていられません。どうにかしてmeshiコマンドを皆さんに簡単にお届けする必要があります。

この問題点の解決策として、Dockerを用いたソリューションをご紹介します。

実装

実際に完成した物がこちらになります。

https://github.com/whywaita/docker-meshi
https://hub.docker.com/r/whywaita/meshi