テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

minio mcの紹介

私は現在, S3ストレージの開発をしているのだが, minioにも注目している. 思想が好きだからだ. その名前に表されるように, minimumな実装に徹していることが理由だ. S3の実装者として私も, バージョニングや削除などのAPIをサポートすることは実装に多大な制約を与えることがすでに分かっており, ここを一切排除することを主張しているminioに筋の良さを感じる. minioは330万ドルの強烈な資金を得ており, 本気を伺い知ることが出来る. (https://osdn.jp/magazine/15/06/19/062200)

また, minioはGoで書かれている. 私は兼ねてから述べているように, スクリプト言語を信用しない. なんとなく正しい結果が得られたらいいくらいのレベルでプログラムを動かすのであればスクリプト言語でもいい. しかし, ストレージではそうはいかない. 私がScalaでストレージを実装している理由の1つである.

minioはコマンドを自前で用意している. 名前をmcという. コマンドとしては, s3cmdが有名であり, 他にs4cmdなど色々あるわけだが, mcもやはり思想が気に入っており, 私のS3ストレージの推奨ツールにしようかと思っている. 気に入ってる理由は今度は, サーバーと同じ最小主義ではなく, ローカルとリモートを透過的に扱おうという点である. 私は, ファイルシステムは99%の人間にとって有害なものだと思っている. 人間はオブジェクトストレージと接する必要がある. みんなオブジェクトストレージが好きだ.

minio/mc · GitHub

使うためには, Macの場合は

  1. brew installでgoを入れる
  2. goの環境変数などをセットアップする
  3. go get github.com/minio/mc

で終わる. アカウントやホストの設定もs3cmdのように複雑ではなく, mc configコマンドを2回叩くだけで終わる. 最高にクールだと思う.


日本人でもminioを使ってみたー^^という人はちらほら見る. しかし全員, 手順通りに打ち込んでみた程度であり, いつもどおり何の情報量もない.

私は違う. 私は開発者だ. 私は機能拡張を提案し, バグを報告することが出来る.

minioはv2署名を実装していないことが分かった. これは, 様々なS3クローン向けに利用出来ないことを意味する. 私はコードを少し読み, 署名プロセスをきれいに一般化出来る可能性に気づいた. そこで提案をすると, (私がやっても良かったのだが)1日で実装してくれた. 彼は猛烈に手が早い. なかなかいないレベル(日立には1人いた)だ. 私は早い人間が好きだ.

github.com

その後いくらかバグを直して, とりあえず手元でバケットを作るところまでは出来た. これも実はすんなりいかなくて, テストに使っているAWS SDKやs3cmdが発行してくるuriの形と少し異なるため, パスマッチングがうまく行かなかった. これを直すとmcは思い通りに動作した. もしかしたら他のS3クローンもmcで試したら動作しなくなることがあるかも知れない. S3開発者は注目してほしい. 引き続き色々使ってみて, s3cmd同様に自動化しようと思っている.

$ mc mb mys3/hoge
Bucket created successfully  ‘http://localhost:8080/hoge’

$ mc ls mys3
[2015-09-22 18:45:53 JST]     0B hoge/

あきを