watermint.org

Takayuki Okazaki's blog

先月のJJUG CCC 2010 Springでは、GlassFishで即習!Java EEパフォーマンスチューニングとトラブルシューティングというセッションでお話をさせていただきました。今回、資料を準備するにあたって、話の主軸をどこにおくか最後まで迷いましたが、本業で謀殺されていたためあるいみ消去法で決めざるを得ませんでした。話そうと思っていた主軸の一つはかなりテクニカルかつ、具体的な例を挙げてGlassFishでパフォーマンスチューニングやトラブルシューティングを行う方法の紹介です。残念ながら今回はこのネタでの発表は準備が間に合いませんでした。経験上、ある問題があったときにそれを解決に導く方法や、GlassFish特有の便利な機能を見つけることは出来ると思っていますが、発表に耐えるほどわかりやすく、GlassFishの特色を出したサンプルアプリケーションの作成が間に合いませんでした。こういった話を期待されていた方には大変申し訳ないです。

R0030389.jpg

もう一方の、今回お話をした話はもう少し大局的で、概念的なお話です。実際のところ、ここ数年でこういった話を聞く機会は少しずつ増えたものの、現場を見て回ればあまりそれらの知識が生かしきれていないようにも感じていました。今回の発表の趣旨はおおざっぱに言えば「便利なものをもっと使おう、そのために使える環境を準備しよう。あるいは使えるように交渉しよう」という内容でした。

_DSC9998.jpg

前提として、よくあるトラブルシューティング/パフォーマンスチューニングの現場を説明しておきましょう。プロジェクトメンバーは多くの場合すでに多方面から時間的/政治的プレッシャーを与えられており時間的/精神的な余裕はあまりありません。新たなツールを導入するような時間もコストも許されず、対処方法は似たような事例をGoogleで検索する程度です。Googleで検索した情報がぴったりその状況を引き起こしている原因に当てはまれば良いのですが、それは一攫千金を夢見て宝くじを買いに走るのと同様、確率に身を委ねているにすぎません。Googleで検索した情報は既に現在のバージョンのプラットホームには意味の無い情報だったり、現在扱おうとしているトランザクションの性質と、検索で見つかったブログエントリーが問題としているトランザクションの性質が多くの場合違うからです。

_DSC8716.jpg

では本質的に、問題を解決するためにはどうしたらいいでしょうか。問題を解決したり、あるいは本当に解決されたことを確認するためには問題の原因を探る必要があります。原因が分からなければ再現手順もわからず、解決したことを示してみせるにも説得力がありません。経験上、トラブルシューティングを行うときのほとんどの時間は問題の原因を探すこと、とくに問題を再現することに充てられていると言っても過言ではありません。問題の再現は、比較的簡単な場合もありますが、プロジェクトメンバーが時間的/精神的に追いつめられるほど深刻な問題の場合、問題の再現すら難しいというケースがほとんどです。

_DSC3954.jpg

本番環境で発生している問題は、なかなかテスト環境では再現しません。データに起因する問題、ハードウエアやプラットホームの違いによる再現性の違いによって、問題の再現は困難を極めます。また、仮に似たような問題を再現できたとしても、それが本当に本番環境でおこっているトラブルやパフォーマンス劣化と同一なのか、確認することはきわめて難しいことです。こうした問題は、本番環境と切り離された環境、少ない情報で作業せざるを得ない環境特有の問題です。本番環境で直接プロファイリングをしたり、ログやダンプの設定を動的に変更したり、プローブを加えて仮説を検証することができれば問題の原因特定は飛躍的に効率的になります。

_DSC3951.jpg

ツールを使うことを勧めると「はい、それはわかっています。しかし、xxxx」というような返答は常にあります。SOX、J-SOXなどをきっかけとした職務分掌/権限分掌の確立もより問題を複雑にします。?本番環境にデバッガやプロファイラが接続できればどんなにいいことでしょうか。そのシステムの設計や開発に携わったエンジニアであれば、いくつかの仮説を持って問題に取り組むことが出来ます。しかしながら、仮説を検証するためには情報を試行錯誤しながら集めなければならず、1ヶ月に1度しか変更の加えられないシステムに対しては仮説の検証も困難を極めます。

_DSC8496.jpg

