30歳になりました!
本日、30歳の誕生日を迎えました 🎉
やはり、ひとつの区切り感はありますね。 せっかくなので、僕のこれまでのプログラマー人生について話します。
完全にチラ裏の自分語りです。 ドラマチックな展開もなければ、知見も教訓もありません。 ただ、昔のこと、プログラミングを始めた頃のことを思い出して整理してみたら、自分が初心に返るための便利アイテムになるじゃないかなと思い、 記憶があるうちに書いておきます。
簡単にまとめると
これまでの人生を振り返って、一言で表すと「運がよかった」ですね。 夢中になれるもの、仕事としてやっていきたいものが見つかったのは、とてもありがたいことですが、運とか偶然と言うほかありません。 そして、これも運命の巡り合わせとして、いろんな人と出会いました。 それが自分の人生にものすごくプラスになっていて、感謝しかありません。
では本編を。以降、常体で。
続きを読むKotlin Fest 2018 開催のお知らせ #kotlinfest #jkug
本邦初!Kotlin 1day 技術カンファレンス
Kotlin Fest 2018 を開催します!!
- 日程
- 2018年8月25日 土曜日
- 会場
- 東京コンファレンスセンター品川 5F
- 主催
- 日本Kotlinユーザグループ
- コンテンツ
- 2トラック 10セッション、企業展示ブース(予定)
Kotlin Fest 2018 は「Kotlinを愛でる」をビジョンに、Kotlinに関する知見の共有と、Kotlinファンの交流の場を提供する技術カンファレンスです。 プログラミングをより楽しくしてくれるKotlinへの関心は日々高まっており、それが本イベントの開催へと繋がりました。 Kotlinの技術にフォーカスしたコンテンツを取り揃えることで、参加者の皆様にKotlinをより深く学んでいただき、 そして、よりKotlinを好きになっていただけるイベントにするべく、企画を進めております。
2018年の初めに開催されたAndroid業界のトップエンジニア1000名以上が参加する技術カンファレンス「DroidKaigi 2018」のオープニングで、本イベントの開催をサプライズで告知しましたが、Kotlinの応用分野としてはAndroidだけではなく、サーバーサイドなど幅広い分野での活用が期待されており、本イベントも様々な分野の開発者の参加を想定しています。
今後のスケジュールとしては、近日中のイベントページの公開を目指しております。 そして、参加申込の開始は7月中旬を予定しております。
スピーカーは全員、企画・運営チームによって招待させていただいたエンジニアの方々となります。 一部の時間を使って、ライトニングトーク大会のようなものを計画中で、こちらのスピーカーは公募を行う予定です。 あわせて、当日のボランティアスタッフの募集も行います。 詳細は追ってご案内いたします。
また、本イベントに協賛いただける企業様の募集を行っております。
名称 | 壇上バックパネルに貴社ロゴ | ブース出展 or ノベルティ等の配布 | イベントWebサイトに貴社ロゴ | 無料参加枠 |
---|---|---|---|---|
ことり | ○ | ○ | ○ | 5名 |
ひよこ | × | × | ○ | 1名 |
ありがたいことに「ことり」スポンサーについては、すでにいくつかお申込みをいただいております。
定数に達しましたら「ひよこ」スポンサーをご案内させていただくかもしれませんが、よろしくご検討いただけますと幸いです。
ご好評につき「ことり」スポンサーは申込を締め切りました。「ひよこ」スポンサーは引き続き募集していますので、ご検討をよろしくお願いいたします。
お問い合わせは japan-kotlin-user-group@googlegroups.com までお願いいたします。
日本Kotlinユーザグループとしては、初めての大規模イベントですので、至らぬ点もあることと存じますが、みなさまのご理解とお力添えを賜りますよう、よろしくお願い申し上げます。
Have a nice Kotlin!
Kotlin技術カンファレンス「Kotlin Fest 2018」は8月25日(土)に開催します!会場は東京コンファレンスセンター品川で、参加者数350人を予定しています。イベントページは近日中に公開予定です! pic.twitter.com/xaZ1mpdmCL
— Kotlin Fest 2018 (@kotlin_fest) 2018年6月25日
Kotlin Developers Meetup #jkug でSpring Fuの紹介LTをしたよ〜
JetBrainsのDeveloper AdvocacyであるHadi HaririさんがGoogle for Mobile I/O RECAP 2018のために来日するということで、 Hadiさんはもとより、Googleさんにもご協力いただき日本Kotlinユーザグループによるイベントを6/27に開催しました。
僕自身はあまり運営を手伝えなかったのですが、ライトニングトークをしてきました。 下にあるのがそのスライドです。
Spring Fuという、Springの新しいプロジェクトを使って、GraalVMの上で動かしたいという旨の発表でした。
Now listening to the awesome @ngsw_taro on running Spring Fu on GraalVM. pic.twitter.com/cV1p8B1UYx
— Hadi Hariri (@hhariri) 2018年6月27日
Spring Fu
Spring Fuは、Kotlin向けのマイクロ・フレームワークで、Sparkや、Spring 5のFunctional Bean Registrationを思わせるAPIが提供されています。 始めるのは簡単です。 公式ドキュメントから、プロジェクトの雛形がダウンロードできます。 入手したzipファイルを展開して、それをIntelliJ IDEAなどのエディタで開けば、開発を始められます。
初期状態のまま./gradlew bootRun
するとHelloWorld Webアプリケーションが起動するので、http://localhost:8080
をブラウザで開くと「Hello world!」と表示されます。
公式ドキュメントを参考に、DI機能を試してみます。
package com.example import org.springframework.fu.application import org.springframework.fu.module.webflux.netty.netty import org.springframework.fu.module.webflux.webflux import org.springframework.fu.ref class HelloService { fun hello(): String = "Hello world!" } val app = application { // bean登録 bean<HelloService>() webflux { server(netty(8080)) { routes { // beanのインジェクション val helloService = ref<HelloService>() GET("/") { val body = helloService.hello() ok().syncBody(body) } } } } } fun main(args: Array<String>) = app.run(await = true)
これ、うまく行きそうなんですが、アプリケーションを起動しようとすると失敗します。 そのときに吐かれる例外メッセージはこんな感じです。
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webHandler': Unexpected exception during bean creation; nested exception is kotlin.UninitializedPropertyAccessException: lateinit property context has not been initialized
lateinit
付きの遅延初期化されるプロパティcontext
が、初期化されていないのにアクセスがあったようです。
丁寧に調査してから、修正してプルリクエストを送りたいところですが、さしあたり、次のコードでこの問題を回避できます。
package com.example import org.springframework.fu.application import org.springframework.fu.module.webflux.netty.netty import org.springframework.fu.module.webflux.webflux import org.springframework.fu.ref class HelloService { fun hello(): String = "Hello world!" } val app = application { // bean登録 bean<HelloService>() webflux { server(netty(8080)) { routes { // ↓の1行を追加する this.context = this@server.context // beanのインジェクション val helloService = ref<HelloService>() GET("/") { val body = helloService.hello() ok().syncBody(body) } } } } } fun main(args: Array<String>) = app.run(await = true)
GraalVM
これはオマケなんですが、Spring Fuで作ったWebアプリケーションをGraalVMで動かしてみたいと思いました。 特にAOTコンパイラで、ネイティブの実行バイナリを作って、それを動かせたらすごいなぁと考えていました。
GraalVMには、Community Edition(CE)とEnterprise Edition(EE)の2つのバージョンが提供されていて、今回はCEを使いました。
CEは現在のところ、Linux上でしか動作せず、Macで直接動かすことはできないようです。
そこで、rayyildiz/graalvmというDockerイメージを使いました。
また、GraalVMのAOTコンパイルを行うコマンドnative-image
が依存するパッケージをインストールする必要があります。
gcc
とzlib1g-dev
です。
結論から言うと、Spring FuアプリケーションをAOTコンパイルすることはできませんでした。 コンパイルに失敗します。 試してから気づいたのですが、Spring Fuのissueとしてすでに登録がありました。
Hadiさんと食事行ってきました
Hadiさんと山本ユースケさんと食事に行ってきました!
With @yusukey and @ngsw_taro who was using Kotlin before Kotlin, i.e. forever... pic.twitter.com/CstpTP4QGm
— Hadi Hariri (@hhariri) 2018年6月29日
Kotlin Fest 2018
やります!!!詳細は近日発表予定です!!!!
Kotlin技術カンファレンス「Kotlin Fest 2018」は8月25日(土)に開催します!会場は東京コンファレンスセンター品川で、参加者数350人を予定しています。イベントページは近日中に公開予定です! pic.twitter.com/xaZ1mpdmCL
— Kotlin Fest 2018 (@kotlin_fest) 2018年6月25日
新作が楽しみだから「ミッション:インポッシブル」についてチラ裏
「ミッション:インポッシブル」シリーズ(以下M:I)の新作が8月3日に日本で公開される。 今から楽しみにしているので、このワクワク感を共有したく、M:Iについて雑に語ってみる。
M:Iの見所といえば、アクションシーンはもちろんのこと、 どういう分厚いセキュリティが施されていて、それをどう破るか。 どういう作戦を立てて、どう相手を出し抜くか。 ここらへんがとても面白い! セキュリティは時代とともに進化しており、回を追うごとに「インポッシブル」感は増すが、主人公たちが使うガジェットもまた進化している。
こういう大きい観点から、あまり注目されないような小さい観点まで、いろんな切り口で過去のシリーズを振り返ってみたい。 当然ネタバレを含む。 まだM:Iを見ていない人は注意されたい。 あと、何かを主張したいわけではないし、多分に主観が含まれるかもしれない。 同じようにM:Iが好きな人がニヤッとしてくれたら嬉しい。
なお「スパイ大作戦」は観たことがなく言及していないので悪しからず。
続きを読む