読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

来週Devoxx USで初の英語セッションに挑戦します!

コミュニティ

cfp.devoxx.us

と言っても15分のセッションですが。 昨年CfPを通過し、リハーサルも4回終え、そのうち1回は英語が堪能な方に見てもらいました。 15分なのでQ&Aは設けず、突っ切る感じですw 数年後には、50分のセッション、Q&Aありでできるようになれればと考えています。

Devoxxは日本では馴染みがありませんが、3000人以上が集まる開発者向けカンファレンスです。

devoxx.com

毎年数か国で開催されています。ロンドン、パリ、ポーランド、ベルギー、モロッコで開催されてきました。 USでは今回が初開催です。場所はサンノゼコンベンションセンターFacebookもF8を開催する場所です。

セッションは3/21のお昼なので、日本は3/22の早朝ですね。がんばってきます。

セブに短期英語留学しました

翻訳

フィリピン、セブ島で1週間の英語留学をしました。

f:id:jyukutyo:20170228084259j:plain

結論

1週間でも絶対に行く方がいい。

より効果を高めるためには

行くまでに発音記号の各発音をできるだけ練習しておく。素早く正確にできると、留学中の上達が早い。

僕は通勤中に歩きながら練習してた。 次の書籍を使ったよ。

英語耳[改訂・新CD版] 発音ができるとリスニングができる

英語耳[改訂・新CD版] 発音ができるとリスニングができる

CD BOOK バンクーバー 発音の鬼が日本人のためにまとめた ネイティブ発音のコツ33 (アスカカルチャー)

CD BOOK バンクーバー 発音の鬼が日本人のためにまとめた ネイティブ発音のコツ33 (アスカカルチャー)

他の本も使ったけど、学んだことのほとんどはこの2冊から。 僕は図書館で借りたので費用なし。きっとみなさんの図書館にもあると思う。

文法自体ではなく、文法を説明する用語を英語で知っておく。

講師は英語で説明するので、文法を説明する用語を知らないとその説明も英語で聞くハメになる。僕はオンライン英会話のカランメソッドでそういう単語を聞いていたので、それは大いに助かった。たとえば -

  • noun = 名詞
  • adjective = 形容詞
  • verb = 動詞
  • present simple = 現在形
  • present continuous = 現在進行形
  • past simple = 過去形
  • present perfect = 現在完了形

みたいな。全部覚えても20個もないし、simple/continuous/perfetとpast/present/futureは組み合わせればいい。

学校選び

フィリピンは英語が公用語だそう。独立前はアメリカの植民地なのでアメリカ英語。プログラマの立場からするとアメリカ英語はうれしい。

経営

そして、学校はたくさんある。日本からフィリピンに多くの人が英語留学しだしたのはここ数年だそう。でも韓国からの留学先としてフィリピンはずっと以前から人気があった。なので、学校を選ぶ視点として、どの国の人が経営しているか、がまずある。

その国が経営する学校の数 -

  • 日本 - わりとある
  • 韓国 - めっちゃある
  • ロシアなど - ほとんどない

生徒は -

  • 日本 - 80%以上日本人。絶対に日本人スタッフがいる。
  • 韓国 - 学校にもよるけど、少なくとも半分は韓国人。日本人スタッフがいる学校もいくつもある。
  • ロシアなど - いろんな国籍になる傾向。

教育方針は -

  • 日本 - ソフトな感じからスパルタまで。
  • 韓国 - 多くはスパルタに寄っている。
  • ロシアなど - いろいろ。

スパルタとは、たとえば授業が朝から晩までぎゅうぎゅうだったり、宿題がたくさん出たり、平日は外出禁止だったり、そういうの。

僕は今回日本人経営で、わりとソフトなところを選んだ。

宿泊施設

2つのタイプがある。

  • ホテル
  • 学校が持っている寮

ホテルは1人部屋になって快適だけど高い。あと学校に行くのにちょっと時間がかかる。ホテルでそのまま授業を受けれるところもあるみたい。寮は1人部屋から6人部屋までいろいろ。人数が多いほど安くなる。学校の横とかにあるからすぐ行ける。学校によってはプールとかもあるみたい。