さて、だからといってこのまま闇雲に問題解決に取り組んだり、じれったい思いをしながら雲をつかむような思いでログをなめ回すことを続けるべきでしょうか?日本のエンジニアは勤勉で、優秀です。しかしながら、ツールが自由に使えないがために諸外国の経験の浅いエンジニアと同等の生産性しかだせないとしたらどうでしょうか。ツールが自由に使えるならば3日で問題が解決するにもかかわらず、ツールが自由に使えないがために最低2週間は問題の解決に時間を要するとしたらどうでしょうか。より安く、より速く問題を解決してくれる海外に頼りたくなるのが自然な思考です。多くの場合、スポンサーが有用性を理解していないがために非科学的に禁止されたツールの利用禁止は、そろそろ日本のエンジニアが主体となって、利用を認めるよう主張を始めるべきだと思っています。とてもおとなしい、主張しないエンジニアの言い分はいままでも、これからも認められていかないでしょう。経営や運営の立場をもつ人々の視点からみれば、そもそもなぜ問題の解決に時間がかかるのか理由もわからないまま、(多くの場合精神的なセキュリティーを根拠として)ツールなんて無くてもよいと思われているにすぎず、エンジニア側の主張がそもそも足りないのだと思っています。

_DSC8462.jpg

もの言うエンジニアを増やそうという、主張ではありませんが、科学的に有益なものはもっと主張して、自由に使えるような環境を獲得する。これが、この先10年〜20年先に日本のエンジニアが職を失わず、また国際競争力をもちつづけられるための必須条件ではないかと考えています。以上が、発表でのおおまかな主張でした。小手先のテクニックと比べれば、こうしたもっと土台となる問題が、少なくとも前職Sunにおいて見えてきた、エンジニアにとって一番の問題解決の障壁になっていることだと思っています。



JJUG CCC 2010 Springに来ています。先ほど発表しました資料を公開します。

先週の土曜日は日本Javaユーザグループ(JJUG)のJavaOne 2009報告会でした。今回は、ライトニングトークでしゃべらせていただきましたが、事前になかなか時間がとれず資料は当日つくることに・・。隣にaqubiさんがいらっしゃったのですが、資料作成にいっぱいいっぱいでaqubiさんを含め他の方ともあまりお話できませんでした・・。
_DSC0106.jpg
丸山先生よりJavaOne全体の報告。SunはOracleに買収されてしまうこともあり、JavaOneは今年で最後ではないか(少なくともSunとしてのJavaOneは最後)という哀愁が語られました。
_DSC0107.jpg
下道さん。JavaOneというよりは、同時に開催されたCommunityOneの報告。
_DSC0108.jpg
クラウドのデモ。正直GUIはしょぼい気がしますが、本当に使えるようになったらおもしろそうです。それにしても、Sun神宮前オフィスの地下会議室はどうも電波の状況が良くないですね・・。Emobileもつながりません。
_DSC0109.jpg
櫻庭さんより、JavaFXおよびJava SE 7について。いつも通り時間をかけて作られたことがよく分かるプレゼン。プレゼンソフトもJavaFXでかかれています。
_DSC0111.jpg
木村さんよりJavaのエンタープライズ周りについて。

ライトニングトークです。去年に引き続きJavaOneに行かないままJavaOne報告をすることになったのですが、今年はAIR JavaOneと題してネット越しにJavaOneを楽しむ方法をご紹介しました。下記に参考URLをリストしておきます。

_DSC0112.jpg
マイコミジャーナルに執筆されている杉山さん。プレスの立場での参加についてと、メディアのあり方について話されました。
_DSC0113.jpg
技術評論社の馮(ふおん)さん。杉山さんと同様、プレスとしての参加について、メディアのあり方について。
_DSC0114.jpg
続いて櫻庭さんより。今回のLTは固い内容が多かった、との話でした。櫻庭さんからはサンフランシスコ(というか海外に行くときの)での食事情改善方法について。ミシュランガイド、ぜんぜん使ったことありません。櫻庭さんが今回べた褒めされていたOpenTable。その日の予約を、Web上のみで完結できるというのがいいですね。ちなみに、OpenTableは日本版(東京)もあります。東京カレンダーとのコラボもしてるようです。
_DSC0115.jpg
最後は太田さんよりCommunityOneスピーカーとして話された時のお話。

