- コルーチンとはなにか、なにがうれしいのか - Kotlinにおけるコルーチンの仕組み - Kotlinコルーチンのきほん - コルーチンスコープと構造化された並行性 - コルーチンと設計 - コルーチンのテスト
Plaidの設計を参考にした, Kotlin coroutines + Retrofit2 でAPI通信をするアプリの実装 モチベーション KotlinConf 2018の「Shaping Your App's Architecture with Kotlin and Architecture Components by Florina」というセッションで、KotlinとArchitecture Componentsを使った設計の話がありました。 Shaping Your App's Architecture with Kotlin and Architecture Components by Florina Plaidというマテリアルデザイン実装のショーケースとなっているアプリを上記設計でリファクタリングする話でした。 Plaid 以下の理由から、Plaidの設計に沿って簡単なサンプルア
Kotlin系いきます。 youtu.be 理想的なコード こんなコード、書けるといいよね。 val user = fetchUser() // ネットワークからユーザー情報をとってくる textView.text = user.name でも、当然ながらUIスレッドでこんなコード書くと、 fetchUser() が NetworkOnMainThreadException 投げちゃうので、だめ。 じゃあこうするとどう? thread { val user = fetchUser() // ネットワークからユーザー情報をとってくる textView.text = user.name } 今度は textView への変更で CalledFromWrongThreadException 投げちゃう。 これならどうだ。 fetchUser { user -> textView.text = u
※こちらは古いので FlowのchannelFlowを使ってRxBindingを置き換える - visible true を参照ください。 Kotlin Coroutine 1.2.xでFlowというコールドストリームをサポートするクラスや関数群が登場しました。 Flow - kotlinx-coroutines-core 次のような感じでめっちゃRxJavaっぽい雰囲気ですが動作の仕組みはコルーチンでやってる感じです。 val f = flowOf(1, 2, 3) // Flowを固定値で作る .map { it * 2 } .flowOn(Dispatchers.IO) // 実行コンテキストを設定できる runBlocking { f.collect { // この呼出しで初めて値が送出され始める println(it) } } Channelはホットストリームなので取扱いが難しい
Kotlin 1.3 が2018年10月30日に正式版として公開されました。 それに伴い、コルーチンが stable へと昇格しました! 非同期処理を楽に書けるコルーチンですが、コルーチンの書き方はわかったものの、実際何がどう動いて何と何がどう関係しているのかといったメンタルモデルが構築されるまでよくわからないまま使ってました。 自分の理解の整理も兼ねて、自分の中のメンタルモデルを図と文で書き出してみました。 間違っているところなどございましたら、コメントなどでご指摘いただけますと幸いです。 Kotlin のコルーチンについて、多少どういったものであるかを知っている人向けになっていますので、そもそもコルーチンって何?って方はまずはこちらの記事をご覧ください。 また、本記事では CoroutineContext のことを単に コンテキスト、 CoroutineScope のことを スコープ
これはKotlin Advent Calendar2016の19日目のエントリです。 本エントリではKotlinの次期バージョン(1.1)で導入されるコルーチンと、その実装のひとつであるasync/awaitについて解説します。 今回書いているコードはGitHub - sys1yagi/kotlin-async-await-sample: yey!に置いています。 Kotlin 1.1の様子 Kotin 1.1は2016年7月にFirst glimpse of Kotlin 1.1: Coroutines, Type aliases and moreで変更の概要とEAPが公開されました。コルーチンのほかにタイプエイリアスやメソッド参照、ラムダ式での引数の分解宣言などなど様々な便利な機能の追加が予定されています。2016年12月の時点で1.1-M03が公開されています。 Kotlin 1.1
IntelliJ IDEA で「Kotlin の設定反映する?」みたいなのが出てきたので、試しに OK してみると build.gradle に設定追加してくれました。しかも特に違和感なくすぐに Kotlin を書き始められる。とてもスムーズ。 buildscript { ext.kotlin_version = '1.0.0-beta-2423' repositories { jcenter() maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.RELE
1. Before you begin App Engine apps are easy to create, easy to maintain, and easy to scale as your traffic and data storage needs change. With App Engine, there are no servers to maintain. You simply upload your app and it's ready to go. App Engine apps automatically scale based on incoming traffic. Load balancing, microservices, authorization, SQL and NoSQL databases, memory caching, traffic spl
Kotlin Advent Calendar 2015の16日目の記事です。 KotlinはJVMで動くプログラミング言語です。 イマドキの文法とタイプセーフな型システムでさくさく安全に書ける言語です。 そしてGoogle App EngineはGoogle.comと同じインフラでアプリケーションを動かせるGoogleのPaaSでサポートされている言語はPython/Java/PHP/Goです。 どんなサイズのアプリケーションも最初っからスケールを意識して書かなければいけなくてちょっと掴みづらいですが最近は日本語のドキュメントも増えつつあるので初心者にも扱えるようになってきてるのではないかなと思います。 特に料金も無料枠があるので使われなければお金がかからないし 突然大量のアクセスがあってもスケールが容易なので個人開発やスタートアップにはオススメのプラットフォームといえると思います。 環境
Intellij IDEAで 公式の動画 を見ながら Gradle プロジェクトを作成して、Hello World まで実行してみました。動画のバージョンは 13.x となってますが、14.x でも大体同じ感じでいけます。使い方調べても英語ばかりなんでこういう動画は助かりますね。 プロジェクトの作成 今回の実行環境は以下の通りです。 Intellij IDEA 14.1.4 Ultimate Edition Java 1.8.0_45 Tomcat 7.0.63 Create New Project で新規プロジェクトを作成します。 GroupId と ArtifactId を入力します。 Use auto-import と Create directories for empty content roots automatically にチェックを入れます。 ここはそのままで。 Tip
先日(2016/2/15)にバージョン1.0がリリースされた Kotlin で ブラウザからHello worldしてみます。 開発環境とプロジェクト作成 IntelliJのインストール ここからCommunityエディションをダウンロードします。 https://www.jetbrains.com/idea/ 最新版はIntelliJ IDEA 15 CEです。 macだとファイル名が、ideaIC-15.0.4-custom-jdk-bundled.dmg でした。 プロジェクトの作成 IntelliJを起動して、Create New Projectを選びGradleとKotlinを選択します。 2つめの画面で、GroupIdとArtifactIdを指定します。 3つめの画面でUse auto-importとCreate directories for empty content ro
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く