2015年12月19日土曜日

Eject Advent Calendar 19日目:CDドライブに運をまかせてみる

どうも、島田です。
今回は久々のEJECTアドベントカレンダーということで書こうかと思います。

が、しかしネタ切れにも程があるこの頃、何やろうかと散々悩んでいました。一応買い出しには行ったのですが、なんというかどーしようで終わっていた感じでした。

というわけで、家の中を捜索して見つけたEJECT装置をなんとなく並べてみました。

 3台見つかりました。つまり3EJECT。

実はここまでで結構へとへとだったりしますが、出すだけでは何もできません。幸い3台ともUSBインターフェイスがついているので、これとUSBハブにつないでまとめます。更には、CDドライブの電源をタップにまとめます。

こうすることで、PCにつなげるインターフェイスは1本のUSBケーブルにまとまりますし、タップの抜き差しor電源スイッチでまとめてCDドライブのオンオフができます。実験環境のとっかかりはシンプルな方がよいでしょう。


では、次に手元のLinux端末でスクリプトを書いてみます。3台もあるので、何台増やしてもいいように、少しはインテリジェントに書きたいなーと思い、Shell script での配列の使い方を学びながら、こう書いてみました。

(fortune_eject.sh)

#!/bin/bash

# Linuxで認識されているCDドライブをすべて配列に入れる
drives=(`ls -1 /dev/sr*`)

#どれをEJECTするか決める(この場合はランダム)

num=` expr $RANDOM % ${#drives[*]} `

eject -T ${drives[$num]}



スクリプトを書いたら実行権限をつけましょう。

$ chmod +x fortune_eject.sh

num変数にて、どのドライブをウイーンさせるかというのを指定することができますが、ここではランダムにしてみました。するとどうなるかといいますと、3台あるCDドライブのどれかがEJECTするようになります。どれかは選べません。

あとはこれ繰り返し実行しましょう。以下のコマンドでさくっと永久ループできます。

$ while :; do ./fortune_eject.sh ; done

すると、延々と EJECT しては戻りを繰り返すようになります。

ちょっとランダムにしては偏ってないか気になる感じですね。

ここまでで気づいたのは、ドライブによってウイーンする時間が異なることと、特に下のドライブが、クローズ後にロードするような挙動をすることがある程度でしょうか。やはり均等で高品質なEJECTをするには、ドライブを揃えたほうがいいのでしょうか。

さて、ここまで揃えたところで、表題の通り運を任せてみましょうか。といってもよさげなAfter Eject ネタがないので、とりあえずCDドライブのところにぬいぐるみを並べ、fortuneしてみましょう。


気になる結果は...?



あひるが動きましたね。今夜のご飯はあひる焼きとしましょうか。


とこんな感じで、複数台でのEJECTは割と簡単にできますし、慣れればどんどん増やすことができます。USBハブを介してるので、このままRpiとかにつないでも安心です。

ただ欠点は配線が面倒なのがありますし、やはり12EJECTぐらい無いとインパクトがありませんね。
もっとハードオフで買い漁りたいものです。

今回は時間がなくネタができませんでしたが、次はベルをいろいろと買って、シーケンス的に何か鳴らすとかやってみたいものです。あとShell scriptでも非同期実行を極めて、よりスムーズなEJECTをしたいなぁというのも思いました。

ではでは、明日のEJECT アドベントはあひる焼きさんです

2015年12月10日木曜日

ConoHa Advent Calendar 10日目:やんちゃなConoHaで、ディストリビューション開発

本日はConoHaアドベントカレンダーということで、今回はVPSサービスのConoHa(以下このは)を数年間使ってきて感じたことと、僕が主に進めているOSSプロジェクトである opencocon でこのはを使っている事例とかをお伝えできればと思います。


このはを振り返って:僕が見た、やんちゃで楽しいVPS


僕がこのはを知ったのは2013年頃でしょうか。そこそこリーズナブルで、自由にOS突っこめて、グローバルIP(v4, v6)が使えてということで、普通に遊べるVPSができたなーすげーという感じであったでのですが、何といってもサービスのトップページからして萌えており、デカイこのは先生がどーんと出てくるのが初期のこのはでした。
実は同時期に仕事でVPSを探してたことがあったのですが、「使えそうなのに上司に勧められない」という、すごく独特なポジションを持っていたことを思い出します。一応、なんでそうなんったん?とブースでお伺いしたことがあるのですが、「我々はこれでいきます!と決めたので・・・」という、ある意味正々堂々とした答えを頂いた覚えがあります。


あれから3年、現在は2代目このはになり、全面的にSSDを採用したりOpenStack APIを部分的に使えるようになったり、クレカ無くてもチャージできるようになった等の磨きがかかる一方、以前の萌えトップページは後ろに隠れました。より多くの人に使ってもらうために、色々と成長(意味深)したのでしょう。

