2015年3月14日土曜日

Vagrant, VirtualBox, Chef ってなんじゃの

で、何なの?

  • VirtualBox = 仮想化基盤 (Virtualization)
  • Chef = サーバーの環境を構築(Provisioning)
  • Vagrant = 仮想化基盤と環境構築を1コマンドで実行するまとめ役

仮想化基盤。

Vagrant は VirtualBox 向けが出身なんですよ。ええ。
他にはVMware, Hyper-V, Xen, Amazon EC2 (AWS ?) とか。他にもあったはずだ

とても雑な説明をすると
  • 1つのマシンにたくさんOSを入れられる
    • これを仮想OSと呼ぶ?たぶん。
  • 仮想化基盤が同じなら、仮想OSを移動させても普通に使えるように作ってある
    • うごいたままというのもあるらしい(Live Migration)
  • その代わり、仮想OSの動作は、若干性能が犠牲になる。HW本来の性能よりやや劣る
    • ハードを「劣化が気にならないぐらい良く」すればよい(雑)
    • そもそも「性能について問題ない」ようなシチュエーションに落としこんだので
      仮想化環境を使う

プロビジョナ。環境”自動”構築ツール

実はあんまり試してない。Chef。なので Chef を語ることは出来ないのだ、、。
昔は開発環境構築には「Chef-Solo」を使ったらしいが、今は「Chef-Zero」らしい?いや「Chef-ClientにChef-Zero機能が入っている?」うむむ、、、。

ああ、まあそれはおいといて。プロビジョナってじゃあ何かっていうと
  • スクリプトでどういうサーバーのアプリケーション構成にしたいかを書いておく
  • スクリプトの設定どおりにサーバーの環境を構築してくれる
  • 「完全に同じ」環境を作り出せる(冪等性?)という触れ込み
プロビジョナに相当するものは、シェルスクリプト(!)、Chef、Ansibleという名前が出てきた。yum, aptitude あたりで何とかなるなら、シェルスクリプトで構築してもよいかも、、、などと考える。うむ。スクリプトも試してないんだ、、、。

Vagrantはまとめ屋さん

VirtualBox のAPIをたたいて仮想OSの設定を作って仮想OSをインストール(VirtualBoxの場合はインポートであろう)して仮想OS内のいくつかの設定をしてプロビジョナを起動して、、。
そう。まとめるだけの仕事で、どういう感じにするかをスクリプトに書いておく。

そしてすべてを vagrant up にする

で、何がしたいんだっけ

なんか開発環境をスクリプトで簡単に組める(というか再現できる)って聞いて,,,。
それが出来たらなんか間違って環境壊してもすぐ戻せそうじゃないですかぁ。

手作業だと何をやるんだっけって考えてみたんだよ

  1. 仮想化基盤のインストール (VirtualBoxとかね。)
    • まあ、それぐらいはやったことあったよ
  2. 仮想OSを作る。というか仮想OS用の仮想HW設定をする
  3. 仮想OSをいざインストール。
    • そのためにインストールメディアをダウンロードしてさぁ、、、
  4. 仮想OS自体の設定をする
    • ネットワークとかね。面倒だよ、、、
  5. 仮想OSにアプリケーションを入れる
    • 開発環境だから git とか svn とか samba とか
    • あと開発環境自体、、、SDK ? IDE とか
  6. アプリケーションを適切に設定する
さて、やったことがある人はわかると思うが、大体一日費やすぐらいの労力がかかる。
Vagrant, VirtualBox, Chef でこれが、、、

環境構築が完了するとこうなる

> vagrant up

役割分担に関して

まあ、設定ですよ。何を設定したらいいんだろうという話

VirtualBox, Vagrant, ”プロビジョナ”の役割分担はこんな感じ
  • VirtualBox
    • ちゃんとインストールされていればOK (得にすることなし)
  • Vagrant
    • 仮想OS用イメージ(box) のダウンロード
      • Linux なら有志が作成した既製品がそろっていて楽!
      • インストールだけならBoxの時点で終わっているのが当たり前
    • 仮想OSの設定
      • ネットワーク設定が個人的には重要
      • 他はプロビジョナを起動することの指定とか
      • メモリ量の指定とか
      • コア数の指定とか
  • プロビジョナ
    • 仮想OSが立ち上がった後のアプリケーションのインストール
      • 基本的には BOX に「インストール済み」にしておくので必要ないのがよい
    • 仮想OS内のアプリケーションの設定
