月別アーカイブ: 2014年4月

gcp ja night #27に参加してきました。(+Google Cloud Platformとクラウドプラットフォームの今をおさらい付き)

gcp ja night #27 - connpass
に参加してきました。

僕とgcpja night(旧称appengine ja night)

私事で恐縮ですが、僕は旧appengine ja nightの常連だと思っていました。一時期毎回のように参加をしていたと思います。しかしどうやら、僕が最後に参加したのはappengine ja night #19 : ATNDのようです。。。2年以上ブランク開けちゃってたのですね!
その間、僕は勤務先の会社での仕事で一杯一杯*1でしたが、外部へ視野を広げることをいかに怠っていたのかを反省します。

ここ最近のクラウド界隈の動きとか(予習)

その間にGoogle App Engine界隈、いや、Google Cloud Platformの状況がだいぶ変わっていました。例えば最近GoogleとAmazonでクラウドサービスの値下げ合戦がありましたね。
Google、クラウド・プラットフォームで全面攻勢―大幅値下げ、新サービスをローンチ | TechCrunch Japan
Googleに負けじとAmazonがS3, EC2, ElastiCache, Elastic MapReduce, RDSを大幅値下げ | TechCrunch Japan

そもそも、いつの間にか、GoogleはEC2の競合サービスを出していたのですね!昨年末に正式リリースされています。
Google Compute Engineが正式サービスへ。Docker、FreeBSD、CoreOSもサポート。ストレージは1GBあたり月額4円へ値下げ - Publickey

また、rebuild.fmを聞いていると、最近はImmutable Infrastructureとか Disposable Componentとかのキーワードがホットになっています。Immutable Infrastructureって何でしょうか。

Immutable Infrastructureとは「Immutable(不変な)」の意味通り「一度セットアップし運用中のサーバは変更をしない」という運用スタイルです。サーバの設定変更などをしたい場合は、現在運用している環境(サーバ群)を変更せずに、まったく新しい環境を用意し、環境の設定変更が終わったら、ルータやロードバランサ等で新しいサーバ群に切り替えるというものです。

今年流行りそうな「インフラエンジニア」向けトレンドのまとめ その1 (Blue-Green DeploymentとImmutable Infrastructure編)


Immutable Infrastructure を調べてみると、Dockerというキーワードがヒットします。
Docker: Linuxコンテナを使ってアプリケーションの配置を支援する

そして、上記記事にもありますが、CoreOS というディストリビューションが出てきます。みんながCentOSと見間違えるCoreOSについて調べると

CoreOS は Alex Polvi が設立した会社であり、OS、新しい Linux Distribution である。OSS で公開されている。
Polvi 氏といえば Rackspace に 買収された CloudKick を立ち上げ、その後も Rackspace 働いていたクラウドの専門家とも言えるだろう。
その Polvi 氏以外にも Googler や Linux 関連の人材、アドバイザーに Linux の stable branch のメンテナ
を迎えるなど、Linux に関する知識がかなり豊富なメンバーが集まっている。
その彼らが作っているのが CoreOS である。

CoreOS は Google や Facebook などの環境を参考にしており、柔軟にスケールし、さらにはインフラ構築その...

CoreOS 入門 - Qiita

そして、上の方の記事で、CoreOSはGoogle Compute Engineでもサポートされてるってありますね!

ふう、やっとつながった。


というのは、ここ1,2ヶ月で浦島太郎状態だった僕がようやく追いついた、にわかインフラ知識ですが、今、クラウド関連の世界はこうなっているんだっていう背景知識を持っていないと、今回の勉強会はキツイのではないでしょうか。

appengineとかslim3とか触ってた人たちが、旧に最近Dockerとか使い始めたのはなぜなのか知っておく必要があるようです。

勉強会報告

gcp ja night #27は、六本木ヒルズのグーグル 東京オフィスで開催されました。
発表内容知らなかったのですが、昼間にもイベントがあったようですね。Togetterは勝手に夜の部が始まる2ページ目をリンクしときます。(18:45くらいからnightの部になります)
2014.4.22 gcp ja night #27 & 「Google Cloud Platform セッション 最新技術と日本での展開について」 #gcpja - Togetterまとめ

発表内容と会場の反応はconnpassとtogetterを参照してください(てきとーだなw)

発表内容でオフレコを支持されたものが多く、参加できてよかったなあと思います。テレビ番組連動のリアルタイム通信の事例はただただ面白かったです!しかもGCPを使ったらめちゃくちゃ安かったとか!