今年から日本Javaユーザグループ(JJUG)スタッフになりました。あと、関わっているJava系のコミュニティー Glassfishユーザ・グループ・ジャパン日本JavaFXユーザグループCommunity of Communitiesに入れていただきました。
_DSC9626.jpg

先週は米Sunの川口耕介さんがいらっしゃっていたので、関連するイベントにだいたい参加してきました。そういえばSECRETS of the ROCKSTAR PROGRAMMERSを持って行ってサインしてもらおうと思ったのに忘れてました。
_DSC2712
火曜日。Javaホットトピック・セミナーの特別号。
_DSC2716
MetroJerseyのお話でした。
_DSC2735
懇親会はわらわら。用賀のセミナーで笑笑といえば、一番奥のこの席がいつも定番です。毎回入店の際に2時間までと言われますが、今までのところ途中で追い出されたことはありません (^^;
_DSC2800
水曜日はアプレッソでのセミナー。会場に行くとその日発表されたばっかりの新型MacBookを持っている人が二人も!おそるべし・・。
_DSC2812
川口さんのプレゼンはsorcererについて。何かの勉強をするのにそこそこ複雑なお題が必要というのはいい言葉でした。最近やっている「方眼紙みたいなSwingコンポーネントを作る, その1, その2, その3, その4」は、ほとんどこれをきっかけです。具体的なテーマが決まったのはその後の懇親会でaqubiさんとお話ししたのがきっかけです。
_DSC2838
その後の懇親会は二日連続のわらわら。t_yanoさんがswitch文の使い方についてえらくdisられてたのが印象的でした。ただ、連日の飲み会続きで体調が悪くてあんまり記憶ありません。自業自得・・。
_DSC2857
木曜日はJJUG CCC(日本Javaユーザグループ クロスコミュニティーカンファレンス)。用事があったので午前中の基調講演や午後のセッションも聞けず、BOFから参加。エンジニアのためのキャッチコピーの作り方というテイストの違う内容でしたが、ブログなどで感想を見る限り、おおむね好評なようで安心しました。
_DSC2874
懇親会の会場につくとそこにはJJUGのかたまり(40人ぐらい)の予想を超えるjava-jaのかたまり(60人ぐらい)が・・・。java-jaおそるべし。
_DSC2898
懇親会の会場はぎゅうぎゅうな感じでした。最初に座った席の近くには日本Androidの会の方々がいらっしゃいました。Androidの会への入会を勧められ、せっかくのご縁なのでこの機会にAndroidの会へ入会しました。まだ公開されたAndroidのソースもダウンロードさえしていなければ、エミュレータさえ動かしたことありませんが・・。

_DSC2902
左からキムティさん、はっし〜〜さん、川口さん、きしださん、nekopさん。
_DSC2950
金曜日はグラジェーの飲み会。
_DSC2916
誰にTシャツを渡しているかすべて把握している寺田さんによってまだTシャツをゲットしていない方々にTシャツの授与が行われました。
_DSC2994
二次会は会場探しに困りました。さすが金曜日・・。なかなか空いてません。
_DSC3008
何とかは入れましたがぎゅうぎゅう・・。特に長身なnekopさんは窮屈そう。
_DSC3026
土曜日はcero-tさんの川口さんを囲む会。飲み会5日目ということもあって、ほとんど記憶ありません・・。
_DSC3030
二次会は中華料理店らしきところ。ドリンクの注文がうまく通りません。一つ確認に着たと思ったら、ひとつ忘れて帰るような感じです。でもあまりうるさくなくていいお店でした。
川口さんおつかれさまでした!

昨日はJJUGクロスコミュニティー2008 FallのBOFで「エンジニアのための、キャッチコピーの作り方」というタイトルで話してきました。ほかのBOFスピーカーの方々はちゃんとした技術的な内容でしたが、このセッションはだいぶテイストが違う感じになりました。

キャッチコピーの作り方、まだまだ勉強中ですが少しでもご参考になれば幸いです。

その0のエントリを書いてから一ヶ月もほったらかしにしてしまいました・・。すいません m(._.)m
すでにJJUGの告知ページにも出ていますが、今回は「エンジニアのためのキャッチコピーの作り方」というタイトルにしました。セッション概要は

プレゼンのタイトルや、ブログのタイトルを考えるときいつも流行り言葉をちりばめるだけで満足していませんか? バズワードに頼らない自分だけのキャッチコピーを考えてみましょう。

としてあります。きしださんのページにタイムテーブルの告知も出ていますが、18時35分頃から20分程度時間をいただけるようです。当初は15分ということでしたが、5分増えたことですこしBOF(Birds of a feather)らしく、双方向的なやりとりができたらいいなと思っています。BOF枠では、よういちろうさんのOpenSocialや、ヌーラボ縣さんのCubby太田さんのHadoop+Lucene水島さんのScalaなど、JJUGらしいテクニカルな話題が中心ですが、一つだけ息抜き程度にみていっていただければ幸いです。もっと息抜きしたい方はjava-jaによるライトニングトークがおすすめ。
_DSC1622
さて、なんだかんだでイベントも来週に迫ってしまいましたが、その0で告知したとおりどういったことをしゃべるか、このブログでねたばれさせていきたいと思います。なお、プレゼンソフトを自作しようと思っていましたが時間の都合上、そこまではできないかもしれません・・。見栄えよりもコンテンツのほうが大事ですからね・・。背に腹は代えられません。
さて、今回のテーマはあえて技術ネタを外して、キャッチコピーの作り方としました。個人的にはいままでコピーライターとして働いた経験もなければ、マーケティングの仕事をしていたわけでもありません。ただ、全く知識ゼロということでもありません。
_DSC1601
今年の4月から東京コピーライター養成講座という夜間のコースに通い始めました。別にこれもコピーライターに転職してやろうと考えて通い始めたわけではなく、たまたま手に取った宣伝会議のコピーライター、書く語りき。という雑誌に載っていたコピーライター向け教室の広告がきっかけです。この雑誌に載っていたのは、とうぜん宣伝会議の雑誌と言うこともあって宣伝会議の教育講座だったんですが、ぐぐって調べてみたところこの宣伝会議以外にも、いま行っている東京コピーライター養成講座(TCS)、というのがあるのがわかりました。場所が宣伝会議は青山、TCSは銀座ということで、土地勘のない銀座で開催されている方を選ぶことにしました(通えば覚えると思って)。
_DSC1590
おおよそ半年通ってキャッチコピーについてわかったのは:

  • キャッチコピーは作り込むことよりも、発見することを大事にする。

ということです。キャッチコピーのようないわゆる宣伝文句は、ウケをねらっていろんな要素を詰め込みたくなりがちです。たとえば、「Web 2.0時代のクラウドコンピューティングによるSOA基盤のデザインパターン」とか。場合によってはさらに「かんたん〜」とか、「最新〜」と形容するかもしれません。それはそれで一つの方法ですので強く否定はしません。でも、より効果的なのは多くの場合、広告ターゲットとなる人々にとってより共感でき、具体的なイメージのわく言葉です。そういった言葉は、設定したターゲットの人々が何に共感しそうか、また、それは具体的に何か?といった疑問の答えを探し求め、発見する作業です。(最終的調整はするにせよ) 単に流行言葉をちりばめて表現をかっこよくしたり、ウケそうな言葉を付け加えるような作り込み作業とはアプローチがかなり違います。
_DSC1560
共感を得る言葉というのは、意外といろんなところに落ちているんですが、それらをピックアップしてキャッチコピーにするのはやってみるとなかなか難しいことです。たとえば、クラウドコンピューティングを説明したいときに、「クラウドコンピューティングとは」というようなキャッチコピーよりも「クラウドコンピューティングって何に使うの?」のようなある素朴な疑問の方が、クラウドコンピューティングの内容をよく知らない人にとっては共感が得られやすいと思います。共感が得られて、具体的で、かつ、訴求したいポイントともよく合致するような表現はなかなか難しいことです。そりゃ、コピーライターというプロの職業が成り立ってるんだから、素人の私たちがやるのは難しくて当然。ただ、プロのコピーライターと比べて我々のアドバンテージは、これならエンジニアに共感が得られそうだ、という感覚がプロのコピーライターよりも敏感に感じられることです。今回のBOFではたった20分しか時間もありませんが、このあたりのディスカッションが少しでもできればいいなと思っています。

9月25日に日本Javaユーザグループ(JJUG)のナイトセミナーでGlassFish Night Seminarが開催されます。今回はタイトルにあるとおり「作ってみた」ですから、作ってみた結果を切り口にJavaやJRubyなど開発のトピックをご紹介していく予定です。

GlassFish で、作ってみた。

岡崎 隆之 (Glassfish ユーザ・グループ・ジャパン)

最新 GlassFish は単なる Java EE 実行環境ではなく、多彩な機能が盛り込まれた遊べるアプリケーションサーバです。
今回は開発の実演を交えながら、Java はもちろん、JRuby での開発に便利な機能をご紹介します。
この秋は、思いっきり GlassFish で遊んでみましょう!

R0027850
(写真は先月のJRubyとJythonのJJUGクロスコミュニティーセミナーの様子)

10月のJJUGクロスコミュニティー・カンファレンス。きしださん15分程度の枠をもらいました。何をしゃべるかはまだ決めていませんが、15分という絶妙な長さなので、ちょっと遊び心を入れつつ、息切れしないぐらいで終われそうです。さて、遊び心を入れるにはどうするか・・・。最近のLTはいろいろ仕込まれたネタが面白くて敷居があがっています。ニコニコ動画をみていても、去年の今頃は作ってみた人が誰でも手放しに絶賛されていたのが、今やセミプロじゃないの?というぐらいの人がわんさかといて、評価される敷居はぐんとあがっている感じがします。
R0027902
まあ、それはおいといて、今回は違う試みとして、ネタは可能な限りこのブログで暴露しておくことにします。仕込みのネタ、ネタを仕込んでいく過程。それに、発表の内容も。なので、このブログを読んでいる方は、全く発表をみなくてよいか、冷やかしのために見に行くかのどちらかというスタンスをとることができます。
R0027899
まずはプレゼンソフトです。普段、プレゼンソフトはNeoOfficeOpenOffice.orgを使っています。でも、去年のプレゼンではJava SEで作ってみたり [blogs.sun.com]JavaFXで作ってみたり [blogs.sun.com]とか。最近だと、Illustratorを使って資料を作った物 [glassfish.jp]もあります。ページ物をつくるなら、オフィス系、あるいはちょっとトリッキーにIllustratorがいいでしょう。でも、もっとユニークなパフォーマンスを考えるなら独自に作ったプレゼンソフトがいいに決まっています!(自己満足の世界ですが)
R0027896
ということで、今回もまたプレゼンソフトを新たにスクラッチから起こして作ることにします。そう決めたら早速設計を考えていきましょう。過去何回か作ってきた経験から言うと、しんどいのはレイアウトを決めるところです。普通に箇条書きを何項目か出すだけなら、そんなに難しくないのですが、途中に図を挟んだり、ソースコードを挿入したり、効果用の特殊オブジェクトを埋め込もうとしだすととたんに処理が面倒くさくなります。実際に過去、プレゼンの内容をなんとかするよりも、このレイアウトを解決する方が時間がかかった気がします。
R0027895
そこでレイアウトを自前で用意するのはあきらめて、既存のコンポーネントを流用することにします。今回流用をもくろんでいるのがJava用のPDF Renderer [pdf-renderer-dev.java.net]コンポーネントです(注:pdfrenderer.dev.java.netというプロジェクトもありますが、別物)。これは、去年のSun TechDay 2007 TokyoのJavaFX Script and JRubyというセッションで、発表者のNandiniが使っていたので知っている人もいるかもしれません。このPDF Rendererは、HTMLのレンダラであるJWebPaneと同様に、JavaFXプラットホームの表現力を向上させる目的で開発されているコンポーネントです。
R0027894
PDF RendererコンポーネントはSwingの部品として使うことができ、都合の良いことに、任意のページをBufferedImage等として取り出すことができます。一度BufferedImageになってしまえばこちらの物で、透明にしたり、回転させたり、3Dにテクスチャするのも思いのままです。それに、レイアウトはOpenOffice.orgでも、Illustratorでもとにかく手元にある優れたデザインツールを流用すればいいのです。ということで、無駄な部分から決まってしまいました。まだ1ヶ月ちょっとあるので、15分をどう使うかはぼちぼち考えていきましょう。それでは。