Linux系ならもうらくらく。いつもの手順でどうぞ。
WindowsOS でもやり方とライセンスの扱いさえ間違えなければ出来る。コツは必要
Mac ? 知らない子ですね、、、(出来る気がする)

仮想OSなら当然気にすべき事柄

マシン性能に比して仮想OSの性能は劣るということ。

これはベンチマークをとって確認するとよさげ。
劣化が著しく使い物にならない場合は、仮想OSの設定を間違っていないかを確認、それでも不十分なら、そもそも仮想化環境の実行環境であるマシンの性能を確認。

仮想OSに対するアクセス法。

Windowsで普段開発をしていると、コンソールでつなげて開発、という感覚が慣れなかったりする。という実体験。方法としては
  • 実画面をリモートで確認できたり(VMwareはそうだったなあ、、、)
  • GUIで確認できたり(VirtualBoxでGUIありならそうだよなあ、、、)
  • リモートデスクトップでつなげる(Windows)
  • コンソールでつなげる(Windows含めすべてのOS)
などなど。まあ、勉強がひつようと。

参考情報リンク

公式。

入門記事。
第一人者

終わりに

vagrant とその開発者、布教者、情報発信者のすべてに敬意を表する。
勉強してよかった。すばらしいソフトです(※私やあなたが使わなかったとしてもだ!)

2015年3月10日火曜日

ドローンFPVレースがしたい。したくてしかたない。

とりあえず意思表明だけしておこうと思って。

したい。したくてしかたない。ドローンで、FPVでレースがしたくて 仕方ない。

他にもFPVのムービーを見たが、かっこよすぎだろう。ありえないだろう、、、!!!やりたい!やりたい!

ああ、でも調べれば調べるほど今始めるのは周回遅れなんだなって思うのはある

いやそもそも訳知り顔で「FPV(First Person View)」とか書いてみても今まで知らなかったわけだし

アマゾンがドローン配達検討中とかいっていた記事を見てドローンの存在を知ったのだけれども、今でも現役の AR.Drone 2.0 (買った) は2012 年(前身の AR. Droneは2010年) 発売だったりして。

国内でもつい最近 室内レース競技会をやっていたらしい 、、、終わってますがな!(2015年1月開催) うむ。次はいつかな?

飽きる前にさ、FPVでかっ飛ばしたいわけですよ

FPVするだけなら普通の飛行機でもラジヘリでもいいじゃん!とか思ったりもしたが
  • 比較的安価(トライアンドエラーに向いている)
  • 操作がしやすいし、壊しづらい
  • 小回りがやたら利く(そりゃまあものによるが)
ということを考えてみたら、やっぱりドローン(マルチコプター)でやってみたい!

問題は山積みなんだけどね

  • 場所(ほんとこれ)
    • 安全に対する配慮の容易さ
    • 広さ
    • 無線混信に対する防衛
    • そこで遊んで楽しいか?繰り返し遊べるか?
      • そこは工夫次第か。
  • ラジコン電波到達距離
    • 遊び方しだいで気にしなくて良いかも?
  • 映像転送装置
    • 到達距離
    • 画質、、、は最低限とはいえロストは怖い
  • 機体制御の問題
    • 屋外だと風が!風が!
    • 慣れるまでの練習

誰かピンときたら一緒にしてみたい、、、な、、、なんて!

FPV自体情報が少ないですしなぁ、、、(※とても参考になるサイトは見つけている)

ドローン購入はしているので、いくらか試して慣れてきたらまたどこかのグループ、、、mixiとか?に参加してみたいですわ

という意思表明でした。そういう人が 2015年現在いるんだなってことでお願いします。

2015年1月27日火曜日

休止宣言

休止します。

第04期の最後の投稿が 2014年11月26日なので2ヶ月以上あいてしまった。

1ヶ月以内にやめると投稿するルールを結局守れていないという話

