うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

爆速WebFW(らしい) Light-4JをGroovyから使ってみる

G* Advent Calendar 5日目の記事です。

JVM上で使えるWebAPIを開発するFWなどは多々ありまして、ハイパフォーマンスなものを探していたらどうやら Light-4Jというものがあるらしいと聞きつけました。 彼が言うにはそこそこ速いということで、ベンチマークも出しているんだぜと。

doc.networknt.com

www.techempower.com

鵜呑みにはできないし、使い方とか知りたいので最小限のプロジェクトテンプレートをつくってみました。

github.com

JDK8が入っていれば、 ./gradlew runhttp://localhost:8081/baz で bazというテキストがレスポンスされると思います。 サンプルプロジェクトを移植しただけなので、Groovyらしさとかテストコードもありませんが。(ルーティング部分だけだったので)

Light4Jでは、Swagger 2.0, Open API 3.0, GraphQLに対応していたり、OAuth2.0に対応していたり、マイクロサービストレーサビリティ(X-Traceability-Id)に対応していたりとしていてよい感じです。(それぞれがライブラリで管理されているのもよい)

今回のプロジェクトテンプレートはそういったものは使っておらず、単純なAPIルーティング形式だけです。以下は使っている部分に関する知っていることの紹介です。

  • Java向けを考えて開発されている
  • 基本的な依存はundertow
  • いろんなものがライブラリに切られている
    • service.yml
    • server.yml
  • で、パフォーマンス
続きを読む

ファシリテーターズ・インタビュー 中埜博×安井力×森雄哉(スピンオフ企画) の感想文

ソフトウェア開発界隈でも影響があるパターン・ランゲージについての動画を見ました。 つい先日、(パターン・ランゲージの創始者であるクリストファー・アレギザンダーの弟子である)中埜さんがパターン・ランゲージについて話すというイベントがあったらしく、それが動画で公開されているっていう。

youtu.be

  • 見て思ったこと
  • 今後
  • 参考書籍
続きを読む

フロントエンドのテストツールとか気になっているやつ

テストツールというかサービス中心なんだけど、書籍情報も。

  • WebGUIのテストIDE Katalon Studio
  • JavaScriptのテスティングフレームワーク
  • iOS Appiumで並列テスト
  • AIでテストをやるっていう話
  • テスト戦略書籍まとめ
続きを読む

機械学習のテスト、自動テスト入門書籍など気になっているやつ

ここ1ヶ月くらいで気になったものまとめ

続きを読む

Scrumを破る話とその補足。Scrumありがとう、そしてさようなら -Scrum 破- #rsgt2017 で発表してた

2017/1/13 に開催されたScrumのカンファレンスで「Scrumありがとう、そしてさようなら -Scrum 破-」というタイトルで45min話してきました。 スライドを公開するのずっと忘れていて、何度か再演もしているんだけど公開しました。2016年のチームの成果の話です。

speakerdeck.com

カンファレンスのイベントページに書いたセッションの概要はつぎです。

Regional Scrum Gathering Tokyo 2017 - Scrumありがとう、そしてさようなら-Scrum 破- | ConfEngine - Conference Management Platform

ScrumをScrum Guideに従ってやることから、次のステップに進んだ私がいるチームの事例発表になります。私達は2015年にテストやメトリクスを活用して、プロダクトにもプロジェクトにも透明性、検査、適応の3本柱を強化してきました。

私達はいまやスクラムに別れを告げつつあります。スプリントは1日以下で、ロール(PO, SM, Member)はスプリント毎にクジで決定し、スプリントレビューはPO以外が全員個別にデモします。テストやメトリクスも更に洗練され、いまや私達は自分達のタスクを最小6分単位でスケジュール、追跡し、改善に役立てています。

このチームが取り組んでいること、そしてどうしてこのようなことをやっているのかをみなさんにご紹介します。

背景とかこのチーム(基盤チーム)でわかったこととか

世界最高の製品開発チームとは何かを追求する実験場が基盤チームと言われればそうなんですが、単純にこのチームで仕事をするのが楽しいし、いろいろやっていることがどうも他の人と違うらしいってことはわかってきているので、事例紹介してフィードバックもらったり、誰かの参考になればいいかなぁと。

まぁ普通に考えて頭悪いとは思うんですけど、このチームを通してわかったのはマイクロマネジメントこそ最高である。っていうところですかね。以前の自分と比較して、プロジェクトマネジメントでマイクロマネジメントできないのは才能が足りないんだろうなって思うようになった。マネジメントはあらゆるリソースの使い方を考えて最高の成果を出すということが目的かなぁと思っていて、解像度が低い状態でしか判断できないって辛いよねっていうかね。高解像度かつ大画面なモニターがいいように、マネジメントもそのほうがよっぽどうまく違和感に気づけるのになーみたいな。

この発表は誰かに強制するものでもないし、ある状況ではこういったやり方や考え方もあるということを話しているだけな感じです。 ので、僕も例えば全く別のチームにいったり転職したりしたら、きっと違うことを考えるんだろうなぁとは思います。

Scrumの破であるという理由は、Scrumの3本柱である透明性、検査、適応は変えていなくって、この3つを重要視することは変えずにそれら以外は瑣末なルールだと解釈してScrum Guideを基盤チームオリジナルにどんどん変えていっているっていう感じです。