僕は今回寮的な感じで1人部屋でした。日本人経営で社会人向けの学校だと、1人部屋がスタンダードな感じ。

料金

期間が長くなるほど当然1日あたりの費用が安くなる。だいたいは1週間が最短。ごく少数の学校は数日でも対応がある。最安なら1週間で6万、1ヶ月4週で20万しない。もちろん寮で複数人部屋ね。日本人経営で1人部屋だと、10万前後。ここには授業料、宿泊費、選択サービスや部屋のWifiなどが含まれる。

選んだ学校

www.grace-international.jp

理由は料金が安く、かつ日本人経営で1人部屋だったから!今はやっていないけど直前割というのがあって、1月に2月3月の留学を決めたら1週間5万円だった。通常は96,000円。ほぼ半額だった。

f:id:jyukutyo:20170226202607j:plain

授業は50分 * 6コマで考えてたより少ないけど、結果的には6コマで充分で、8コマだと消化不良になったと思う。

続きは後日書くよ。

デブサミ 2017でデブサミ初登壇!【17-C-5】 #devsumi #devsumiC

コミュニティ

デブサミことDevelopers Summitで初登壇しました!

event.shoeisha.jp

スライドはこちらです。

www.slideshare.net

スライドの意図

ただ、スライドはシンプルかつ少なめです。

今回はスライドで説明するのではなく、自分の言葉でしっかり話して聴講してくれる人に思いを伝えたかったのです。

いただいた感想

すごくうれしい感想もいただきました。

thinkami.hatenablog.com

今回のデブサミで一番印象に残ったセッションでした。 声も大きくしっかりしていて、とても聞き取りやすいプレゼンでした。

“DeveloperSummit 2017に参加してきた”

開発手法や技術の話ではなく、コミュニティ運営に関する話だが、非常に熱く良いセッションだった。 2部構成だったが、特に後半のKanJavaの人の話は実体験に基いていて、Java(好きな言語)への 熱い思いも感じることができて、かなり刺激を受けた。

ryoichi0102.hatenablog.com

コミュニティの運営についての非常にアツいセッション。

公募セッション

このセッションは公募セッションです。もちろんデブサミで登壇したい!という思いもありました。

応募しようとした時に、今回のテーマが“エンジニアとして生きる、技術の先にある現実に踏み出す”であることを知りました。

ふと、"地方のコミュニティを作って7年も続けて、いつの間にかJavaOneとか海外カンファレンス出て、最近は海外でもCfP出すなんて、コミュニティ始めたときと自分自身全然変わったなあ"という思いと、"関ジャバが自分の生き方に与えた影響は大きい"という気づきがありました。

これを共有すれば、他のエンジニアの人たちの生き方にも何か引き出せるのではないかと考え、関ジャバと自分をテーマにCfPを出しました。

セッションの手法

なんと選考を通過し登壇が決まってから、技術の話ではないから"心に訴える"セッションにしようと考えました。

今までの数百枚スライドを作って文字で見せて説明するスタイルをやめて、違うスタイルに挑戦しようと決めました。

リハーサルしましたが、いつもより困難でした。スライドに読む文字がないのでスムーズに話せないんです。なので暗記するのではなく、その1枚で何を伝えたいのかだけをはっきりイメージさせて、あとは自分の思いに任せることにしました。

当日、用意したネタで話し忘れたものもいくつかありましたが、話した内容や時間配分、ステージ上での振る舞いといった出来には、自分自身まずまず満足しています。

スピーカーから見たデブサミ

僕はデブサミ 2006が初参加でした。毎年必ず参加したわけではないですが、5、6回は参加してきました。

2006年、いつか僕もデブサミで話したい、10年以内が目標と思っていましたが、11年経って実現できました。すごく感慨深いです。

僕のセッションに来てくれた人で、同じように感じて今後デブサミや他カンファレンスで話し、自分の体験をコミュニティに還元してくれる人がいてくれればいいな、と思っています。

デブサミは運営も本当にしっかりやっておられて、日本最大級のカンファレンスの1つです。ITエンジニアのために、これからも続いてほしいです。

RxJava 2.0 is released

java

I've translated a InfoQ's article about RxJava 2.0 into Japanese.