情報発信意欲というのは、一般的な会社員的には「自己満足」の世界でしかないわけでして、実利益を得るところまで到達するだけの労力をかけるのって大変。
会社の仕事が忙しくなったら、あるいは「あわただしくなったら」頻度が下がって休止してやがて飽きるしブログの情報も薄くなる

続けられる人は習慣化と自己満足継続の成果であろう。すばらしい。私はそこまでしない。へたれることにする。人生の重点のおき方は誰かに左右されたくないものである。

また情報発信意欲がわいてきたら再開する。もとい「仕事以外で調べて書きたくて仕方なくなったら発信する」

この間にしていたことノート

  • 仕事上の必要性から JavaScript, PHP を勉強したり調査したり
  • ぷよぷよ!クエスト で遊んでいたり(ホント ソシャゲは地獄だぜ! フゥハハハーハァー)
  • BorderLands2 が面白くて仕方なかったり
  • 開発チームの人が転職した。転職って大変なのかなと思って調べてみたりした。

休止期間開始メモ

第04期終了   : 2014/08/24
休止宣言(本日) : 2015/01/27
第04-休止期開始 の日数 : 156日

仮に再開するなら第05期である

2014年11月26日水曜日

株主優待初めて届いた

株主優待の権利確定が9月末、それで11月末に近い本日、株主優待を始めてもらった。
お金では還元しないで現物で還元するというのも、会社の方向性の意思表示である。優待が最善とは思わないが(実際配当でくれてもいいはずだし)配当する気がない分”個人に有利なように”配当してくれるというのは、それはそれで方向性であると思う。

株式を持つことは本来、会社を所有することである。わずかであるが株式を持つことで会社の決定に対する議決権を持っている。行使できるほど強くないけれども!と思うと、その会社に対する愛着をもてようというものである。

お金を得たいだけなら、会社の債券を買ったらよい。株価特有の「株価値上がり」がない代わりに、配当だけで得られるはずの金額よりずーっとおおきな利率で販売される。会社にとっては即座にお金を得られる代わりに、大きな利率というリスクをしょい、その分倒産・未払い・価値の減などの大きなリスクを購入者に負ってもらうという代物だから、、、。

ところでその株主優待会社名なんかも公開してよさそうなのに公開しないのは、あれだな、秘密主義ってやつだな

株式での利益についてちょっとおさらいしておくと

  • 株式での利益は、キャピタルゲイン(値上がり益)と、インカムゲイン(配当益)がある
  • 株主優待は、インカムゲインの一種。配当の形式が金銭ではないもの
    • 現物支給(自社商品、お歳暮形式)
    • 特製金券(株主優待券)
    • 社会貢献(寄付など)
  • インカムゲインのメインは期末配当、1株あたり何円,という形でつける
  • キャピタルゲインは、購入時株価から売却時株価の差額
株式で利益を得る方法は
  • 株を購入することで配当を得る。
    • 株価があまり変わらない銘柄だとこれが主か。
    • 利益額=売却までに得た配当
    • 損をする場合=売却時までの株価の減少 > 売却時までの配当合計額
  • 会社が”有名になる”ことで株を買おうとする人が増える=>株価上昇
    • いわゆる「人気投票」の側面
    • 誰もが高く売ろうとし、誰もが安く買おうとするために成立する
株価上昇は基本的に期待するものではない(中期~長期投資を考える場合)
  • 長く保有することで、その間に得られるであろう配当金を考える
  • 株価+配当金 = 将来の価格、と思うほうが考える上で楽
  • 株価が安いとは=>想定(将来)配当金が現在株価より”割合として”高い
    • 配当(=その源泉となる営業利益)が高そうなのに
      株価がそれに比して安い=>PER
株価上昇はほぼインフレとイーブンと考えるとなんか納得がいく
  • 物価が高くなる=>ものを高く売らざるを得なくなる
    =>会社の利益はその分増えないとおかしい
    =>配当も当然それに比して”額面が”増えないとおかしい
    =>同じ株価のままだと配当に対して株価が安い状態になる
    =>株価が”インフレの分だけ”高くなるはず
  • インフレが”理想的に”進めば、額面だけが増えて相対的な価値は変わらないはず
    =>株価の額面がその分変わっただけと考えても不自然ではない
