Category Archives: 勉強会レポート

Seasar Conference 2015に参加してLTをしてきました #seasarcon

2015/09/26、5年ぶりに開催された、
Seasar Conference 2015 Not 同窓会
に参加し、次のスライドでLT登壇してきました。

なぜLTをしたのか

僕はこれまでにもMayaa関係の勉強会登壇を繰り返してきました。

JJUG CCC 2013 Fall: テンプレートエンジンを利用してプログラマーとWebデザイナーが共同作業をする上で大切なこと
JJUG ナイトセミナー 2013/08: from JSP to Design-friendly Template Endine JSPからMayaaに移行した本当の話

このブログでも、Mayaaについての発信が多めです。

5年間Mayaaを使って思ったこと
Mayaaでm:idの解決の仕方を自分好みにカスタマイズする方法
MayaaなどRhinoを使っていてハマること。It is not a function, it is String
2年間Mayaaを使ってわかったこと その2
そろそろ2年間Mayaa使ってわかったことを書く
MayaaでHTML5のスマートフォンページを作る際にはまったこと
Mayaaファイルを命名規則から一括作成するEmEditorマクロ
MayaaでGuice2.0 AOPを使うとうまく動かない件〜解決編
MayaaでGuice2.0 AOPを使うとうまく動かない件

Mayaaは、自分が大変お世話になっているOSSで、不具合報告などでOSS活動にも関わらせていただくなど、技術者として成長させてもらった思い入れの強いライブラリです。

この日、作者である栗原 傑享さんや、現在メインコミッターを務められる須賀 幸次さんがいらっしゃるということで、彼らへの感謝の気持ちを表現したいという、実に個人的な動機がLTをした理由でした。

それにしては、Seasar Foundationの重鎮の方々に好意的に受け入れて頂いたようです。考えてみるとMayaaが生まれた土壌である、Seasarコミュニティの存在も肯定する内容でもあったからかなと思います。そういったわけでは、Seasarコミュニティーに対しても感謝の気持ちを明確に表すべきでした。この場を持って、感謝の意を表明致します。

なぜ今SeasarConなのか?

Seasar Conference は2010年を最後に開催されず、Seasar2も既に機能の追加が中断されていました。既に、JavaのトレンドはSpringやJava EEに移行しており、Seasarは時代の中でフェードアウトしたように見えていました。その中で、なぜ?今 Seasar Conference なのか?と多くの方が興味を持ったと思います。

蓋を開けてみると、5年前まで、あんなに先導的なメッセージを発信して日本のJava系エンジニアの最大のカリスマだったひがやすをさんが、どうも、中立的というか、大人な話し方をされている印象でした。まして、Seasar2のサポート終了(2016/09/26)を宣言される。あれあれ、なんか暗いぞ??

そこへ栗原 傑享さんの喝が入ります。どどどんな展開((((;゚Д゚))))ガクブル

5年間Seasar Conferenceが行われなかった裏で何が起きていたかについては、理事長の橋本さんのセッションで説明がありました。開催されなかった理由:

  • イベント駆動開発→開発駆動イベント→DIのメンテナンス終了、ワクワク感より調整の難易度が上回った
  • NPO運営はスポンサーに支えられている。ムーブメント、流行に乗る必要がある
  • NPO改名問題があった

NPO活動を行うにも、イベント一つ行うのも、裏での苦労が絶えないのだなあということが伝わりました。その一方で、福岡の方では「明星和楽」というイベントが行われ、これは「テクノロジーとクリエイティブ」にフォーカスしたイベントで、業界の流れがSIからスタートアップに向かう中での実験として成功だったそうです。

自分は新参者なので、知りませんでしたが、Seasarコミュニティを支えていた方々は、SIerの精鋭たちが中心であって、SeasarとSI・受託開発という枠組みは切っても切れない存在のようです。2010年頃には、ひがさんはSlim3をリリースしていてAppEngineなどでのスタートアップ志向にシフトしていたし、橋本さんの経営されるヌーラボは、Cacooなどのサービスを打ち出していたので、どちらかと言うと、サービス指向をもともと持っていた人たちだと思っていましたが、SIにおける、エンタープライズJavaからのニーズがSeasarの原点だったのです。