ただ、初期からの萌える勢いが残る美雲このはTwitterアカウント(@MikumoConoHa)とかもありまして、これがまた昔からフリーダムでした。時期によって異なる口調、時々繰り出る若い人には絶対判らないネタ、「あーこれ中の人疲れた勢いで書いてるんやろなー」と思う場面、挙句の果てにキャラ崩壊寸前....。今はだいぶキャラ崩壊は無くなってきたようには見えるのですが、やってることが自由なのは相変わらずのようです。
僕がメモしてある、このはの過去の絡みを以下に少し挙げてみますと、こんな感じでしょうか。








(補足:あひる焼きについては、こちらで解説しています)

もうなんていうか、お互いやりたい放題な感じが...(すんません)。

恐らくこういうプロモーションに賛否は色々あるんでしょうし、たまに、おいやめろと突っ込みたくなるような場面はあるのですが、思えばこういった面もこのはがやんちゃな所以なのかなとも思っていますし、真面目にVPSサービス作ってるだけじゃおもろないんやって言わんとばかりの、提供側の熱意を感じる訳です。やっぱり遊び心あっての本気のWebサービスですよね、多分。

そんなこんなでこのはの雑感を話したところで、私がやっているこのはの活用方法を簡単に紹介したいかと思います。


このはとここん:Linuxディストリ開発にVPS使っています


さて話が変わりますが、私が中心で開発しているOSSにopencocon(おーぷんここん)というのがあります。これは、旧型コンピュータをシンクライアントにする、専用型Linuxディストリビューションです。

動作例:opencoconが動くLibretto 50。(詳しくはこの辺をどうぞ)

 詳細はサイトの方を見て頂くとしまして、これは、今まで誰もが一度は考えたけどうまくは実現するのが難しかった、旧型コンピュータでシンクライアントを簡単にしたい!というアイデアを具体化したくて、僕を中心に何年か開発を続けているものです。

このプロジェクトは旧型コンピュータこそ沢山あるのですが、いかんせん肝心の資金に乏しく、僕自身経済的に苦しい時期に立ち上げたプロジェクトでした。当時は公開するための自宅サーバを引ける回線すらなかった程だったのです。そんな中、当時のお名前.com VPSさんのコミュニティ支援制度により、VPSをお借りできたおかげで、なんとかプロジェクトを軌道に乗せることがができました。その流れで、このはの開始時より引き続きコミュニティ支援を頂いており(※)、その間に10以上のリリースをVPSで作っています。
 (※現在新規のコミュニティ支援はしてないそうです。ただ、面白い若手を呼び込むためにも、予算がつきましたらまたお願いできればと思っています。)

その際、折角お借りしてるVPS(といっても1台ですが)やし有効に使わんとと思い、いろいろ試した結果、VPSの中で opencocon のビルドを行いつつ、一方でサイトで公開しても問題ないぐらいのスペックだということに気づきました。そこで、以下の図のような開発体制を取ることにしました。

開発フロー(って言わないと思いますが)図。1台2役です。

 本来は開発と公開マシンを分割した方が良いのですが、現在はひとつのVM内で権限などで線を引くことによりなんとかしています。セキュリティ的には色々と余地があるのでしょうけど、スタートアッププロジェクトとしてはそんなにボコボコVMは立てられません。まさに貧乏プロジェクトという感じでしょうか。 (いずれなんとかしたいものです...orz)
 
opencocon は各地でのブース出展を行い、それに向けてこまめにバージョンアップしながら制作を進めている訳ですが、直前までイメージを調整してその成果をCDに焼く ことがよくあります。ただ、荷物が大変重くてビルド用マシンまで持っていくことができないですし、電源プラグがない環境で半日移動しなければならないケースも多いので、手元でビルドとかはしんどいわけです。

そこで、適当なSSHコンソールに入れるマシンと回線を持参し、そこでSSH越しにこのはのVPSに入り、そこでコーディングとビルドを行い、手元に完成イメージ(ISO等)をダウンロードして動作テストとCD焼きを行う、といったクラウド開発のような手法を取っているのです。こうすることにより、高い(出展)機動力とアーリーリリースを両立(?)できるわけです。

とまぁ、こんな経緯がありまして、現在もopencoconのサイトの横に「Compiled on ConoHa」と表示させて頂いています。

opencocon.orgの右側にあります。これは純粋なリンクでありアフィリエイトではないです。


このはで、ここんを作るベンチマークをやってみた


