makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

「Spring in Summer ~ 夏なのにSpring」に参加しました

2015/8/28(金) 「Spring in Summer ~ 夏なのにSpring」に参加してきました。

DoorKeeper
https://jsug.doorkeeper.jp/events/27682

場所は東京駅スグのグラントウキョウサウスタワーです。
参加申し込みは430人を超えてました。スゴいですね。

私がこのイベントに参加した理由は2つあります。

  • ウチの部で開発しているStruts1ベース(笑)の社内標準の開発フレームワークに、Spring Frameworkが追加されたこと。
  • 横浜道場スプリントで開発しているアプリのフレームワークにSpring Bootを採用していること。

というわけで、個人的には微妙なSpringブームなのです。
特に後者はちょうど、実践中なのです。個人的には以下の書籍で写経したりして勉強しました。良書ですね。



この日、私が参加したセッションは以下です。


あと、冒頭の「R1-1.オープニングセッション」は、向かう電車の中でスマホからUstreamで聴講してました。
JSUG会長の長谷川さん、Seaserや寺田さんに向けた辛口ジョークは相変わらずでした。(笑


R3-2. 今日から始めるGradle入門ハンズオン (2時間)
R3-2.今日から始めるGradle入門ハンズオン (2時間)

Springのイベントなのに、なぜかGradleのハンズオンに参加・・・
20150828_jsug3.jpg

(スライドが公開されたらココに貼る)

@grimrose さん主催の#yokohamagroovyに参加してたので、「プログラミングGROOVY」は一応、一通り読んではいました。

プログラミングGROOVY
プログラミングGROOVY
posted with amazlet at 15.08.28
関谷 和愛 上原 潤二 須江 信洋 中野 靖治
技術評論社
売り上げランキング: 294,550


ただ、この本の次に「Gradle徹底入門」も読書会で読むつもりだったのですが、都合が合わず参加できず・・・

Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築
綿引 琢磨 須江 信洋 林 政利 今井 勝信
翔泳社
売り上げランキング: 10,417



ということで、Groovyの知識は多少あっても、Gradleはほとんど初心者なのでした。
ちなみに上記のGradle本を担当していた翔泳社さんが、部屋の後で書籍を税込み3500円(お買い得!)で売ってました。
あと、参加者の皆さんには翔泳社の15%引きクーポンが提供されました。

この日は初心者向けということで、Gradleとはなんぞや、から始まる講義と、簡単なタスクを作るハンズオンの構成でした。
Gradleの特徴はやっぱ、Groovy DSLでスクリプトを記述できることでしょうか。
昨今、「Infrastructure as Code」という言葉も登場し、なおさら注目ですね。

ハンズオンではスタッフさんにいろいろ聞いたりしながら、なんとか概ね動かすことができました。
でも、work4の課題で、GradleタスクからTomcatの起動ができない・・・。



task startTomcat {
"C:/{途中略}/gradle/apache-tomcat-8.0.26/bin/startup.bat".execute()
}


20150828_jsug2.jpg

環境はWindows7(x64)です。「startTomcat」はUP-TO-DATEになってるのに、起動してこないのよね。
コマンドプロンプトから普通にTomcatをstartup.batで起動すると問題ないのに。このコード、どこがダメなんやろ。・・・
とりあえず解答公開待ち。



R1-5.キーノート The Macro of Microservices
R1-5.キーノート The Macro of Microservices

午後最初のセッションは、34時間かけて地球の裏からやってきたJosh Longによるキーノートです。



同時通訳は専任のプロ2名体制で、聴講者全員には通訳レシーバーの機器が貸与されるという充実ぶりw

Springの話はほとんどなく、マイクロサービスをテーマに、アジャイル開発や継続的デリバリーなどを絡めたお話でした。
特にクラウドの重要性を強くアピールされていて、CloudFoundryなどを上手に使っていくことを推していました。
顧客の価値に直結しないような環境構築に時間を掛けている場合ではない、ということですね。

あと、アメリカの夜のネットワーク帯域の80%はNetflixが占めている、という話に驚きました。
日本にも上陸寸前のNetflix、その突出した技術力も有名ですが、アメリカでの影響力は凄まじいですね。
ちなみにNetfilixは、エンジニア初日に、本番環境へのデプロイを経験させるとのこと。
これにより、「安全にデプロイができる」ということを実感させるのだそうです。
プロセスの中に安全を組み込む仕組みが構築されているNetflixの姿勢が垣間見えます。

あと、短いスパンでフィードバックを集めて改善していくこと、効率よりも新しくデリバリーすることの重要性を盛んに主張されており、その中で「OODAループ」という言葉が出てきました。

Wikipedia 「OODAループ」

監視(Observe)- 情勢判断(Orient)- 意思決定(Decide)- 行動(Act)のサイクルを繰り返すという概念だそうですが、私、この単語初めて聞きました。

Joshのプレゼンは情熱的でユーモアに溢れ、こーゆうエンジニアっていいなぁ、と思いました。
あと、ハイレベルな同時通訳があったものの、やっぱ英語って大事だなぁ、と思い知らされた・・・


R3-6.エッセンシャルCore Spring - Handson (3時間)
R3-6.エッセンシャルCore Spring - Handson (3時間)

Springのハンズオン、みっちり3時間です。この日はDIとSpring MVCの2つがテーマでした。
Pivotal社主催のCore Spring研修というものがあるそうで、この日のハンズオンは、その教材から題材を抜粋してきたそうです。
ハンズオンの資料やプログラムはこちらからDLできます。

ハンズオン資料


ハンズオン資料補足


3時間ありましたが、比較的ゆっくりな進行でした。
DIはXMLやアノテーションでやることが多いそうですが、今回はJavaConfigを使いました。
XMLによる定義はType Safeにならないので、JavaConfigでソースコードでDI情報を紐付けてコンパイラによるチェックの助けを借りるとのこと。

Spring MVCは、Struts1を知ってると理解しやすいと感じました。Struts1もMVCが基本だし。
ただ、Struts1は規模が大きくなるとXML地獄になりますが、Spring MVCはその辺、何か工夫があるのだろうか。



他の発表資料集
私が聴講したセッションの裏も、かなり充実したセッション構成だったようでした。
Ustreamでリアルタイム放送してましたが、後日でも見れるような形で公開いただけると嬉しいです。
以下、8/28時点で公開されている資料集。











懇親会
全てのセッションが終了後、そのまま41Fで懇親会がありました。
東京駅スグのビル41Fからの夜景は綺麗ですね~。

料理もお寿司やお肉やお惣菜、ビールやカクテルなど豪勢でした。無料なのに素晴らしい。

20150828_jsug1.gif

キーノート他2セッションを担当したJosh Longの音頭で乾杯後、しばらくしてLT大会になりました。
皆さんお酒も程よく入り、楽しく歓談しながらLTにも耳を傾けます。



ブログ冒頭で紹介した「はじめてのSpring Boot」の著者でもある @making さん。
スタッフ業に忙殺された鬱憤を晴らすがのごとく、酔っ払いながらのLTならぬLong Talkでした。



そしてLTの最後を飾るのは、まさかの寺田さん。


転職してJavaの派閥的な何か(?)から開放されたようで、無事このイベントにも参加できるようになったようです(笑

LT、全部で6人くらいだったかな。


★感想:
丸一日、Spring尽くしでした。
この日はハンズオンを中心に参加したのですが、とても参考になりました。帰宅して残った演習をやってみたり。

あと、無料のイベントなのに運営が素晴らしいですね。
スタッフさんの数も多いし、懇親会のお料理も豪勢だし、Josh Longのリアルタイム通訳者のレベルも高かったし。
尽力してくださった運営の皆さん、スポンサー企業さんに感謝です。

随分前に購入したSpringの本、本棚から引っ張りだしてきたのですが、ちゃんと写経して勉強しようかな。

SpringによるWebアプリケーションスーパーサンプル 第2版
株式会社クロノス 阪田 浩一
ソフトバンククリエイティブ
売り上げランキング: 251,053



発表者やLTの皆さん、ホントSpringが好きそうで、楽しそうにしゃべっていた姿が印象的でした。
楽しい1日を過ごすことができ、とっても刺激を受けたので、明日は丸1日SpringAngularJSのコード書く。

関係者の皆様、ありがとうございました。
スポンサーサイト

「システムテスト自動化 標準ガイド 読書会」資料まとめ

2015/8/22(土) 「最終回 システムテスト自動化 標準ガイド 読書会」に参加してきました。

全4回、皆勤でした。書籍の第1部のうち、普遍的な概念を扱う1章~9章がターゲットでした。
今回が最終回ということで、これまでの発表スライドを纏めてみる。

■第一回 システムテスト自動化 標準ガイド 読書会
http://software-test-automation.connpass.com/event/13255/

第1章 テスト自動化のコンテキスト
2015/04/18, ふじさわゆうき さん
20150418 システムテスト自動化 第一章 from Yuki Fujisawa


[参考文献]
参加者で訳者でもある森さんが書いた記事。

『システムテスト自動化 標準ガイド』の第1章で響いたところ、原著が刊行された15年前から進んだところ
http://codezine.jp/article/detail/8527

第2章 キャプチャーリプレイはテスト自動化ではない
2015/04/18, いしじあつし さん
20150418 システムテスト自動化 第二章 from Atsushi Ishiji


[参考ブログ]
ブロッコリーのブログ 『第一回 システムテスト自動化 標準ガイド 読書会』の司会をしました

■第二回 システムテスト自動化 標準ガイド 読書会
http://software-test-automation.connpass.com/event/14313/

第3章 スクリプティングの技法
2015/05/23, @TakaakiOnoさん, @d_noguchiさん, @camxxmaさん
テスト自動化読書会 第3章 20150523 from dnoguchi


第4章 自動比較
2015/05/23, @toku_toku3
第4章 自動比較 from toku toku


[参考ブログ]

「第二回 システムテスト自動化 標準ガイド 読書会」を開催してきた ふじさわゆうきさん

ブロッコリーのブログ 第二回システムテスト自動化標準ガイド読書会で司会をしました&第三回で発表します


■第三回 システムテスト自動化 標準ガイド 読書会
http://software-test-automation.connpass.com/event/15691/

第5章 テストウェアアーキテクチャ
2015/07/05, @masatoshiitohさん
システムテスト自動化標準ガイド 5章発表資料 from Masatoshi Itoh


第6章 前処理と後処理の自動化
2015/07/05, @nihonbusonさん
システムテスト自動化標準ガイド第6章 from nihon buson


第7章 保守性の高いテストを構築する
2015/07/05, @nihonbusonさん
システムテスト自動化標準ガイド第7章 from nihon buson


[参考ブログ]
ブロッコリーのブログ 第三回システムテスト自動化標準ガイド読書会で発表して司会もしました


■最終回 システムテスト自動化 標準ガイド 読書会
http://software-test-automation.connpass.com/event/17862/

第8章 メトリクス
2015/08/22, @_mirerさん
システムテスト自動化標準ガイド 読書会 第8章 from mirer


第9章 その他の課題
2015/08/22
9章 システムテスト自動化標準ガイド読書会 from camxxmac



■感想:
運営のみなさんがとても気配りされていて、とてもよい勉強会でした。
1章に1時間以上割いて、ディスカッションや質疑応答もほどよく交えての進行でした。

読書会ないかなぁ、と以前呟いたこのツイートも、この読書会のおかげで成就されたのでした。感謝!



皆様、ありがとうございました。

「RESTful#とは勉強会9」に参加しました

2015/8/19(水) 「RESTful#とは勉強会9」に参加してきました。

DoorKeeper
https://rubychildren.doorkeeper.jp/events/29117

最近ブログをサボリ気味なので、負荷にならない程度の書きっぷりで、復習のために今後もできるだけ書いていこうと思います。

この日の会場は永和システムマネジメントさんです。
前半はいつもどおり「Webを支える技術」の読書会、後半はRestfulに関する講演、という二段構成でした。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
山本 陽平
技術評論社
売り上げランキング: 5,348


進行役の川村さんが纏めてくださった、この日のポイントはこちら。
https://gist.github.com/tkawa/cf6f0187a5f1d54344b6
いつもありがとうございます。

■Accept-Charsetヘッダ
前回のディスカッションでも、ブラウザが自動で付与する、という話が出てました。ブラウザの設定で切り替えられるようです。
クライアントアプリを作る場合、HttpClientはOSが提供しているAPIを使って、OSの言語設定を判定して表示を切り替えている、という話もテーブルで出ました。
HttpClientはOSごとに用意されることが一般的だそうです。

■チャンク転送
このチャンク転送が、本を読んだだけではよくわからず、テーブルでディスカッションしました。しかしいまだによくわからん・・・
HTTPのセッションは貼られたまま、ずっとデータが送られる?
次回、質問してみよう・・・

■認証
ここも自分があまり理解していない部分。
まず、現在の一般的な認証方法は、サーバがトークンを発行して、それをクライアントとやりとりして認証する方法らしい。
OAuth2は一度トークンを発行したら変わらないらしい。そのため、httpsが全体なのだとか。
あと、認証が必要なサイトに未認証でアクセスがあった場合、ステータスコード401を返すようです。
OAuthは秘密キーを発行して、信頼しているサービスにしか渡さない仕組みらしく、信頼できないと後から判断した場合はその秘密キーを停止することができるそうです。
この辺の認証まわりはちゃんと勉強せなあかんなー、と思った次第。

次は@moro さんによる講演。




発表者の @moro さんがこの講演について書いたブログはこちら。
http://moro.hatenablog.com/entry/2015/08/20/081131



以下、個人メモ。

■ グランドルール
RESTfulはマスタメンテぐらいにしか使えないようなものではない!という点を主張されてました。
私、RESTfulを勉強しはじめたばっかなので、世間ではそういう認識が一般的なのかー、と驚きました。


■ DBのイベントエンティティ起点
POST /groups/42/menberships
これは、あるグループにjoinする、という操作ではなく、参加しているグループとメンバーシップの関連を作る、と考える。


■ メンバリソースの起点
例えば、下書きモードから公開モードにしたい、という場合は、
POST /articles/42/set_public ではなく、setの先を名詞形にして、「作成する」という概念を持ち込む。
POST /articles/42//publication

■ ポイント
RESTの世界観に統一することが大事。
リソースは、ユーザの役立つ単位とすること。DBの1テーブルにこだわらなくても良い。


■ Regist問題
registという英単語はない。名詞も動詞もregister。リソースの命名でよくハマる。


■ リソース設計における乖離
リソース設計を詰めていくと、createする、とか、人間同士の会話の概念と乖離することが多い。
例えば人間同士なら動詞で表現するところを、名詞ベースで考えたりとか。
⇒ これは、間に一回設計を挟む、と考える。設計として、動詞を名詞に置き換える、という作業を行う。

■ 感想:
今回も新しい学びが多くて大変有意義でした。
2本立ては良いですね。マンネリ化しなくて済むし、深堀できるし。講演、とても勉強になりました。

皆様、ありがとうございました。