Kotlinのアプリにおいて、非同期処理をアプリ上で工夫して行っていました。
それを別アプリ・インフラでの非同期処理に移行していくまでの思考過程・技術選定・DDDとの相性についてお話します。
アプリケーション開発をする上で認可というものは切っても切り離せない関係にあります。
そのユーザーがどのような操作ができて、何ができないのかを定義し、実装することは当たり前のようにやられていると思います。
しかし、認可処理の実装には様々なパターンがあり、適切なパターンを選択するのは困難です。
このセッションでは認可のベストプラクティスとDDDの文脈における認可の取り扱いについて説明します。
また、ケースに合わせた実装パターンについて、Kotlinでの実装例も合わせてご紹介致します。
Kotlinには豊富な言語表現があります。
例えば状態を保持するのにもenumとsealed interface(class)などがあります。
比較表現にも==と===、classにつけるキーワードにもdataやinner、value、inlineなどいくつかあります。
しかし、それぞれの特徴を理解しておかないと意図しない表現になったり、もっと工夫できる書き方があるのに気づかなかったりします。
そこで使用事例の違いから内部実装の違い、Kotlinにしかない機能に関してはバイトコードから分かるコードサイズの違いまで様々な観点から見ていきます。
本セッションでは、Kotlinにいくつか存在する似た言語機能を時間の許す限りピックアップします。
そして、聞いていただいた方が違いを理解することで自信を持ってコーディングできる状態を目指します。
※ 取り上げる予定の言語機能についてはスライド参照
Kotlin DSLが新規Gradle Buildsのデフォルトになって1年が経ちました。Kotlinで書かれたGradle Pluginも見る機会が増えているかと思います。
今後ますますのkotlnizeが進むと思われるGradleでKotlin DSLの力を発揮するためのTipsをお送りします。
本セッションでは下記のことを取り扱います。
・Kotlin DSLとGroovy DSL
・Kotlin DSLの強みと弱み
・Groovy DSLからの移行
・Kotlinで表現する便利Gradle Tasks
・Java(Kotlin) Project, Android ProjectそれぞれでのKotlin DSLの活かし方
コマンドライン環境を便利にするためにシェルスクリプトを書きますが、慣れ親しんだ言語ではないので毎回検索しながら試行錯誤を経て実装していませんか?また、時間が経過したあとにスクリプトを修正しようと思ったときに、「あれ…これなにしてるんだっけ」と途方に暮れた経験はありませんか?もしKotlinでスクリプトを書くことができれば、もっとスピーディかつ保守性も高くやりたいことを実現できるのではないでしょうか。
そんな望みをKotlin Scriptingが解決します。Kotlin Scriptingを使えば、Kotlinをあたかもスクリプト言語のように扱うことができます。このセッションでは、そんなKotlin Scriptingの1からの使い方から、日常で使うために立ちはだかるハードルのクリアを仕方を解説し、誰しも明日からKotlin Scriptingを使っていけるような解説をします。
皆さんは、Kotlin のコードをレビューするとき、どのような点に気をつけていますか?このセッションでは、レビュー依頼を受けたことを想定し、どのようなコメントを書くべきかについて、リアルタイムデモを交えて説明します。
レビューでは、以下の内容に触れる予定です。
また、Kotlin Fest 2022 の "可読性から見たKotlinの言語機能 -「使いたい」の、その先へ。" のプレゼンテーションや "読みやすいコードの書き方" の資料 (https://gist.github.com/munetoshi/65a1b563fb2c271f328c121a4ac63571) をレビューに活用する例も取り上げます。
どんなプロジェクトも、コード量の増加や関わるメンバーの増加により、設計のルールが守りにくくなり、アーキテクチャ上の「無謀な負債」が懸念事項となります。
Javaの土地勘がある方なら、ArchUnitというツールが思い浮かぶかもしれません。実は、ArchUnitの思想を汲んだKotlinネイティブのツール、Konsistというライブラリが存在します。
本セッションでは以下の内容を掘り下げ、Konsistの価値を理解していただき、技術選定の際の重要な参考材料として提供できればと思います。
Kotlin Multiplatform(KMP)を使うとjvmやAndroid Runtime上だけでなく、IOS上や、javascript、PCのバイナリとしてもコードを実行することができます。
これによって各プラットフォームでKotlinの言語機能の恩恵を受けることができ、プラットフォーム間のソースコードの共通化や、クロスプラットフォームのアプリケーションの開発をすることができます。
このセッションではKMPとそうでないアプリケーションとの違いや、KMPならではの特徴、実際に開発して得たノウハウについて、技術選定からKMPならではのアーキテクチャ事情、実装パターンまでを含めて紹介します。
KMPでの開発を始めたい人、始めたての人がKMPのことをより深く知り、KMPでの開発をしていく手助けになるセッションにしたいと思います。
「単体テストの考え方/使い方」(原題: Unit Testing Principles, Practices, and Patterns)という本があります。
単なるテストの書き方にとどまらず、価値の高いソフトウェアを構築するためのエッセンスが凝縮された名著です。
本セッションでは本書の内容をかいつまんで紹介しつつ、Kotlinにおいてどのようにそれを実践していけばいいのか、具体的な事例を交えながらそのベストプラクティスを探っていきます。
・単体テストは書いたことある or 日常的に書いてるけど、結局「いいテスト」ってなんなのかよくわからない
・単体テスト・統合テスト・E2Eテストってどう組み合わせればいいの?
・なんか気づいたらいつもテストコードの修正してる
という方々、ぜひご参加ください。
GitHub Copilotにより、世の中のプログラミングは劇的に進化しました。 LLMの力を使いコード生成、爆速開発できます。
より使いこなすには、LLMの技術的な制約・Kotlinの言語仕様を理解する必要があります。
・Kotlin 言語仕様を活用して可読性を維持しつつ意図したコード生成
・Single fileコーディングで十分なコンテキストを与えて、IDEの機能を使ってリファクタリング!
・Copilot Chatをコードリーディングに活用、実用的にするための一捻り
プレゼンテーションの構成
・LLMの原理原則から、できること・できないことの説明
・開発の流れに沿って活用のデモ
・Copilot Chatを活用して実用的なライブラリのコードリーディング
KotlinとGitHub Copilotを使った、未来のプログラミングスタイルを今日から始めましょう!
このセッションではAndroidエンジニア向けにKMPライブラリの紹介をします。
Androidのライブラリ(Room,Retrofit,OkHttp)は触ったことがあるけど、KMPライブラリは触ったことがないといった方に向けてKMPで利用できるライブラリ(sqldelight,Ktorfit,Ktor)を紹介します。
また、Androidエンジニアが慣れ親しんだAndroidライブラリ風にKMPライブラリを使用する方法をご紹介します。
・sqldelightでRoomライクなDB実装
・Ktorfit+Ktor+kotlinx.serializationでRetrofit+OkHttpライクな通信実装
昨今、Androidの開発でもコードの品質の確保が重要となっており、その指標の一つとしてユニットテストのコードカバレッジが利用されています。
しかし、Androidのビルド環境は、使い慣れないGradle・マルチモジュールなどで複雑になっており、思い通りにカバレッジを取るのが非常に難しくなっています。
本セッションでは、Jacocoの設定を記述したStand Alone Gradle PluginをKotlinで作成する方法を解説し、モジュール間・プロジェクト間でのコードの再利用性を高める手段を紹介します。
以下目次
Kotlin Multiplatform を用いた iOS/Android アプリ開発は、自由な範囲でソースコードの共通化ができます。それによって iOS/Android らしい UI/UX を実現しつつ、両アプリの仕様差異を仕組みで防ぐことができます。
このセッションでは Kotlin Multiplatform を導入したい人や、導入したけど iOS エンジニアの開発者体験をより良くしたい人に向けて、Swift から見た Kotlin Multiplatform の問題点と、それを解決する SKIE について解説します。また、実プロダクトに SKIE を導入した後のメンバーの感想や自発的取り組み、副作用とその対処法についても紹介します。