opencoconのユニークな点のひとつは、組み込みLinuxフレームワーク(OpenEmbedded)ベースであるということです。これは軽量化にものすごく貢献するチョイスなのですが、その代わり opencocon を生成するには、そのすべてをクロスコンパイルする必要があります。ということで、このはが実際にその観点で使えそうなVPSなん?てのを軽くスピードテストしてみようかと思います。
手前味噌なopencoconのイメージを、新このは、旧このは、あとオンプレのマシンでビルドを行い、その速度を簡単に比較してみましょう。

現行の opencocon v9 フルビルドでは、どういうことか時々コンパイル中にコケたりCPUが100%になる等、いくつかの問題を抱えているため、完全に自動化することができない状況あり、計測に適していませんし、何より時間がかかりすぎます。ですので、最低限の初期起動用initrdイメージ(initramfs-crusoe-image)の生成だけを計測することにします。

 具体的には、opencocon v9のビルド方法を途中まで進め、以下のシェルスクリプトでビルドを走らせます。

(build.sh)

#!/bin/bash -
set -o nounset
source ./opencocon

startt=`date +%s`
bitbake initramfs-crusoe-image
endt=`date +%s`

echo "TIME : ` expr $endt - $startt `"




さて、比較のために用意したマシンが環境はこちらです。
  • その辺で拾った Core Duo ノート
    Core Duo T2300 1.7GHz, Memory 1GB, HDD, Debian 8 (これのみ32bit)
  • あひる焼き氏に寄贈頂いた Core i7 デスクトップ
    Core i7 2600K 3.6GHz, Memoy 12GB, HDD, Ubuntu 14.04
  • コミュニティ支援頂いている旧ConoHa
    Xeon E5-2670 [3CPU] 2.6GHz, Memory 2GB, HDD, Debian 7
  • この計測のためにチャリンチャリン(コインを入れる音)した新ConoHa
    Xeon E5-2660 v3 [3CPU] 2.6GHz, Memory 2GB, SSD, Debian 8

他の条件としては、
  • ビルドオプションは常に -j2 となっています。
  • bitbakeでは各パッケージのソースを各サイトからダウンロードするのですが、この辺りの速度は特に気にしていません(すみません)。ですので、インターネット回線状況によりビルド時間が多少左右されることに留意が必要です。
  • ディストリの違いによる動作速度の違いが考えられますが、それ自体はあまり大きくないような気もします。
  • このはは共用ですので、コンディションによって一定の速度が出るとは限りません。
  • このは以外の2台は、特にVMの中で動かしたとかではありませんので、その辺りも留意が必要です。
  • HDD/SSDの空きは十分あるものとします。(おそらくこのレベルでは10GB程度の消費でしょう) 
  • 1回計測です。本当はあかんけど、これ自体ネタやし手抜きさせてくださいorz

こんな感じにビルドを廻していました。


というわけで、気になる結果はこちら。

  •  Core Duoノート
    13377秒 →約223分
  • Core i7 デスクトップ
    3749秒 → 約63分
  • 旧ConoHa
    7261秒 → 約121分
  • 新ConoHa
    5091秒 → 約85分

こんな結果になりました。

 考察ですが、どうもこの手のビルド処理はCPUの速さが最もモノを言うようであり、 CPUのHz数が高い i7 デスクトップがトップをマークしてしまいました。その次に、新このは、旧このは、Core Duoと続きました。

この結果から考えると、じゃあ高速なCPUの自作マシン組んでビルドを行えばいいんじゃない?とお考えの方も多いかと思います。そう言っちゃえばそうなのですが、これは物理マシンなので勿論動作音は大きいですし、さらに言うと家の回線はADSLなので、イメージがさくっとできても、直ぐにアップロードできる、というわけにはいきません。

それに対し、新このはで、計測のために500円をチャージし、4時間ぐらい動かしまして、引かれてるのがだいたい72円ぐらいでしょうか(ジュースよりも安いですね...)。もちろんデータセンターの中なので雷とか故障とか停電を気にする必要がなく、ダウンロード・アップロードともに高速でしょう。これを考えると、速度差を考慮したとしても、ビルドのためにVPSを使うのは選択肢としてありだと思うのです。

旧このはと新このはでは35分ほどの差がついているのも見どころですね。CPUは概ね似たような感じだと思うので、SSDとHDDの差が出た感じでしょうか。

今回は全体的に控えめなパラメータだったので、まだまだチューニングの余地はあると思います。


ちなみに、これまでの運用でのコンパイル時の負荷ですが、例えば3CPUプランの場合、 -j2 までであれば同時に動くWebサーバなどにあまり迷惑をかけずビルドできるかなという感じです。 それでも、opencoconのフルビルドは旧このはで6〜8時間ほどかかってしまう訳ですが・・・。


おわりに:組み込み開発でこのはを使うというアイデア


一般的にLinuxディストリビューションですとか、組み込みLinuxやAndoroidのROMは、手元の端末とかサーバでビルドするかと思います。その方がデバッグとかしやすいですし、何よりも手元で動くという安心感もあるかと思います。

