runaround’s diary

なんとなく、つれづれ

スクラムフェス大阪2020@オンライン 1日目に参加してきたよ

待ちに待って首が伸びそうになったイベントがとうとう開催。

www.scrumosaka.org



正直いろんなイベントが中止に追い込まれる中、このイベントは開催が決定し準備段階からDiscordで参加者にもほぼ丸見えですごかった。



去年初めて開催されて参加した時の思いも思い出しつつ。


Keynoteはウェビナーで開催、そのあと明日の各コミュニティのセッション紹介はZoomで、ネットワーキングはDiscordでという流れになりました。


恒例のツイッターまとめしときますー。


みんなのつぶやきがナイアガラの滝ぐらいの勢いで、どんなに動体視力良くても読めないw


Keynoteをされるながせさんが背景画像の文字の見切れを気にしておられたようで。
私はZoomをiPad Proからつないでいたのですが、画面に背景画像はすべて収まっていました。



そして前説?がスタート。


次にイベントでの注意事項などなど。

オンラインイベントならでは。
食べ物の匂いは気にならないけれど、音は気にしないとですね。
あとスクショとか取ってUPするのも気をつけて!と。
参加者の顔が入ったスクショを許可もらわずに晒してよいのかどうかは気をつけたいところ。


今までならすっごいDevLove関西さんのイベントにお邪魔させてもらって洋さんともお会いできていたのに・・・。
すごく久しぶりに洋さんのお顔拝見した気がします。


