タケハタのブログスマートフォン用の表示で見るタケハタのブログプログラマの生き方、働き方、技術について雑多に書いていくブログです。2019に参加してきました。Dayに参加してきたレポートを書きたいと思います。Multiplatformの使い方はまた別の記事で今月中に書こうと思っているので、この記事は会場の雰囲気とかざっくりやったこと、学びや所感などを紹介します。ワークショップは参加したことのある方も少ないと思うので、雰囲気を知ってもらえればと。Multiplatformは、KotlinのコードでiOS、Android、Webなど複数のプラットフォームそれぞれで使えるライブラリを作り、ビジネスロジックなどでのコードの共有を可能とする機能です(現在はまだExperimental)。Multiplatformでライブラリを作り、マルチプラットフォームでKotlinのコードを共有する、というのを体験するワークショップ。Multiplatformを使うといった流れでした。会場はベラ・センターというカンファレンスセンターでした。パスポートを見せれば名前から探してパスを出してくれます。これは毎日置いてあります。これを食べてコーヒー飲みながら開始時間まで待機。ワークショップ会場こういう感じの会議室でした。人数は20〜30人くらい?講師の方は2人で、Web上に手順とか載せた資料を用意してくれているので、基本的にはそれに沿って作業していきます。一定の区切りごとに講師の人がスライドで説明して、「じゃあここまでやってみよう」となってひたすら手を動かしていく感じ。後半の方になると実践編になってくるので、ほとんどの時間はひたすら作って、分からない部分は質問するという形でした。前述の通り細かい技術的な内容は別記事で書くので、今回はざっくりやったことだけ。Platformでプロジェクトを作り、簡単なサンプルのコードとテストを実行して動作確認。そのあと各プラットフォーム向けのライブラリのコードを実装します。テストコードを作って、各プラットフォームのコードをテストして、通ったらOK。(動作確認にテストコードをサンプルとして用意してくれているのは、個人的にとてもホスピタリティ高く感じました)最後にbuildして、各プラットフォーム向けのライブラリファイルを作成します。作ったライブラリを各プラットフォームのアプリケーションから呼ぶAndroid、iOS、Webそれぞれでプロジェクトを作成し、それぞれに作成したライブラリのファイルを配置します。IDEAで作成した静的Webのプロジェクトです。ここでSwiftやJavaScriptからKotlinで作成したライブラリのファイルを呼ぶことが体験できます。この辺で「おお、なるほど!」とこの技術の可能性を感じ始めました。Ktorサーバーに通信するKtorクライアントの処理をMVPパターンのMultiplatformライブラリで作る基礎編でやった知識を使って、実践的なアプリケーションを作ります。作ったのはアドレス帳のアプリケーションで、こちらもAndroid、iOS、Webでそれぞれ。共通ライブラリ内容的にはKtorでのHTTPクライアントの実装を、Multiplatformライブラリとして作るというものでした。通信のパラメータで使うデータくらすや、通信のインターフェース部分を共通化するイメージ。実装にMVPパターンを使っていて、その紹介のパートもありました。サーバープラグラムHTTPで通信する先のサーバープログラムは用意されていて、それをGitHubからCloneしてきてローカルで起動して使用。こちらもKtorで作られていました。各プラットフォームのクライアントプログラムあとiOS、Android、iOS、WebのそれぞれのコードもViewの部分は用意されていて、GitHubからCloneして使用。API通信の部分だけTODOになっていて、それを作成したライブラリを呼び出す形に変更するという形でした。ライブラリがちゃんと作れていれば、書き換えて起動するだけでアドレス帳のアプリが動くようになっています。Multiplatform向けのライブラリの紹介です。Multiplatformの実装にも対応しているライブラリを紹介しています。DIライブラリのKodein-DIと、時刻ライブラリのKlockが紹介されていました。(ここは時間が残り少なかったのであんまりちゃんとやってないです)学びKotlinのマルチプラットフォーム展開の可能性もともとKotlin/JSやKotlin/Nativeの存在はもちろん知っていたし、興味で触ってみたこともありました。今回実際に1日ガッツリとやってみて、完全に別言語で作っているiOSやWebのアプリでもKotlinで実装したロジックを共有するという体験ができて、マルチプラットフォームでの使用に対するイメージがすごく具体的に湧きました。このワークショップではやらなかったですが、もちろんサーバープログラムとの共有もできます。今まで「サーバーとクライアントの言語を統一することでロジックを共有する」という発想はありましたが、それをせずKotlin、Swift、JavaScriptというクライアントのメジャー言語とロジック共有できるのは、かなり可能性を感じました。僕は本職がサーバーサイドなので慣れない部分もありましたが、勉強になったし今後も情報を追いかけていきたいと思います。英語力が低くてもついて行けたし勉強になった僕は正直英語を全然話せない人なので、今回のワークショップはかなり不安もありました。「セッションを聴くだけならなんとかなっても、ワークショップで会話しながら進めるのは難しいのでは?」と。実際に行ってみると資料は読みながら進められるものがしっかりと用意されているし、講師の人も割と分かりやすい英語で話してくれていたので、全然問題なくついて行くことができました。質問とかは全然できなかったですが、それでも前で説明してくれたりしてるのを見てるだけでも、手順だけ見てやるのよりだいぶ理解が早かったです。それにワークショップという環境で、一日に大量の情報をガリガリ手を動かしながらインプットできたのもかなり良かったです。仮に資料の内容を土日とかに一人でやろうとしても、多分2ヶ月はかかるだろうと思います笑KotlinConfへ参加する際はぜひワークショップも!ワークショップのチケットは649ユーロとなかなかお高いので迷ったのですが(セッションのチケットが445ユーロ)、「せっかく行くなら全部体験しないともったいない!」と思い申し込んで大正解でした。現地に行くことがあれば、ぜひワークショップも参加されることをオススメします!おまけ:アダプタのタイプは注意デンマークの電源はCタイプなのですが、これに対応したアダプタを用意するのを忘れていました。(大きい変圧器は用意していたのですが)Macはこのプラグの部分だけ付け替えることもできるので、これをどこかで用意しておけば良かったんですね。やむなく拙い英語で講師の人に貸してもらえないか聞いたところ、予備を持っていて無事借りることができました。Studio、Xcodeを同時起動する凄まじくバッテリーを使うワークショップだったので、非常に助かりました。はてなブログProプログラマとしての生き方とか、働き方とか、技術のことを雑多に書いていきます。CODE-セブンスコード-」のバックエンド技術DockerでMySQLを起動した時はバージョン差異に注意ブログの技術記事で書く内容をパターン分けしてみた2019年を雑に振り返る月別アーカイブはてなブログをはじめよう!take7010さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。