じゃあなぜ短期的な急上昇が起こるのか?=>わからない。だからそういう株には手を”出せない”。ソシャゲ株上がりすぎでしょう、、、そんなに儲かり続ける保障はないのに。

2014年11月4日火曜日

PHPと16進数にまつわる思いがけない挙動

0x80000000 (32bit) はintでしょうか?いいえ、floatです。

それで比較していてはまったという思い出話。

PHPでバイナリを処理しようという、酔狂(?)な方は要注意ですぞ

なんでそんなことを使用かという話は話せないし面倒なのでほっといて

次のようなコードを書いていて問題は発生した。

$binaryString = "\x7F\xFF\xFF\xFF\x80\x00\x00\x00";
// 実際は別途取ってきたバイナリデータがあるとおもいねぇ!
$unpacked = unpack("NN", $binaryString);
assert($unpacked[1] === 0x7FFFFFFF);    // <- pass 
assert($unpacked[2] === 0x80000000);    // <- assertion error !!!!

原因は:定数と変数と”暗黙の変換”の問題。

あれー!同じだろこれー!と思って散々原因を探してわかったのは

  • そもそもPHPの”すべての”整数(integer)は32ビット「符号付」しかない
    • 符号無整数は存在しない
  • unpack関数では、符号無整数を「指定は出来るが」「実際変換後は符号付整数」になる
    • 上記 $unpacked[2] は、内部的には -2,147,483,648 となっている
  • 0x80000000 は「整数の範囲を超えるので」「小数に自動変換される」
    • var_dump で見てみると、(float) 2,147,483,648 になっている
  • なので、厳密な一致テストを行うと、まあ、あいまいな一致テストでも、FALSE になる

他の方もはまっているようなそうでもないような微妙な話題である。調べようにも、わかってみればああ、そうか、だが気づくまではどはまりするという話題でもある。

ちなみに回避法は:強制的なキャスト

上記例の変数をそのまま使うと
assert($unpacked[1] === (int)0x7FFFFFFF);  // <- pass
assert($unpacked[2] === (int)0x80000000);   // <- pass, OK!
とする。符号無なので,内部的には右辺 0x80000000 は負の値になっているが、比較さえしなければ特に問題はない。少なくとも私はしない。はず。

2014年10月12日日曜日

生存報告記事:最近していることのメモ

前回投稿が8月27日、現在が10月12日。ああ、残念なことをしてしまった。ブログに対する明らかなモチベーションの低下をさらしてしまった。

この記事の立ち位置についてちょっとだけ書いてみる

毎日の仕事をストレスにさらされながら自分の役割をとりあえずこなすことに必死で決して仕事に関して言えば勉強をしていないわけではなくだがそれゆえにほかの事はとにかく時間を休憩をすることのために費やしているような今年三十路になろうとする一般的な技術者の、なんとなくすごされた時間についての貴重な資料

何があったのか。


  • 8月上旬:引っ越した。
  • 8月中:各種手続きとか必要なものを買い揃えたりとか
  • 8月27日:最後の更新
  • 9月中:仕事がばたばた開始。何もしないことが最善の回復法と悟る
  • 10月上旬:ブログのことを思い出す。
  • 10月12日(本日):自分ルールを守ろうとうごく

この間にしたりしていたりすること。


  • 新しい生活の確立。必要なものを買ったり、近場を歩き回ったり。
  • 料理をする。CookpadのIpadアプリが秀逸。プレミアム登録したくなった。
    • しなかった理由:1ヶ月経ってみたら、意外と冷凍食品依存だったため
    • しなかった理由2:無料分だけでもかなり楽しめる。つくれぽもしたよ!
  • ぷよぷよ!クエスト(アプリ)。
    • 漁師カードが壊れ性能だったいうことを知ってショックを受けている
  • JavaScript, PHP, HTML/CSS :お仕事で使ってる!とだけ。
    • 今までC#メインだったんですがねぇ。
  • Steamゲー。
    • 値引きしているというだけで買ってしまうんだよなあ。
    • StelthBastardDeluxe、大体のステージはS取るだけで1000位以内。
    • Portal, Portal2, Half-Life,,, ValveCollection
    • Rise of Flight : Cannel Battle Edition
      • 買ってから半年以上経ってる。やっとエンジンスタートの仕方を知っ
    • TrackMania2 Canyon <= お気に入り。ドリフト万歳ゲー