2010年から、2015年の間に震災やスマホブーム、ソシャゲブーム、クラウドの興隆を経て、今時「受託かスタートアップか」という議論自体が古臭いと思いますが、Seasarというコミュニティは、その原点と、その名前が足かせとなって、進むべき方向性に難儀していたそうです。こういうことを赤裸々に話してくれたことに大変感謝します。

個人的には、僕のような、当時接点を持てなかった者がかつてSeasarで有名だった方々と繋がることができたのが大変ありがたく思いました。懇親会にも参加させていただきましたが、これからどうするのかというような議論が活発になされているようです。解散か?改名か?なにかの転換があるのか?Seasarの次の動向に期待したいです。

栗原さんの海外のIT事情の発表が面白かった

Mayaaの開発者にして、グルージェントの創業者で、サイオスの幹部として、現在はシリコンバレーに生活されてスタートアップをされている栗原 傑享さんの発表は刺激的でした。

アメリカでは、徹底的に生活の効率化が行われて、公共インフラが民間企業の寡占状態にある。例えば、警察を呼べばお巡りは来ずに、メールアドレスを聞かれて、CoplogicというWebサイトから被害届を出すように言われる。そのCoplogicは民間企業!部屋を探すときはcraigslistが必須。Coplogicもcraigslistもナニコノ垢抜けないデザインは!

「少年野球はミスも出やすいですから、基本積極プレーで」(引用:MAJOR 2nd 第25話)

これがアメリカのスタートアップのメンタルのようです。僕たちは、FacebookやGoogleといった超巨大な企業しか知らないために、すごいイメージがありますが、あれはメジャーリーグ、シリコンバレーのスタートアップは大半が少年野球!(マイナーリーグですらないのか。。。)彼らはCSSも書かずに平気で2塁まで突っ込んでいくんだそうです。

このメンタルでくると、要件定義をして、スケジュールを引いて、アサインして……のやり方では間に合わないのは確かですね。