www.infoq.com

RxJava 2.0 quite differs from version 1.0. Summary of differences is in RxJava's website.

github.com

By the way, JDK 9 supports Reactive Stream (JEP 266).

JEP 266: More Concurrency Updates

The Reactive Streams spec will be included as java.util.concurrent.Flow. It has 4 interfaces in this spec.

  • Flow.Processor<T,R>: A component that acts as both a Subscriber and Publisher.

  • Flow.Publisher: A producer of items (and related control messages) received by Subscribers.

  • Flow.Subscriber: A receiver of messages.

  • Flow.Subscription: Message control linking a Flow.Publisher and Flow.Subscriber.

Instead of this, we will need a reactive stream library like RxJava or Spring Web Reactive after release of JDK 9.

Introduction to Javaslang

java

I translated this article into Japanese in InfoQ.

www.infoq.com

I haven't known Javaslang library for now.

What is Javaslang?

Javaslang's website is below:

http://www.javaslang.io/javaslang-docs/

Javaslang brings functional programming to Java.

This library is inspired by Scala. It mainly focuses on Collection library.

How to use?

It needs Java 8 and is available in Maven Central repository.

I try to use Javaslang version 2.0.5.

Differ from Java 8, Javaslang has its own List and Stream interface.

Number sum = List.of(1, 2, 3).sum();
System.out.println(sum); // 6

And it has Option which correspond to Java 8's Optional, Tuple, Pattern Matching and so on.

For more infomation, visit Javaslang website.

Pivotal Cloud Foundryを始めてみる

java

Pivotal Cloud Foundry(PCF)を試す機会をいただきました。ローカルのPCF Devではなく、パブリッククラウドのPCFの方です!

今後少しずつ、使ってみたログを残していこうと考えています。 今回は、PCFにサンプルのSpringBootアプリケーションをアップするところまでやってみます。

Getting Started

Getting Started with Pivotal Cloud Foundry | Pivotal

パブリッククラウドのPCFだから"Try PCF on the Public Cloud"の"始める"を押すぜ! f:id:jyukutyo:20161219153554p:plain こう書いてます。

"CONTINUE"押しました。

f:id:jyukutyo:20161219153917p:plain

Cloud Foundry Command Line Interface (cf CLI)をインストールしようという画面です。 MacでアクセスしたのでMacがデフォルト表示されていますが、WindowsLinuxあります。

インストールしたらcf helpと打ってみろということですので打ちます。

f:id:jyukutyo:20161219174131p:plain

$ cf help
cf バージョン 6.22.2+a95e24c-2016-10-27, Cloud Foundry command line tool
...

出たぜ!

Deploy the Sample App

f:id:jyukutyo:20161219154233p:plain サンプルアプリがあるので、それをpushしてみようぜと書いてます。 まずgit cloneする。 で、cf CLIでPCFにログインします。

$ cf login -a xxx.pivotal.io
API エンドポイント: xxx.pivotal.io

Email> alice@example.com

Password> 
認証中です...
OK

組織 xxx をターゲットにしました

スペース jyukutyo をターゲットにしました


                      
API エンドポイント:   https://xxx.pivotal.io (API バージョン: 2.65.0)
ユーザー:             alice@example.com
組織:                 xxx
スペース:             jyukutyo

あとはさっきクローンしたアプリケーションのディレクトリでcf pushするだけ! 数分かかります。

$ cf push
マニフェスト・ファイル /Users/jyukutyo/temp/cf-sample-app-spring/manifest.yml を使用しています

alice@example.com として組織 xxx / スペース jyukutyo 内のアプリ cf-spring を更新しています...
OK

cf-spring をアップロードしています...
次のパスからアプリ・ファイルをアップロードしています: /Users/jyukutyo/temp/cf-sample-app-spring
713K、44 個のファイルをアップロードしています
Done uploading               
OK