C#er から見た JavaScriptの印象と感想

こんな代物(言語)をきっちり扱える(ライブラリを設計できる)人たちは本当によく勉強してる!

なんでオブジェクトと関数が同じ構文で定義できてしまってしかも扱い上は同じなのか。なんでスコープがブロックで終わらないのか(終わるものも何で混じっているのか)。なんでクラス”定義”という概念がなく、とにかくオブジェクトだらけなのか。ライブラリの使い方になんでクセを覚えるぐらいに方法が違うのか。

この状況が、JavaScript最盛期(jQuery など、フレームワークライブラリが大量に出現した時期)からすでに2~3年、ひょっとすると7~8年経過しているはずなのに(調べていない)その作法の違うたくさんが生き残って成長して広く使われているという不思議。

言語によってある程度書き方が決まってきてしまうほうが、、、使いまわす上では楽なんだけどなあ。Javaとか。C#とか。役割がかなり似通ったライブラリが、別の作法でたくさんある状況と、役割のちょっとずつ違うライブラリが、同じような作法である状況と。個人的には後者のほうが楽なんですわ、、、。

ライブラリ万歳ですわ、、、。クセはあってもやっぱり便利。jQueryでごり押してる。いってもセレクタとイベント機能ばっかり使っていますけれども。スコープ?変数名全部変えてvar つけたらいいんでしょ!?(雑)

2014年8月24日日曜日

第04期終了。そして区切り。

部屋を引っ越したのが、大きかった。


今までは会社の寮に住んでいたのだが、8月の夏季休暇を利用してアパートへ引っ越した。そうすると、引越しとその後の生活、そして生活に早速降りかかる問題のトラブルシュートなどに追われて、いろいろやらなくなる。そう。Unityもだ。続けられなくなっていたのが、もう本格的に終わった状態になる。

このブログ、自分の宣伝ではやっていない。仕事でもない。ブログで食ってく気もない。ただ、ちょっとは世の中に役立てればな、ぐらいは思ってる。まあ、文章スタイルは垂れ流しで、読者のことは考えていないんだけれども。

だから、ブログどころじゃなくなれば、すぐ更新が停止するんですわこれが!

第04期の情報

第04期開始:2014/06/06
第04期終了:2014/08/24
期間長さ:79日

一番読まれた記事は:Unity3D の回転とクオータニオンのリファレンスリンク

Unity3Dとてもよいです。あと、それを使う人がもっと増えると、そして情報発信が増えると、もっともっといいです。まだまだ日本語情報は少ないなって思うよ。海外?アメリカ?英語ワカリマセーン!、、、英語しんどいです。かなり広まっているんじゃないかな?知らんけど。

かつて調べた内容のその後の話題

ちょっとだけ書きたくなった。

  • Windows 8 :ニュースを聞いた。早速 Windows 9 (コードネーム Threshold)の情報がうわさされるように。ニュースになるように。情報源を精査してないので本当かどうかわかってないが。まあ、Vistaと同じ運命をたどるだろうね。とか書かれていたな。
  • iPad : 便利。Cookpad のアプリが便利すぎてしかたない。Wunderlistの改変がちょっと受け入れがたい。便利さがすごく失われた。今後のアップデートに期待。
  • 投資 : こっそりはじめてみた。NISA枠だけで。投資にそんなにお金回せません。

ここまでの期間情報のちょっとまとめ

  • 第01期:2013/02/10 => 2013/03/29:47日
    • 中間01-02期:2013/03/29 => 2013/07/02:96日
  • 第02期:2013/07/02 => 2013/10/05:95日
  • 第03期:2013/10/05 => 2014/01/26:113日
    • 中間03-04期:2013/01/26 => 2014/06/06:131日
  • 第04期:2014/06/06 => 2014/08/24:79日

案外続かないな。個人的に1ヶ月半続くと飽きるという感覚があったが、大体裏付けられた形。一見期間が長く見えても、活動が少なく、ブログに上げられないために活動が停滞して結局終わりを宣言するのが遅くなるだけなんだという話、、、に見えるが?、、、どうなんだろう?