@shin1ogawa さん+ @sinmetal さんのManaged VMの話も興味深かったです。Managed VMとは

これはGoogle App Engineの環境の下で仮想マシンを走らせることにより、仮想マシンの面倒をApp Engineが見てくれるというもの。仮想マシンの構成は開発者が自由に行えます。

[速報]Google、「Managed Virtual Machines」発表。Google App Engine内で仮想マシンを管理 - Publickey

shin1さんの説明では、GCEにappengineのプラットフォームを載せたようなものだって言っていました。その方がわかりやすい。

まだ、日本語での情報は上記記事を除いて殆ど無く、この発表のスライドも公開されないと思いますので、まだ一部の人達しか触れないヴェールに包まれた存在ですが、会場では、SSHとか使えない仮想マシンに対してSSHは使えるようです。*2、Webブラウザ越しであんなことやこんな(ry
Docker的なニュアンスがチラ見えしました。

これは面白いです。インフラの運用って大変ですから、我々Webエンジニアはあまりやりたくない、でも、従来のGoogle App Engineは、ファイルの保存ができなかったり、サーバーにパッケージをインストールできなかったりするので、融通が利かないという問題がありました。

これを使えば、今までできなかったサーバーのカスタマイズをしながら、ファイルに保存しながら、appengineアプリを開発できるんですね!

個人的には、需要があるかわかりませんが、JavaのMayaaテンプレートエンジンがManaged VMでまともに使えるようになるのではないかと期待しています。*3

ただ、会場の雰囲気だと、スピンアップに7秒くらいかかるJavaはどうなの?っていうコメントが多く、かつて、appengine ja night で slim3 とか追いかけていた人たちも、最近の興味はGoとかに行っているようです。

ここでも、Javaは不遇な子。。。。
かつて、GAE/J, GWT, Guiceなど、GoogleのJavaに対するアウトプットを僕は好きでした。

感想

このエントリの前半に書いたようなにわか知識でなんとか付いて行けましたが、正直自分の遅れっぷりに呆れました。しかし一方でこの勉強会で登壇されている方はかなり先進的な領域にいる方だと思います。

上記の「にわか知識」自体がかなり尖った領域で、Google検索してもまだ日本語の情報が足りない状況なので、今から勉強しても十分追いつけるような気がします。逆に今ついていかないと、途中から追いつくのはとても大変だったと思います。

GCP $500 無料券をもらったので、さっそく、自分も試してみようと思います。

写真

え、会場は銭湯?
f:id:s-ishigami:20140422223612j:plain

こんなものまでGoogle製
f:id:s-ishigami:20140422223537j:plain

このシャワーは使えるのだろうか?
f:id:s-ishigami:20140422223550j:plain

銭湯でピザ取り分けていますw
f:id:s-ishigami:20140422204037j:plain

$500 無料券(え、500円じゃない?すげー!!)
f:id:s-ishigami:20140423132501j:plain

*1:その間に会社は全サービスをオンプレミスからAWS等のクラウドに移行を済ませ、僕自身は一プログラマーから開発チームリーダーに転身し、事務所は秋葉原から飯田橋に移転し、15人くらいだったメンバーが40人を超え……

*2:https://twitter.com/sinmetal/status/458842820355166208

*3:Mayaaは、キャッシュファイルをファイルシステムにキャッシュする機能があるので、ファイルシステムを使えるManaged VMがあれば実用に耐えるのではないかと思っています。これまでは、ファイルシステムへのキャッシュができなかったので、メモリのみのキャッシュになりますが、スピンアウトしてしまうとキャッシュが消えてしまうので、致命的でした。もちろんキャッシュをmemcachedに格納するとかすればできるでしょうけど、まあそこまでしてまでってのもあって。。。


僕がコラボしたいと思う理由

よく人に雑談で言ってることを書いてみました。駄文です。忙しい人は読まないでください。

このブログのプロフィールとか、僕のTwitterのbioとかに「クリエイティブな人とコラボしたい」と書いています。でも、僕はコミュ力が高い方じゃなくて、初対面の人に積極的に話しかけるのも苦手な方です。人に頼むのがめんどくさいから自分でやってしまったりします。そんな僕がよく「コラボ」「コラボ」って言っているのはなにか不思議に聞こえるかもしれません。そう思った経緯を考えてみました。

初めて人とコラボして作品を作ったなと思ったのは、高校の時、先輩が作ったVBのゲームを当時出たばかりのiアプリ用Javaに移植したときでした。自分ではこんなアイデアは思いつかないし、そもそもベースとなる知識もないので、移植作業を行いながら先輩に尊敬の念を感じていました。ただ、プログラムの美しさについては、Javaで書いた僕のコードの方が上だという自信がありました。この作品がなければ、僕は人に「これを作った」と言える成果が学生時代に残せなかったと思います。

  オリジナルはまだ公開されています。
  物質作成 〜分子ができるよ〜 - 窓の杜ライブラリ

  僕のiアプリ版はもうバイナリでの配信をやめてしまいましたが、
  こちらにソースをpushしてます。*1
  https://github.com/susumuishigami/bunshi2

次に強烈な経験としては大学時代の思い出です。当時僕はコンピュータサークルのプログラミング部門のリーダーをしていました。まあ、C言語のいろはを教えたりしますが、ただ、黒い画面にHello, worldと出してばかりではつまらなくて飽きてしまうので、何か工夫をしたりします。そこに、ある年入った新人が強烈なセンスのやつでした。

まずはHello, worldを教えて、次にじゃあ、「数あてゲーム」を作ってくださいと課題を出します。数あてゲームってのはこんなのですね。

私が思った数字を当ててください

1
もっと大きいです。
100
もっと小さいです。
50
もっと大きいです。
75
惜しい!
77
正解!

答えの数字はランダムじゃない方が面白いんですよ!どの数字を選ぶかは作る人次第ってわけです。特定の数字を入れたら面白いメッセージをいれるのもありです。その課題に対して彼が作って来た作品はこんなのでした。

1〜300までの話術であの子を口説け
次の話術は何にしますか? > 1
きみはオヤジギャグを言った。あの子はしらけているようだ。
次の話術は何にしますか? > 200
きみの話にあの子はクラっときた。
次の話術は何にしますか? > 220
ここは日本の山の話をしよう
次の話術は何にしますか? > 223
きみは富士山の話をした。。。君はあの子の心をゲットした

のような感じだった思います。正確な文章とかは残っていないので、適当に僕が書いているので異なっていると思います。
ソースコードは延々のif文でした。printfとscanfだけでよくここまで作るものだと、クリエイティブな人ってほんとちょっとしたものを与えるだけで、作品を作れるのですね。

次に与えた課題は、rand()関数を教えたので、じゃんけんゲームを作ってくるようにという課題でした。想像できますか?彼が作って来たものはこんな感じだったかなと思います。(記憶をたどっているので多分違って、もっとナイスな文体です)

君の話術で彼女を落とせ
君の精神力:100
彼女の精神力:100
1> 積極的な話題 2>無難な話題 3>必殺技

1〜3がじゃんけんになっていって、勝ち負けによって「精神力」が削られていくのですね。出力されるテキストがまた面白かったです。まあ、少々テーマが下品ではありますが、彼の文体はそれが許せる面白さがありまして。僕が書くとただのヘンタイみたいなのですが、そこら辺が彼のセンスでした。

悪のりした僕は、

「僕がビジュアルな画面を出力するインターフェース作るから、きみは黒画面にprintするだけのゲームを作ってくれれば、本格的なゲームが作れるよ!」

と言いました。ということで、作りました。
僕が人生で一度だけギャルゲー*2を作った黒歴史ww

それは、画面に

ぷるぷる

と書くとキャラクターがぷるぷる動くとか、ピカピカ光るとか必要なエフェクトを彼と話し合いながら、僕はJava Swingを使って作り上げました。この機会がなければ、まず作らなかったでしょう。僕がSwingを使った経験はこのときだけです。それにしても
学祭の当日は恥ずかしかった!!
けど今では良い思い出です。

そんなわけで何が言いたいかというと、僕にないものを人に提供してもらって、僕はその人にないものを提供する、その結果作品が残るというのが気持ちよかったというわけです。つまり、クリエイティブな才能を持っている人に、その才能を発揮する手段提供することの楽しさを感じてしまい、それが今の仕事にも繋がったと思います。

だから、昨年秋の発表(JJUG CCC 2013 Fall で発表してきました - susumuis Info)で、一緒に発表してくれたデザイナーさんが

「プログラミングできないのに、自分でプログラム作ってるみたい」

と言ってくれたことは、僕にとってこの上ないうれしい言葉でした。

自分は今Web業界に身を置いていますが、Webの好きなところは、誰でも簡単にページが作れて、それはCSSによって自由に見栄えをいじることができ、JavaScriptによって動かせてしまうところです。コミュ力の乏しい人間なのでSNSとか人と繋がってどうのこうのってのは実はあんまし興味がないんですよね。

はっきり言ってビジネスとしてうまく行くかどうか、人を幸せにするかなんて二の次です。コラボすること自体が楽しいんだから仕方がない。それができるなら、どんな努力もするわけで、それが僕が技術を勉強する原動力なのかなと最近思っています。

今日もそういうわけで、自分の技術を磨き、コラボ相手を探しています。

以上、何の価値もない駄文をここまで読んで頂きありがとうございました。

*1:もうビルドする環境を作るのは辛いかもしれません。どうしても動かしたければ参考: https://www.nttdocomo.co.jp/service/developer/make/content/iappli/tool/doja/doja51/

*2:というにもおぞましいくらいB級なクソゲー


Java8をインストールしたMacでもさくらVPSのVNCは使えましたという報告

今日のお題:

さくらVPSのVNC機能を使う場合はJava6を入れなきゃいけないという誤解→ウソ→Java8でも動いたよ!

筆者環境

MacBook Air (11-inch, Late 2010)
OSX 10.9.2 Maverics
Safari 7.0.3
java version "1.8.0"

経緯:

急にサーバー立てたくなりまして。世間ではDockerとか流行ってるんですが、ここ数年サーバーとは離れてしまってCUIコマンドに対しても自信がないLinux弱者と化しているので、まあ、ライト路線でさくらVPSでも契約して勉強し直そうかと思いたちますした。

東京リージョン、メモリ1GB、HDD 100GB、2コアという、最小構成で契約をし、さて、使うかと思ったら初期OSがCentOS、別になんでもいいんだけど、学生の頃Debian Etchと親しんだのでapt系がいいなと思い、さくっとOS再インストールボタンをポチ。

ブラウザーからVNCが立ち上がって簡単OSインストールが出来るのがVPSの売りでしたよね。って、あれ?VNCウィンドウが立ち上がりません。

Java6を入れなきゃいけないという誤解

おかしいなと思って、調べてみるとこんな記事が。。。

MacでさくらVPSのVNC - 一茶庵

さくらVPSのVNCコンソールはJava 7 で使用できない
Java 6にダウングレードするとVNCコンソールが動く

そうなのか?それを裏付ける情報続々

さくらVPSのVNCコンソールを mac maverics から起動する | 新なんでもありBLOG

Java を全てアンインストールし、Apple 社の Java-6 をインストールし、JavaAppletプラグインのシンボリック・リンクを張り直して、何とか maverics(10.9.1) からさくらVPSのVNCコンソールが動くようになった。

えーーー。

僕はJavaエンジニアだから、複数のバージョンのJDKをインストールすることは互換性検証のためにも構いませんが、自分がアプリを使う実行環境としては、最新のものでないとちょっと怖いです。

しぶしぶ Apple Developer Center から "Java for OS X 2013-005 Developer Package" をダウンロード、インストール。シンボリックリンク張り直しそしてブラウザとの関連付けをしようとしましたが、やっぱり怖いよう。ウィルスとか入るかもしれない。

Java7でも大丈夫だよという情報

そう思ってもう一度ググり直してみました。

ひとりぶろぐ » さくらVPSのVNCコンソールをJava 7で起動させる

危険を冒してJava 6にダウングレードしなければならない
的な認識で対処方法を書いているサイトも見かけましたが、それは誤解。ダウングレードの必要はありません。

そうでしょ!やっぱそうでしょ!

試しにリンク先の方法で試してみます。と言っても、簡単で、「システム環境設定」から「Java」を選んで、「Javaコントロールパネル」が開いたら「セキュリティ」のタブをクリックし、「例外サイト・リスト」欄の「サイトリスト編集」をクリック、「追加」をクリックして「https://secure.sakura.ad.jp/」を追加。

以上で、特にマシンの再起動とかもせず、ブラウザも再起動せず、別ウィンドウにVNCウィンドウが立ち上がりました。

めでたしめでたし。

OSインストールは後日

今日は遅くなっちゃったんで肝心のOSインストールは後日にします。
DebianとUbuntuどっちにしようかと見てみるとUbuntu 14.04がそろそろ出そうなので、ちょっとだけ待ってみますかね。*1

*1:毎回サーバー立てようとすると、Ubuntu ??.04 がもうすぐ出そうってなってる気がする。春は鯖立てしたくなる季節です