前述のように、アメリカは公共インフラが徹底的に効率化され、民間企業の寡占状態にあります。この状況は、間違いなく未来の日本にもやってくる!今のうちにcraigslistをパクったら儲かるwwwまあ、100パーセント同じにはならないと思いますが。(^^;

個人的な考察:2010年から2015年という時代について思うこと

稚拙な考察ですが、2010年ごろ不況もあり、業務システムのIT化も既にコモディティ化が済んでしまった以降、今までの形態のSIerのニーズは減少し、クラウドなど黒船の到来によって、この世界は縮小するのは明らかでした。

では、多くのITエンジニアが職を失ったのかといえば全く逆で、未だに「エンジニアが足りない」と言っている。何が起きたかといえば、これまでよりも多くのことにWebやスマホなどのITが使われるようになった(リアルなお店でものが売れなくなった)と言われます。

しかし、この業界の流動性は非常に速く、今までみたいにじっくり良い物を作っていくより、手が早い方が求められました。そうすると、1からスクラッチでシステムを作るより、WordPressを改造して目的を実現するとか、既存の何かをいじって楽をできる方が重要で、そうなってくるともう言語やフレームワークがどうこう言っていられない。WordPressに乗っかるのか、Google Appsに乗っかるのか?

ただ乗っかっているだけだとプラットフォーマーに吸い取られる仕組みになっています。そこで自ら何らかのプラットフォーマーになるか、あるいはレベニューシェアなど成果にコミットする方向性がこれから成功する秘訣なのかなあと思います。

そう考えると、2010年と今とでも時代は全然違うなあと思います。

ここまで理解したところで、何もできていない自分に比べたら、Seasarの中心の方々は僕よりも何十倍も優秀な方々の集まりなので、一人ひとりはこの波の中で成功されているのでしょう。でも、Seasarという糊がなければ、彼らはつながらずSeasarは時代の流れの中で役割を終えようとしている中で、外部の者がどうこう言うことではありませんが、同窓会だったとしても十分に価値があったと思います。そこに行って、憧れの彼らが今どうしているのか、話を聞かせてもらえたことは、新参者の自分として、大変刺激的で大変貴重な一日でした。

今、自分の年齢はSeasarの人たちが活発に活動をされていた年齢くらいに位置します。同世代のエンジニアを見渡すとSeasarを作る人は出てこないだろうなあと思いますが、CEOやCTOを名乗っている友人もいますし、ある意味、スタートアップ時代を生きています。そんな中で、僕らは、一まわり上の方の貴重な経験をもっと吸収して、自分たちこそ時代を盛り上げていかなければならない時ではないでしょうか。


アキバのメイドさんにAndroidを教えてもらってきた\(^o^)/

建国記念日に、日本がハジマター\(^o^)/

2015年2月11日、とてもおもしろいイベントに参加してきたので紹介します!

日本Androidの会秋葉原支部・コスプレ理系女子普及部 第33回定例会

会場は女中酒場幻橙館 大正ロマンがコンセプトのお店です。

IMG_20150211_164050

店長の鈴峰桐さん、Androidの会秋葉原支部長の肩書を持たれているらしいです。カッコイイ

IMG_20150211_224137

今日で卒業されるメイドさんが2人のいて、会の途中では涙涙(ノД`)シクシク 手紙の読み上げなども、、、なんか濃い!

でも、楽しい( ・∀・)!!

一般的な勉強会のイメージ

勉強会といえば、怖いおにいさんが参加されていて、誰かが甘いことを言うと強烈にマサカリを投げてくる殺伐としたイメージがあります。

例えばこんなコード

i = i + 1;

いや、 i++; って書こうよ(*´Д`)

さらに

if (i == 7) { i = 0: }

(つд⊂)ゴシゴシ

i %= 7;

せめて、

if (i >= 7) i = 0;

そうでないと、なんかの原因でiが同時に2回足されて8を超えたら永久に増え続けることが心配で心配で夜も(ry

でもね、それで( ・∀・)イイ!!

例えば参加者の声:「他の勉強会では、ついていけなかったけどここでは優しくてついていけました!」

この日はプログラミング未経験の方、中学1年生の男の子も参加されていました。みんな初心者に優しい!(僕もAndroidは初心者です)一人でも遅れた人がいると、みんなで待ってくれる!

IMG_20150211_183412

僕のMacがフリーズしちゃった時も、再起動するまで待っててくれた!( ;∀;)感動

WIN_20150212_004748

最終的に、みんなプログラミングの課題を終わらせることができた!
もし、<=とか+=とか%とか、使う演算子増えればそれだけ説明も増やさなきゃいけないし、そしたら終わった感動みんなで味わえなかったよね。

プログラミングはもっと楽しく!もっとかわいく!

配布資料のサンプルコードみてください!なんかカワ(・∀・)イイ!!

もちろん現場では難しいことを考えることも必要。だけど、そんな怖いプログラミング楽しいか?初めてホームページを作った時の楽しかった気持ちを忘れていないか!

懇親会が楽しい!

懇親会ではメイドさんとチェキもできて楽しい!料理も美味しかったです!

B9jxp0kIcAEiO-x.jpg-large IMG_20150211_221856 B9jyIKEIAAEwIRr.jpg-large

楽しい建国記念日をありがとう!

次回情報

次回は3/29に開催されるようですよ!もちろん僕も参加します!

告知サイトはこちらです。
日本Androidの会秋葉原支部・コスプレ理系女子普及部 第34回定例会


JJUG CCC 2014 Fall ( #jjug_ccc )に参加して来ました

昨日開催された日本Javaユーザーグループ主催のIT勉強会 JJUG CCC 2014 Fall に参加してきました。

参加したセッションと感想

K-1 基調講演1 : これからのJavaエンジニアの生きる道

概要:これからのエンジニアの生きる道はグローバル化(英語)や人工知能(数学)などの専門性の高さなど険しくなる上に、「心の時代」と言われ、幅広い視野が必要となる。そこでJJUGなどのコミュニティを利用して欲しい。コミュニティと熱い心があれば大丈夫と締めくくっています。

ご本人が「はっしーさんって熱いかたなんですね」と言われたとFBでコメントしていましたが、僕も思いました。熱かったです!

公開されたスライドを読み返してみると、最初のセッションにして、全体を締めくくっているような内容だと思いました。このスライドを読み返してから、もう一度、その他のセッションの公開されているスライドを読んでみると、まさに、高い専門性と幅広い視野、熱い心、そしてその「場」であるコミュニティというインフラがあるんだと思いました。

コミュニティの存在への感謝と、熱意を忘れずに今後も、技術者として生きて行きたい。このスライドは永久保存してくじけそうになったときに読み返したいと思います。

K-2 Java 2014 将来に向かって

米Oracleのエバンジェリストの方の英語と、通訳の方の日本語を交互に流す形式の発表でした。Javaの今後のロードマップが丁寧に説明されていて、JavaはSE, EE, MEあらゆる方面で今後も発展して行くことが紹介されていました。

H-1 Javaが見るニュータイプの夢 ~これからJavaはどう変わるか~

  • Project Valhara

    • value class: C#で言うところに構造体
    • Specialization: ArrayListのようにプリミティブを指定できるGenerics
    • ClassDynamic: 動的なクラスリンク
  • Project Panama

    • Foreign Function Interface (FFI): ネイティブコード呼び出しの改善
    • Object Layout: オブジェクトの配置
    • Arrays2.0: 配列の改善(配列の配列ではない2次元配列の実現など)

要するに、JavaもC#の良いところを取り入れようというプロジェクトをOpenJDKプロジェクトの一部でOracleが進めているようです。特にC#がオープンソースでマルチプラットフォーム対応になった今、対応が急がれると締めくくっていました。

R1-2 Spring Boot + Doma + AngularJSで作るERP(統合基幹業務システム)

ざっくり言うと、S2Dao + Teedaベースで作られた2000年代のシステムを一旦JavaEE6に置き換えたが、しっくり来ずに、Spring Boot + Doma + AngularJSの構成にしたらしっくり来たということらしいです。

今度、新規でJavaでアプリを作るときの選択肢として参考にしようと思います。

R1-3 実例Javaトラブルシューティング! 稼働中のシステムを立て直した半年間の軌跡

ECサイトのトラブルシューティングは、職務上色々、ピンとくるところがあり、

「いやー、さすがにうちはそこまでひどくないwww」

というのではなく、きちんと襟を正して、悪いところは反面教師として、良いところは参考にしようと思います。実務に役立つ大変すばらしいセッションでした。

以下感想ですが、実際のサービスの現場ではここまで絶望的でなくても、あきらめたくなるようなひどい状況に陥ることはあると思います。しかし、そんな場合でも適切にアプローチすると、ある一カ所の改善で実質大部分の問題が解消するようなこともあり、システムのトラブルシューティングが可能であるという個人的な実感と一致します。

なお、僕の品位の低い言葉でこれを言い直すと「クソみたいなシステムでも1割のクソを取り除くだけで使い物になることがある。」「きれいなシステムでもたった一個のクリティカルなクソによって死ぬことがある」です。

H-4 Javaエンジニアのためのアーキテクト講座

ITテクノロジーのアウトプットがアプリケーション開発から、サービスの運営へのシフトした結果、今までと比べてステークホルダー・プロセスが複雑となった。そんな中で、各ステークホルダー間の調整をし、サービスの観点でシステムを設計することがアーキテクトの役割を述べています。

扱う範囲が広範囲にわたっていて、テクノロジーも幅広く理解理解する必要があり、はっきり言ってこの通りにできる人はいないと思いますが、求められているスキルと言えば、そうなのだと思います。

個人的な話で恐縮かつ、スライドの内容とは異なるのですが、僕は小さい組織がサービスを開発しサービスとともに組織が成長していく過程で、技術サイドでいろいろ意見を述べさせてもらう立ち場を経験させてもらいました。小さい組織では、エンジニアがフルスタック的に振る舞う必要があり、その中ではステークホルダー=俺、になる状況が多いので「調整」という面では楽です。しかし、提供しなければいけない価値は大人数であろうと小人数であろうと同じです。なので、一度サービスを一人で開発・運用・できれば営業できれば、結果的には脳内に多数のステークホルダーが存在することと同義になります。そうした脳内の会話は、専門の人が考えるよりもずっと幼稚な物だと思いますが、必要なことは何かを意識する最適な方法だと思います。

そう考えると、難しい言葉はいらないと思います。テクノロジーよりメンタルの問題なのではないかと思います。

しかし、鈴木氏のスライドを見ると「ムズカシイ」言葉だらけになって「俺には無理ダーー」感満載にな気がします。一緒に発表を聞いていた大学生が、そういう反応をしていたのを見て、むしろ若い子たちにこそ、こういうことの必要性を訴えたいのに、なんとかならないものかと思いました。

内容は大変すばらしかったです。一度現場を経験している僕自身は、自分の至らなさを反省するとともに、言葉にできなかったことを言葉にされていて、大変参考になりました。

以上をふまえて、アンケートは厳しめに評価を付けさせて頂きましたが、僕自身としては今回最も参考になったセッションでした。

R2-5 Javaだからこそできる、ビズリーチの攻めのDB変更

DB変更というのでてっきり、MySQLのシステムをPostgreSQLに移行した話だと思ったのですが、そうではなく、テーブル構造をシームレスに変更するDBFluteの話でした。

久保さんの話は面白かったのですが、それならば、もう一つの発表も気になっていたので、途中退出しました。

2014/11/19追記

後日公開されたスライドを読みましたが、非常に内容同意できました。僕の現在の業務でも、週一でシステムを更新し、その際、テーブル定義変更はほぼ確実に発生していますが、社内メンバーで知恵を絞った結果ほぼ同様の運用をとっていると思います。違いといえばツールがExcelとマクロであって、DBFluteほどカッコよくないということです。

R1-5 JavaでやってみるThe Twelve-Factor App / nabedge

途中から聞いたので全体を聞けていませんが、非常に現場の経験に基づいた開発指針なのだと思いました。
というのも、過去に自分がやらかしてしまって、改善をして行った記憶と一致するところが多いと思いました。

意外と開発当初はおざなりになってしまう、デプロイフローやパッケージ管理について、これからアプリを作るときはこういった指針に基づいた設計を心がけることにして運用時の罠にはまらないようにしたいと思います。

2014/11/19追記

スライドが公開されたので、じっくり見てみました。

VII ポートバインディング

組み込みと言ったらJettyでしたが、Spring BootでTomcat組み込みが最近流行っているのですね。EclipseのServersの設定は開発者間でトラブルの元になるのでコード化するのは良いことだと思います。

IX ログ

Fluentd + BigQueryや、Elasticsearchなどが一般的になってきているので、標準出力に流すというのは良い考えだと思います。今後の参考にしたいです。

III 設定は環境変数に

自分も設定をSVNにコミットして、環境ごとに呼び先のフォルダーを切り替えるなどで結構苦労しています。環境変数はライトな考えで良いですね。ただ、どの設定が必要なのかは、別途管理しなければならないかなと思いました。ChefやPuppetを使う前提なら良いわけですね。

あるいは必ずant経由で実行するとか、そういうライトなツールなら作ったことあります。ああ、antとか古いのかなあ。

II 依存関係, V ビルド・リリース・実行

ある程度の規模になるとMavenすら使うのが億劫なのですよね。セントラルにアクセスすると遅いし。でも、Sonatype NEXUSでリポジトリを管理できると便利かもしれません。NEXUSは知りませんでした。NEXUSとか、単体ではSEO悪すぎw "Sonatype"社名付けてくれなかったら検索しづらかったと思います。

バイナリをリポジトリサーバーにデプロイして、依存関係管理、なんてすばらしいマイクロサービス!全部ソースで依存関係やっていたので、ビルドが日に日に遅く。。。なんてことがないですね。

VI ステートレス

僕の見解では、セッション窓から捨てたい。スライドの趣旨と異なりますが、言いたいので言います。ほんともう、セッション排除せよ!です。

非同期リクエストが多い現在、Stickyセッションはデータの不整合の温床です(処理の途中で別リクエストがセッション変数を書き換えたりする)、Stickyを使わずシリアライズ・デシリアライズする方法はバージョン不整合(非同期リクエスト間で読み込んだ瞬間のセッション変数値が異なることで不可解な結果を得たりします。しかもテスト環境では再現しなかったりたまたまその時ネットワークが遅かったとか言う時にだけ発生するので非常にタチが悪いです。

では、何を使うべきなのかというと、僕自身答えが出ていませんが、一時的な状態はローカルストレージなどクライアントに持たせて、CSRF対策用のTokenなどセキュリティ上の要件だけセッションを使用するというのがいいような気がします。WebアプリをRestfulに設計すると自ずとそういう形になるのではないかと思います。そういうこともあって、JSFなどのコンポーネントベースのフレームワークって苦手なんですがどうなんでしょうね。

セッション使うなら、Ajaxを使わないレガシー画面遷移、右クリックを禁止、戻るボタン禁止、IE限定(笑)これくらいしないとならないかなと思ってしまいます。w

ちなみにmemcached-session-managerは痛い目にあいました。おすすめしません。

R1-6 Concurrent Mark-Sweep Garbage Collection 再入門

CMS-GCとは名前は聞きますが、並列実行できてStop the worldがおきにくいJavaの標準GCアルゴリズムだよという理解でしかありませんでした。

ステップ別の説明や、ログの読み方が非常に参考になりました。今後GCのトラブルがあった際は参考にしたいと思いました。

初めて聞いた(またはよく理解していかった)キーワード

Spring Boot

@makingさんのスライドによると

フレームワークというよりプラットフォーム
簡単に言うと、Spring Framework でアプリケーションを簡単に作る ための仕組み

とのこと。開発環境みたいな物かと思ったらそれでもないらしい。アノテーションとか使って、依存関係をいい感じに解決しつつ、設定も自動化していてサクサクと開発できる仕組みのようだ。

良いという意見を複数聞いたので、機会があったら検討してみたい。

Doma

  • Seasar傘下のO/Rマッパーとその開発支援ツール
  • 現在もメンテナンスされている
  • Java6以上で動作。

聞いた感じだと、モダンなS2Dao、ごりごりSQL書く人向けのツールのようだ。

Elasticsearch

  • AWSのサービスの一つではないらしい(勘違いしていた)
  • Restfulな検索・解析サーバーソフト
    検索エンジン用途だけでなく、R1-3ではトラブルシューティング時のログの解析にも使用したようだ

kibana

  • 可視化ツール
  • Elastic Searchの結果をグラフとかにして可視化するのに使う

Fluentd

  • 最近ログの文脈でよく聞くお前は何ものか?
  • 既存のシステムログをどうにかするのではなく、システムのイベントベースにあらゆるデータを収集して、任意の方法で記録・アウトプットできるツールらしい
  • Fluentdで出力したログをBigQueryで解析するのがトレンド?
  • そうか、お前はいわゆる「ログファイル」とは別物だったのだな!

ENdoSnipe

  • アクロクエスト社の製品
  • 「FindBugsの動的版」とのこと
  • システムを動作させながら状態を分析するツール
  • シーケンス図を出力するArrowVisionは無償でダウンロードできる
    システムを動作させながら分析できるツールを探していたので興味がある

第三の時代

  • 米ガートナー社によると、現在のITは「第三の時代」に到来していると言われている。
  • 第一: 業務の自動化
  • 第二: ITプロセスの工業化(これまで10年)、社内のプロセス改善
  • 第三: あらゆる先進テクノロジーを取り込み、ビジネスを創出する

参考: IT部門の主導権を奪う新時代が到来 : 日経BizGate

マイクロサービス

  • 誤:マーチンファウラー氏が提唱
  • 正:James Lewisが提唱
  • システムを独立した複数のサービスの集合として構成する

ITシステム版モノリシック・マイクロ論争ということかと思う。

2014/11/19追記

Sonatype NEXUS

  • Mavenプライベートリポジトリの管理ツール
  • OSS版、有償版がある
  • リポジトリの追加し、WEB-DAV経由でアーティファクトのデプロイが可能
  • リポジトリの内容を閲覧したり検索したりできる