19のレーン(コミュニティ)で1日やったら100セッション近くになるんですね・・・(ヽ´ω`)


オンライン開催だから様々なところからアクセスされてるんだろうなぁ・・・すごい人数だ・・・。


このご時世だし自分の身や周りの方を危険に晒したくはないのだけど、正直言うとRSGTはリアルに参加したいかなぁ。
スピーカーはオンラインでつないでもらうでもいいのだけど、ワークショップやネットワーキングはやっぱリアルで交流したいところ。




「ちょっとした」がミソなのかもと思いました。
やろうかどうしようか迷う、たじろいでるような状態なのかなと。
迷うぐらいなら「ええぃ!」って挑戦しちゃったら何とかなりそう(私もそんな経験ある)。


酒の飲みすぎではないですよ(多分)。
やっぱ冒険に出る前は不安も多いじゃないですか。


言葉としては聞いたことがあるんだけど、今回ちゃんと説明をしていただいてもっと理解を深めようと思いました。
↓さすが、すごくわかりやすい・・・
2.2 クネビンフレームワークによる問題の分類
www.ryuzee.com



2週間スプリントやっていた時に、1日目に起こった問題を2週間後のふりかえりで初めてシェアされたときのがっかり感。
気づいたんだったらふりかえりまで温めずにすぐにアラートだそうよ・・・って思うんですけどね。


ムカついても一緒に仕事できてるっていうのは、ちゃんと尊敬しあえてるからなのかなぁと。
毒にも薬にもならない刺激にならない場合は・・・(えっと



Zoomのバーチャル背景がスライドになってて、話が進むとスライドが切り替わっていたのでずっと気になってたんですけど・・・


大きな仕掛けを用意しなくてもこんな面白いことができるっていうところがスゴイ!
真似したい(こら

あと、スピーカーの表情も見たいしスライドも見たいしっていう要求がまるっと満たされていて本当に素敵なKeynoteでした!


一応業務内で参加してましたのでw(チケットは自腹でございます)



一部どうしても都合がつかないので、あとで録画で見せていただこうと思っているセッションがあります。
見て質問とかしたくなったら・・・知ってる人いそうだからつないでもらおうかなーとかw


参加者も多いしPCにも負荷がかかっていたのか、画面共有ができない方もちらほら。
それでも臨機応変に対応されて話されてたのでさすがだなぁ。


あらたさんの説明、キレッキレでしたw


各コミュニティさんの紹介、本当にワクワクして楽しかった。
明日各Discordのお部屋回ってみようかなー。


ほんこれ。


さて、明日も楽しみ!

ちょっぴりMicronautと仲良くなってみた

5月にGraalVMをちょこっと触ってみました。

run-around.hatenablog.com

今回はMicronautとちょっと仲良くなってみます。

ホントはGraalVMからあまり時間をおかずにやってみていたのですけど・・・
MBAの容量逼迫とIntelliJのビルドが荒ぶる事態でちょっと延びてたんです。
色々と入れて試しすぎていた環境をきれいにすべくクリーンインストールを実施。
もともとはMojaveだったと思うけど今回はCatalinaにしてみた。
もうそろそろ不具合も随分直ってんじゃね?ってことで。


Micronautについても、GraalVM同様でみんなのJavaで紹介されていますね。

gihyo.jp



さて、ここからは私への備忘録。
とりあえずはHello Worldするところまでです。


まずは公式サイトをチェックするぞ、と。
micronaut.io


あらSpringBootみたいにジェネレーターもあるし、Javaのコード見てるとSpringBootとそっくりー
SpringBootのいいとこどりみたいな構成なんだそうで、なるほどねーと。
じゃ、Thymeleafとか使えるのかな?とか思ったらサンプル上げている方がおられた。

気になるところは一通り読んで、まずはプロジェクトを作ってみましょうかねー。
f:id:run_around:20200614164414p:plain


トップページに「Generate a Project」のリンクがあるのでクリック
f:id:run_around:20200614163736p:plain


ここで種類選んだりJavaのバージョン選んだり、名前変えたりできます。
Previewを押せばポップアップでどんなソースが生成されるのかも確認できる。便利ー
今回はお試しなので、すべてデフォルト状態で生成してみます。
f:id:run_around:20200614164122p:plain


スポン、とZipファイルでダウンロード出来るので解凍してIntelliJに読み込ませました。
f:id:run_around:20200614164255p:plain


特にエラーとかも出てなさそうなので、HelloControllerクラスを書いてみます。

package com.example;

import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;

@Controller("/hello")
public class HelloController {

    @Get(produces = MediaType.TEXT_PLAIN)
    public String index() {
        return "Hello World";
    }
}


コンパイルも問題なく通ってそうです。
ではAppliccationのmaimメソッドをrunしてみましょうか。
f:id:run_around:20200614165200p:plain


問題なくサーバーも立ち上がったようですね。
f:id:run_around:20200614165312p:plain


実行はターミナルからでもブラウザからでもOK。

curl http://localhost:8080/hello

f:id:run_around:20200614165741p:plain
f:id:run_around:20200614165752p:plain



無事ハローすることができました。
今回はここまでw


次回以降で考えているのは
- プロジェクトにGraalVMを適用する
- ちょこっとWebアプリケーションを作ってみる
- WebアプリケーションでDBを操作してみる
- テンプレートにThymeleafを適用してみる
- Docker上で動くようにしてみる

とかかなー。
今日はもうオシマイにして呑も呑も。

チームでムービングモチベーターズをやってみたよ

前職でもやっていたムービングモチベーターズを新しいチームでやってみました!


ムービングモチベーターズに関するこれまでのブログエントリーはこちら。
run-around.hatenablog.com
run-around.hatenablog.com
run-around.hatenablog.com


ムービングモチベーターズとは。ニューワークスさんのサイトがとてもわかりやすい。
nuworks.jp

ニューワークスさんからカードを買って愛用してます。
バイリンガル版なので前職で大変助かりましたー。


今回はオンラインで出来るように、と以下のテンプレをGoogleスライドで各自メンバー分用意。
f:id:run_around:20200606102333p:plain

上・中段の10枚がムービングモチベーターズカードです。
下段の左3種類は感情を表すカード。
下段右端は次のアクションを書く付箋です。

  1. ムービングモチベーターズ10枚のカードから、自分がモチベーションが上がるもの1位〜3位、最下位を選んで並べる
  2. 選んだカードごとに、今の満足度について感情のカードを選んで並べる(最下位については強要されてない⇨満足)
  3. 満足度が「普通」や「不満足」のカードについて、どうすれば「満足」になるか次に起こせそうなアクションを考える(もし考えつかなかったらチームメンバーと一緒に考える)

上記をステップごとに各自で行いみんなで共有、としました。
ちなみに満足度が全て「満足」の人がいた場合、どれか1つ、さらに良くするには?で考えてもらいました。


こちらは私の結果。
f:id:run_around:20200606103452p:plain


「関係性」「受容」共に「大」x 10 ぐらい満足!
「地位」は無い方が自由に動けるから最下位を選びましたw
「熟達」については、まだまだ学ぶことや慣れていくことが沢山あると感じているので「不満足」。
「熟達」を「満足」にしていくには・・・慌ててもすぐに出来るわけでは無いので、色々頑張ってつまみ食いしていくプランでいます。


あ、こういうことを尊重できればもっといいチームで動けそうだなーとか。
これはこの人の地雷だから踏んじゃダメなんだな!とか。
そうかー、こういうことで悩んでるのかー、とか。
なんか助けてあげられることないかなー、こういうのやってみるのどう?とか。

そんなことをわいわいと話せました。


前職ではモチベーションの順位を決めてシェアする、を実施するのみだったのですが、
今回は「満足度」や「次のアクション」のワークも出来て色々気づきが多かったです。


普段の雑談ではなかなか聞き出せないことも、こういうワークショップを通して知ることが出来るんだなぁと実感するお年頃です(๑•̀ㅂ•́)و

チームでジョハリの窓をやってみたよ

3月、イーシーキューブに転職し4月より新しいチームに入りました。
4人中3人(私含む)が新規参入者で、かつ、会ってすぐ在宅勤務(新型コロナめぇ・・・)。
毎日デイリーハドルで仕事&ちょこっと話をすることはあっても、メンバー同士の交流をもっと活発にしたいな!ということで。
よく外の勉強会などで登壇者さんがお話されているのを聞いていた、ジョハリの窓をやってみよ、と思い立ちました。


ja.wikipedia.org

自己には「公開されている自己」(open self) と「隠されている自己」(hidden self) があると共に、「自分は知らないが他人は知っている自己」(blind self) や「誰にも知られていない自己」(unknown self) もあると考えられる。

これらを障子の格子のように図解し、格子をその四角の枠に固定されていないものとして、格子のみ移動しながら考えると、誰にも知られていない自己が小さくなれば、それはフィードバックされているという事であるし、公開された自己が大きくなれば、それは自己開示が進んでいるととる事が出来るだろう。

コミュニケーション心理学や健康心理学などにて頻繁に使用される考え方である。


実際にやってみるまでは、自分が知ってる自分と他人が知ってる自分の差分が知りたい!が、ジョハリの窓をやりたいモチベーションでした。


さて準備。
オフラインであれば、紙を用意して各メンバーに回して当てはまる項目に印をつけてもらう・・・などが出来るのでしょうけど。
全員在宅でオンラインとなっている為、以下を準備することにしました。

potect-a.com


まずはGoogle FormでWebアプリと同じ質問への回答を各メンバーから集めておき、私が代理で入力、結果を出しました。

f:id:run_around:20200606094107p:plain

私の結果のみ公開ー。


開放の窓:自分も他人も知ってる自分の性質
盲点の窓:自分は気づいていないが他人は知っている性質
秘密の窓:他人は知らないが自分は知っている性質
未知の窓:自分も他人も知らない性質


未知の窓はWebアプリの選択肢で自分も他人も選ばなかった項目が並んでいるようです。
あと「x2」とかになってるのは2人が選んだ、のようです。

「聞き上手」は、周りからよく言ってもらえるのでそうかなーと思っていたりします。
「表情が豊か」は、きっとわかってるわかってないがはっきり表情でわかるんだと思います(爆)。ポーカー絶対負けるわ。
「話上手」は、私は口下手だと思っているのですが・・・他メンバーは選んでくれていますね。
「空気が読める」と、自分では思っているのだけど・・・w 思いついたら行動しちゃうので空気読めてないように見えるかも。



全員分の結果をチーム内で共有し、感想やフィードバックわいわい。
「ちょっと恥ずかしいけど、なんだか嬉しい」とか。
「ほぉ、そうなんだ!次は●●な感じでコミュニケーション取っていけると良さそうだな」とか。
「ずっとオンラインでしか話せてなかったけど、メンバーのことをよく知れた」とか。


やって良かったなー✌️
自分ではそう思っていなかったことも他人から「こう見えるよ」とフィードバックもらえると、なんだか嬉しいし、じゃぁ意識してやってみようかな、といいアクションが取れるのではないかなーと思っています。


また新しいメンバーが入ってきたタイミングでやってみたいな。

『SCRUM BOOT CAMP THE BOOK 増補改訂版』出版記念イベント に参加してきたよ

今日はこちらに参加しておりました。

connpass.com



事前に本の購入も出来るということで申し込んだらサクッと送っていただいて。
翔泳社さま、ありがとうございました。(しかもちょっと割引いていただいた)


呟きの中にも出てきますが、前職ではじめてアジャイルスクラムに出会って。
5年ぐらい前だったかと。
頭の中をハテナが駆け巡る中、むさぼり読んだのがこの本の第1版でした。
ちなみにもう1冊読んだのは「アジャイルサムライ」。


司会がこれまた私の大好きなおよべさんだったこともあり、
また、黄色いふりかえりの本でいつもお世話になってる森さんもコメンテーターとして参加されていて、
アツいイベントでした。



というわけで、ここからは私の呟きを貼っておきますー。



いわきりさんの熱がネットにのってぐんぐん伝わってきた!



今年のRSGTの全体写真。めちゃ真ん中にいるのですぐわかるw
当時はまだ前職でしたね・・・



ホントに。つい最近会社の人ともこういう話してて。
イベントに会社の人を連れて行きたい!



コミュニケーションが取れているチームはいいもの作りますよ。ホントに。



イベントの中では「アジャイルネイティブ」と話されていたみたいです。
正しいものや良いものを正しく良く作るが当たり前になる、そんな良い世界になったのだな・・・。



かっ血。ぐはっ。





みんなに勧めたい。さらに良くなった本です。


www.shoeisha.co.jp

ちょっぴりGraalVMと仲良くなってみた

話題になった当時に猛者がいじり倒し終わっているのですが、私は今から触りますよ、GraalVM。


とてもわかりやすい文章をじゅくちょーさんが本に書いて下さってます。
www.sakatakoichi.com


みんなのJava
gihyo.jp


まぁ、ちょっと目的があって調べていたのですが、忘れないようにメモっておこうと思います。
直近何かで使う機会がなさそうなので・・・。
以下、みんJavaに書かれていることを読んで試してみたログになります。


GraalVMとは

  • あらゆる言語コードを実行する機能と能力をもつ仮想マシン
  • 対応OSは macOSLinuxWindowsは試験的対応⇨次にMicronaut触ろうと思ってるんでこの時点でバイバーイ)
  • 言語間で相互利用できる、パフォーマンスも十分
  • EE(エンタープライズ)、CE(コミュニティ)がありCEは無償

環境確認と設定

とりあえず今入ってるJavaバージョンを確認しました。

$  java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

ちょっと古めかなー?と思ってJava 11を11.0.7にアプデしておいた。


次はGrarrlVMをダウンロードするぞぅ。

www.graalvm.org

使用したのは以下。Macなので。

graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz

あと、19.3以前はJava8にしか対応してなかったらしい。
19.3以降はJava8と11から選べる、と。


とりあえず解凍しますかね。

$  tar zxvf graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz


次はPathを通しておく。
解凍した中にあるbinディレクトリまでのパスを設定した。既存のPathに区切り文字(コロン)でくっつけたらいいのね。
あとPATH設定しくったら、lsコマンドすらわからなくなるというMacのターミナルちゃん( ༎ຶŎ༎ຶ )
qiita.com

$  open ~/.bash_profile

# 編集したら反映
$  source ~/.bash_profile

#確認
$  echo $PATH


さて、認識してるかな?

$  java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02, mixed mode, sharing)

わーい!認識したー!

動かしてみるっ

本にはjs動く、と書いてあるのでどれどれっと・・・ん?

$  js
[ERROR] Failed to construct terminal; falling back to unsupported
java.io.IOException: Cannot run program "sh": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
	at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:308)
	at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282)
	at jline.internal.TerminalLineSettings.get(TerminalLineSettings.java:143)
	at jline.internal.TerminalLineSettings.<init>(TerminalLineSettings.java:108)
	at jline.internal.TerminalLineSettings.getSettings(TerminalLineSettings.java:123)
	at jline.UnixTerminal.<init>(UnixTerminal.java:60)
	at jline.UnixTerminal.<init>(UnixTerminal.java:50)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.lang.Class.newInstance(DynamicHub.java:835)
	at jline.TerminalFactory.getFlavor(TerminalFactory.java:205)
	at jline.TerminalFactory.create(TerminalFactory.java:96)
	at jline.TerminalFactory.get(TerminalFactory.java:180)
	at jline.TerminalFactory.get(TerminalFactory.java:186)
	at jline.console.ConsoleReader.<init>(ConsoleReader.java:244)
	at jline.console.ConsoleReader.<init>(ConsoleReader.java:236)
	at jline.console.ConsoleReader.<init>(ConsoleReader.java:228)
	at com.oracle.truffle.js.shell.JLineConsoleHandler.createConsole(JLineConsoleHandler.java:59)
	at com.oracle.truffle.js.shell.JLineConsoleHandler.<init>(JLineConsoleHandler.java:55)
	at com.oracle.truffle.js.shell.JSLauncher.setupConsole(JSLauncher.java:413)
	at com.oracle.truffle.js.shell.JSLauncher.runREPL(JSLauncher.java:370)
	at com.oracle.truffle.js.shell.JSLauncher.executeScripts(JSLauncher.java:337)
	at com.oracle.truffle.js.shell.JSLauncher.launch(JSLauncher.java:86)
	at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:121)
	at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:70)
	at com.oracle.truffle.js.shell.JSLauncher.main(JSLauncher.java:72)
Caused by: java.io.IOException: error=2, No such file or directory
	at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VA_LIST:Ljava_io_IOException_2_0002e_0003cinit_0003e_00028Ljava_lang_String_2_00029V(JNIJavaCallWrappers.java:0)
	at java.lang.ProcessImpl.forkAndExec(ProcessImpl.java)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
	at java.lang.ProcessImpl.start(ProcessImpl.java:271)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
	... 26 more

ええー・・・エラーを派手に吐いているものの、ちゃんと立ち上がるんですよね。
おそらくjline(Java で高機能な CUI コンソールを作るためのライブラリ)が上手く動いてない様子?
SBTでエラーでた、って書き込みをよく見かけるけれど・・・🧐
とりあえずbash_profileに以下を設定してみた。

export TERM=xterm-color

とか設定してみたけど直らないなぁ。一旦ここはスキップ・・・
と思ったら直りましたw
sourceだけじゃダメでPC再起動したらいけたみたい。


本に書いてある通り、jsを動かしたり、jsからJavaを呼び出してみたり。
おおお!動くぞ!(当たり前)

> console.log("test")
test
> const array = new (Java.type("int[]"))(2)
> array[1] = 100
100

ネイティブイメージインストール

せっかくなのでネイティブイメージもやってみよう。

  • 実行対象OSで直接実行できるバイナリを作成できる
  • 起動時間を短縮できる
  • 起動にJVMが不要なのでメモリ使用を抑えられる
  • とはいえ、長時間起動しているアプリケーションには向かないかな・・・瞬発力が必要なアプリケーション向き?


まずはインストール。

$  gu install native-image
Downloading: Component catalog from www.graalvm.org
Processing Component: Native Image
Downloading: Component native-image: Native Image  from github.com
Installing new component: Native Image (org.graalvm.native-image, version 20.1.0)


実行するアプリケーションを作っておく。

class HelloWorld {
    public static void main(String... args) {
    	System.out.println("Hello, World!");
    }
}


コンパイルしておく。

$  javac HelloWorld.java

$  ls -la
total 16
drwxr-xr-x  4 run  staff  128  5 25 13:24 .
drwxr-xr-x  5 run  staff  160  5 25 09:52 ..
-rw-r--r--  1 run  staff  427  5 25 13:24 HelloWorld.class
-rw-r--r--@ 1 run  staff  115  5 25 13:22 HelloWorld.java


ネイティブイメージをビルドする。

$  native-image HelloWorld
Build on Server(pid: 806, port: 49544)*
[helloworld:806]    classlist:   2,408.33 ms,  0.96 GB
[helloworld:806]        (cap):   2,805.19 ms,  0.96 GB
[helloworld:806]        setup:   5,459.09 ms,  0.96 GB
[helloworld:806]     (clinit):     259.97 ms,  1.21 GB
[helloworld:806]   (typeflow):   7,568.45 ms,  1.21 GB
[helloworld:806]    (objects):   4,221.81 ms,  1.21 GB
[helloworld:806]   (features):     347.56 ms,  1.21 GB
[helloworld:806]     analysis:  12,688.20 ms,  1.21 GB
[helloworld:806]     universe:     456.88 ms,  1.21 GB
[helloworld:806]      (parse):   2,733.96 ms,  1.67 GB
[helloworld:806]     (inline):   1,386.15 ms,  1.67 GB
[helloworld:806]    (compile):  13,954.39 ms,  2.28 GB
[helloworld:806]      compile:  18,786.93 ms,  2.28 GB
[helloworld:806]        image:   1,520.23 ms,  2.28 GB
[helloworld:806]        write:     441.40 ms,  2.28 GB
[helloworld:806]      [total]:  42,418.71 ms,  2.28 GB


おー、全て小文字のヤツがネイティブイメージらしい。

$  ls -la
total 13088
drwxr-xr-x  5 run  staff      160  5 25 13:27 .
drwxr-xr-x  5 run  staff      160  5 25 09:52 ..
-rw-r--r--  1 run  staff      427  5 25 13:24 HelloWorld.class
-rw-r--r--@ 1 run  staff      115  5 25 13:22 HelloWorld.java
-rwxr-xr-x  1 run  staff  6690316  5 25 13:27 helloworld


ネイティブイメージを実行してみたら・・・あ、ちゃんと動いたー。

$  ./helloworld
Hello, World!

ということで

ちょっとだけGraalVMと仲良く・・・なれ・・た・・・気がする。
次はMicronautを乗っけてくところをメモっておこうかと思いますが・・・気が向いたら。
せめてモノリシックなアプリケーション(テンプレはThymeleafあたりで)作りたいなぁー。
このあたりを参考に。
github.com

【緊急開催】これ以上、日本がイケてない国にならないために 我々がやるべきことは何か?みんなで考えたい を聞いてきたよ

今日はこちらを視聴しておりました。

hacker-life-lab.connpass.com



ちょっとタイトルはイケイケな感じですけど、放談はすごく和やかに楽しく行われていましたよー。
ここ2ヶ月近くの体験について振り返り、いろんなことに気づいた貴重な時間でした。


恒例、私のつぶやきを貼っとくー。


いわきりさん&やっとむさんのスライドによく映るわんこsが凄く癒される・・・(*´꒳`*)



確か市谷さんがきっかけとなり、岩切さんが結婚された、というお話だったかと。




日本のピンチにエンジニアが出来ること、してきたこと、について思いを馳せる時間でした。
にしても、お三方共にすごい前向きパワーの持ち主でキラキラ輝いて見える・・・。
私も出来ることで頑張ろう、と襟を正した(Tシャツ着てるけど)のでした。