Webエンジニア susumuis の技術ブログ

このブログの内容は個人の見解であり、所属する組織の公式見解ではありません

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

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

このブログのプロフィールとか、僕の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 がもうすぐ出そうってなってる気がする。春は鯖立てしたくなる季節です

JVM Operation Casual Talks に参加してきました。

JVM Operation Casual Talks : ATND に参加してきました。

会場はLINE株式会社渋谷オフィス、ヒカリエの27階です。中も景色も綺麗ですね。

 

「カジュアルトーク」なんて言うものだから、きっと、どこかの「基礎勉強会」のような怖い勉強会であることを覚悟して行きました。僕みたいな現場で場当たり的にやってるエンジニアは刺されて来るのではないかと((((;゚Д゚))))ガクガクブルブル

 

コンテンツは

@stanaka15分でわかるJVMのメモリ管理

@oranieCassandra運用で実施しているJVM監視について

@waysakuSpray(Akka)運用でJVMをCPUスケールさせるために行った事

その後LTでした。

 

中でも、最初に発表された@stanakaさんのスライドが非常に網羅的に説明されていますので、JVMに関わる可能性がある方は一度目を通す価値があると思います。

 

さて、僕は、自分がJavaプログラマーとして開発したWebアプリケーションを自社のインフラチームと協力して、時にはGCオプションやインフラの調整を依頼し、時にはアプリのコード改修などを行える立場でJVMと接しています。一方、ここで発表された方々は、他人が作ったJVM上で動くアプリケーションを運用する立場の人たちでした。そういう意味ではうちのインフラチームの人たちに近い立場の方々ですが、自分でソースをいじることが容易ではない状況下での運用の苦しさもあるでしょう。

 

内容は意外と業務を通じて関わってきたことだったので、刺されるというよりは、みんな同じように苦労してるんだなと共感することが多かったです。

 

ちなみに、現時点の僕のうとい理解ではこんな感じです。

G1GC

トータルのGC時間は多く、一回あたりのGC時間が短い

6G、あるいは10GB以上のヒープサイズを割り当てている時に効果がある

Webなどの無停止で運用したいサービスで、メモリサイズが贅沢に割り当てられるときに有効

CMS

トータルGC時間が短い

コンパクションが無いため断片化する。長く無停止運用をすると遅くなる

バッチなど、トータルスループットが求められるときに有効

JVMオプションでのチューニングが必要(nekopさんのエントリを見るべし!)

 

ラストのパネルディスカッションのコーナーでは、なぜJVMを使うのかの問に対して、パネラーの皆さんは「使いたいアプリ(Hadoop、Solr、Cassandra等)がJVM上で動くから」とおっしゃっていました。特にPerlなどのLL出身の人には、GCでStop the Worldしたり、気軽に落とせないということが不満らしく、その反論として落ちないことが良い、という意見がありました。それに対し、いつ落ちてもいいように環境を構築するべきなど色々議論が深まりました。

 

僕にとっては、Javaでしか業務経験がなく、JVMを選択する理由としては「JVMが一番知っているから」というそれこそウルトラ消極的な理由しかありません。今回は、別のバックグラウンドがある人達がJVMに触れた感想を聞くことができたことは非常に有意義でした。

 

ちなみに、この発表の最中僕は下記の間違ったツイートをしたので訂正します。

既に削除していますが、Togetterに残ってしまっているのでごめんなさい。

PalallelGG => Compactionしないので時間が経つと遅くなる #jvmcasual そうなんだよね。

正しくはConcurrent Mark Sweep (CMS)の説明です。「そうなんだよね」とか知ったかもいい加減にです。orz

これは、うちのインフラチームの方がこの辺りチューニングして色々苦労していた話を聞いたので、このことかなと思ったのですが、後になって間違いに気づいた時には既にTogetterにまとめられていたので遅かったです。

 

写真

f:id:s-ishigami:20140408100444j:plain

ヒカリエオフィスエリアのエントランス(広っ!)

 

 

f:id:s-ishigami:20140408100210j:plain

 

 

 

27階景色いい

f:id:s-ishigami:20140408100408j:plain

 

 

入館証もLINE!退館時に返さないとこの会場が使えなくなるから!と言ってました。

f:id:s-ishigami:20140408100411j:plain

クリアファイル配ってました。