alice@example.com として組織 xxx / スペース jyukutyo 内のアプリ cf-spring を開始しています...
Downloading azq_nodejs...
Downloading staticfile_buildpack...
Downloading go_buildpack...
Downloading nodejs_buildpack...
Downloading python_buildpack...
Downloaded staticfile_buildpack
Downloading php_buildpack...
Downloaded azq_nodejs (96M)
Downloading java_buildpack_offline...
Downloaded php_buildpack (310.4M)
Downloading dotnet_core_buildpack...
Downloaded java_buildpack_offline (249.1M)
Downloading binary_buildpack...
Downloaded python_buildpack (255.3M)
Downloading null_buildpack...
Downloaded nodejs_buildpack (109.4M)
Downloading tc_server_buildpack_offline...
Downloaded dotnet_core_buildpack (169.3M)
Downloading java_buildpack_offline_3_9...
Downloaded binary_buildpack (9.3K)
Downloading ruby_buildpack...
Downloaded go_buildpack (392M)
Downloaded null_buildpack (3K)
Downloaded java_buildpack_offline_3_9 (269.4M)
Downloaded tc_server_buildpack_offline (330.2M)
Downloaded ruby_buildpack (260.8M)
Creating container
Successfully created container
Downloading app package...
Downloaded app package (1.2M)
Downloading build artifacts cache...
Downloaded build artifacts cache (107B)
Staging...
-----> Java Buildpack Version: v3.9 (offline) | https://github.com/cloudfoundry/java-buildpack.git#b050954
-----> Downloading Open Jdk JRE 1.8.0_101 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_101.tar.gz (found in cache)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.1s)
-----> Downloading Open JDK Like Memory Calculator 2.0.2_RELEASE from https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/memory-calculator-2.0.2_RELEASE.tar.gz (found in cache)
       Memory Settings: -Xmx681574K -XX:MaxMetaspaceSize=104857K -Xss349K -Xms681574K -XX:MetaspaceSize=104857K
-----> Downloading Spring Boot CLI 1.4.0_RELEASE from https://java-buildpack.cloudfoundry.org/spring-boot-cli/spring-boot-cli-1.4.0_RELEASE.tar.gz (found in cache)
       Expanding Spring Boot CLI to .java-buildpack/spring_boot_cli (0.0s)
Exit status 0
Staging complete
Uploading droplet, build artifacts cache...
Uploading build artifacts cache...
Uploading droplet...
Uploaded build artifacts cache (107B)
Uploaded droplet (53.2M)
Uploading complete
Destroying container
Successfully destroyed container

1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 1 個のインスタンスが実行中です

アプリが開始されました


OK

アプリ cf-spring はコマンド `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes=metaspace:64m..,stack:228k.. -memoryWeights=heap:65,metaspace:10,native:15,stack:10 -memoryInitials=heap:100%,metaspace:100% -stackThreads=300 -totMemory=$MEMORY_LIMIT) && SERVER_PORT=$PORT JAVA_HOME=$PWD/.java-buildpack/open_jdk_jre JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY" exec $PWD/.java-buildpack/spring_boot_cli/bin/spring run app.groovy` を使用して開始されました

alice@example.com として組織 xxx / スペース jyukutyo 内のアプリ cf-spring の正常性と状況を表示しています...
OK

要求された状態: started
インスタンス: 1/1
使用: 512M x 1 インスタンス
URL: xxx.pivotal.io
最終アップロード日時: Mon Dec 19 06:53:21 UTC 2016
スタック: cflinuxfs2
ビルドパック: java-buildpack=v3.9-offline-https://github.com/cloudfoundry/java-buildpack.git#b050954 open-jdk-like-jre=1.8.0_101 open-jdk-like-memory-calculator=2.0.2_RELEASE spring-boot-cli=1.4.0_RELEASE

     状態   開始日時                 CPU    メモリー             ディスク           詳細
#0   実行   2016-12-19 03:54:47 PM   0.0%   512M の中の 198.9M   1G の中の 144.4M

出力の最後の方にあるURL:にアクセスします。

f:id:jyukutyo:20161219174151p:plain

表示されました!

次は管理画面見たりマーケットプレイス使ってみたりしよう!

what is JSRs in 900s

java

Now max JSR number is 380, but JSR has 900s number. For example, JSR 901 is "JavaTM Language Specification".

The Java Community Process(SM) Program - JSRs: Java Specification Requests - List of all JSRs

What are these? They are completed and moved to maintaining.