あぁ、そういう意味だとScrum GuideもGitHubにあると基盤チームでforkして公開するとかできて楽しそうですね。なによりチーム的にもわかりやすいかもしれない。

今までにいただいたフィードバックとか

  • 控えめに言ってクレイジー
  • 理想はこれなんですよねー
  • ちゃんと聞くと当たり前のことを突き詰めているだけなのがすごい
  • Extreme Scrum なんだよな
  • もうScrumとかどうでもよくね
  • kyon_mmは今後何年たっても「僕たちはまだScrumを忠実にやっているだけなんですよ」とかいいそうだよね。
  • タイムトラベラーやな kyon_mmさんはタイムトラベラー
  • そろそろ何周かしてしまっていて、勘違いしている人と話があっちゃいそう

今後とか現在とか

現在も形を変えてこのチームとして仕事をしていて、非常にたのしくやっています。できれば2017年の成果もどこかで話せたらいいなぁと考えています。 例えば、 #RSGT2018 (日本最大のScrumのカンファレンス 2018/1/11 - 1/12)とか。ただ、まだ公募に出していないので、ここでVoteしてね!って言えないんですが。 僕の話もいいわけですが、もしScrumとか製品開発に関わっているのであれば、これを読んでくださっている方はきっと #RSGT2018 で発表する素質がある気がするのでみなさんも公募を出してみてはどうでしょうか? 採用されなくても別に恥ずかしいとかはないと思いますし、去年は非採用のセッションをひたすら発表する別イベントがたっていたりしましたし、まず考えをまとめてみるだけでも、とても有意義かと思います。

次のサイトで 画面右側の + Propose Sessionボタンを押せば登録できます。

confengine.com

全体のことが書いてあるページはこっち

Regional Scrum Gathering Tokyo 2018 - Tokyo, Japan | ConfEngine - Conference Management Platform

まぁなんにせよ、ソフトウェア開発組織としての知見共有とか悩み共有して次の一歩を踏み出すという場はとてもよいと思っているので、その1つとして自分も貢献できたらなって思っています。

参考書籍

アジャイル開発とスクラム~顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント

アジャイル開発とスクラム~顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント

エクストリームプログラミング

エクストリームプログラミング

アメリカ海軍に学ぶ「最強のチーム」のつくり方

アメリカ海軍に学ぶ「最強のチーム」のつくり方

チームワークの心理学: エビデンスに基づいた実践へのヒント

チームワークの心理学: エビデンスに基づいた実践へのヒント

お気に入りの生産性あげるための工夫(アプリとかブラウザ拡張とか)

オススメのものを列挙するよー。

1日の過ごし方

大切にしているコンセプトは「もっているものを最大に使いこなす」ということで、手を使える時間はプログラミングとか、たまにしか手を使えない時間は電子書籍か動画、耳しか使えない時間は音声ってつかいわけています。なので、手が空いているときはできるだけものを作るようにシフトして生活している。

  1. 起床したら気になる記事をInoReaderとかはてなブックマークから検索して、Pocketに共有。
  2. シャワーあびたり身支度する時間、通勤で歩いている時間、などはPocketで共有した記事を音声読み上げで聞く。
  3. 音声読み上げできなかった記事は、空き時間に目視で確認。(大抵は業務時間の隙間とか)
  4. 気になったソースコードはPCのChromeでSourcegraph for GitHubを使って確認して、必要そうだったらcloneする。
  5. 手が動かせる時間ができたら、いろんなものを動かしてみる。

実践している時間はバラバラなんでよくわからない。

InoReader

いろんなブログとかRSSで購読するためのWebサイト、スマートフォンアプリ。 スマートフォンで見て気になったらSlackとかPocketとかはてなブックマークに共有しています。 PCブラウザで見るときはショートカットキーが使えて便利。

www.inoreader.com

Pocket

Webページをまるっとスクレイピングして保存できるWebサイト、スマートフォンアプリ。 Androidで音声読み上げを入れれば、記事を読み上げることができる。 これで、シャンプーしながらとか歯を磨きながらでも勉強できるようになりました。神ツールだと思った。

getpocket.com

Sourcegraph for GitHub

GitHubのコードをブラウザ上でIDE的に見ることができる。 なんとコードジャンプもできてまぢ便利。神ツールだと思った。

chrome.google.com

ポモドーロテクニック

25分毎に1度休憩するというテクニック。 で、これはお手製ツールを使ってやっています。25分過ぎると、アプリが全画面表示になって作業を強制的にストップするようにしています。 結構便利です。集中して仕事したいときはかならずポモドーロテクニック使っていますねー。

Chrome拡張で便利なのはStrict Workflowっていうプラグインかな。25minの間はTwitterとかが見れなくなります。(どのサイトを見れないようにするかはカスタマイズできます)

chrome.google.com

ブラウザ上で英単語翻訳

ブラウザで表示している画面で、ダブルクリックした英単語とか選択した英単語を日本語に翻訳してくれる拡張をつかっています。 いろいろあるんですが、最近は、速訳!英辞郎®英和辞書っていうやつを使っています。 ページの翻訳はChromeそもそもできるんでね。

chrome.google.com