では、その環境をこのはに移して使うことのメリットは何かといいますと、やはりデータセンター内にあるということと、迅速な共同開発、あと高速なダウンロードができるということでしょうか。最初からXeon、SSDといったリソースが備わった、そこそこ高速な環境が直ぐに用意できる、このはの中で開発とビルドを行うことは、ある種メリットがある使い方ですし、その上にJenkinsやBuildBotみたいなツールを乗せて自動化する使い方もありだと思います。

 ただ、このはならではの最大の欠点はといえばやはりディスク容量でしょうか。大量の中間ファイルやソースコードをさばくのには工夫が必要でしょう。その点では、初日に話のあったSwiftFSの検討も要るかもなーと思っています。このは的には今更HDDって訳にもいかないでしょうが、この辺よさげな落としどころが欲しいような気もしています。



というわけで、駆け足で活用事例をご紹介しました。何かお役にたてることがあれば幸いです。

最後に、長年opencoconプロジェクトを支援頂いてるこのはとGMOの皆様、ユーザの皆様にはいつも感謝していますとともに、来年こそはもっとおもろくて便利で、謎マシンに入れて楽しいディストリビューションを生み出せればと思います。ありがとうございました。

2015年12月1日火曜日

あひる焼きアドベントカレンダー : あひる焼きのはじまり





というわけで、あひる焼きアドベントカレンダーの1日目の記事です。

ここ1年、よくTwitterで「あひる焼き」が謎の流行?を見せていますが、どうしてこうなったんやという点をちょっとだけここでメモしておきます。

とその前に、前提知識がいろいろとあるので、先ずこの辺のスライドをご覧ください。



僕とあひるとあひる焼き

僕があひるさんを知ったのはだいたい2年前ぐらいでしょうか。あひるさんが、WordPressとか東海道らぐとかEJECTコマンドユーザ会に遊びに来て、LTデビューしたぐらいの時期だったと思います。色々なコミュニティに飛び込むべく探りを入れていたり、実際に参加していた時期でした。その時はあんまり面識はなかったのですが、既に行動が学生にしてはぶっとんでおり、ておくれていた感じであり、その時早くもTwitter上でいろんな人にいじられ愛されるキャラでした。



その流れで、その年の7月ぐらいから、僕とほか数名が、何故か突然あひるさんをTL上で調理するようになりました。名前があひるなので仕方ないね。






この頃はOSC名古屋やKernel/VM北陸がありましたし、ベイクドGPUで有名なすしさんの影響があったと考えられますが、今となっちゃ何が直接の原因かはよく判りません。恐らくは何かの成り行きでしょう。

多分、最初は蒸したりしてたと思うのですが、その中で放たれた世界で最初(らしい)の「あひる焼き」がこちらです。というか僕かよ。


有名な「あひる焼き」のフレーズは、もう少し経ってから確立することになります。見たところ、8~10月にかけて、東海道らぐとかmikutterユーザとかを中心にじわじわと広がっていった感じでしょうか。


あひるさんが危機感...というよりは、煽り返すのが大変になってきたのをなんとかすべく、mikutter の ahiru_yakuna プラグインを作った訳です。稼働開始の時期は11/24頃であり、最初は「ヒッヒッヒッ」しかリプライを返さなかったそうですが、後に色々なバリエーションができて、現在に至ります。
初期のリプライはこんな感じであり、まだ調整中の雰囲気を感じさせます。


その後の経緯....は、先のスライドにまとめられている通りだと思います。僕が聞いた話では、ahiru_yakuna プラグインが稼働したことにより、あひるさん自身の負担が下がり、かつ知名度が上がるという謎の効果がもたらされたそうです。

結局あひる焼きって何だったのか

よく判りませんって言えばそれまでなのですが、あひるさんの代名詞になるべくしてなったのかなという感じがします。有望なエンジニアであるとともに、ユーモアセンスを持ってOSS業界に飛び込むと、しばしばこういうよく判らない現象になるのかなぁと思っています。

同時に、うっ憤のたまりやすいエンジニアと、近年荒れに荒れるTwitterに疲れてる人も多い中、判りやすい気分転換(?)ができるbotができたのかなと僕は思っていますが、あひるさん本人はそんなこと考える由も無いでしょう。

あひる焼きは、東海道らぐでのキーワードになるほどになっていますし、それが縁でお会いした方も何人かいます。人生どうなるかわからんですね。

あひるさん本人とあひる焼き勢の皆さんに謎の感謝です。謎の、ですが。




というわけで、あひる焼きアドベントカレンダーはまったりと続くと思います。次は12/6のあっきぃさんだと思いますが、勿論間でもエントリーお待ちしております。