LINEが定期的に開催する、Kotlinをテーマにした技術者向けのミートアップ「LINE Developer Meetup for Kotlin」。今回は「LINEにおけるServer Side Kotlinの導入事例と開発裏話」をテーマに開催します。ここで登壇したのは、「Messaging API」のサーバーサイドを開発している川田裕貴氏。システムの改善における取り組みについて発表しました。全2回。後半は、「Messaging API」のテスト環境について。前回はこちら。 End to EndでテストができるテストケースをKotlinで書いている 川田裕貴氏:前半はMessaging APIの話をしてきましたが、後半はちょっと話を変えます。Messaging APIの中ではテストをいろいろ動かしているのですが、テストケースも全部Kotlinで書いています。普通のユニットテストではなく、E
Kotlin / Swift での Unicode の扱いまとめ (見た目上の文字数カウント, UTF-8, UTF-16, BOM, 正規化, 異体字セレクタ)AndroidiOSKotlinUnicodeSwift Kotlin と Swift での見た目上の文字数カウント実装を中心に、Unicode について知っておくべき知識をまとめます。 また、モバイルアプリで入力文字数のカウントや入力文字数の上限をどのように扱うかは以下の別の記事にまとめました。 文字数カウント まずは、文字数カウントが難しい例として絵文字と異体字セレクタ表現の例を挙げます。詳しい説明はこの記事の後半を確認してください。 絵文字 🧑🦰 の文字数について確認します。🧑🦰 は以下の Unicode で構成されています。 文字 Code point UTF-8 表現 UTF-16 表現 Descriptio
class NamedShape { var numberOfSides: Int = 0 var name: String init(name: String) { self.name = name } func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } } class NamedShape(name: String) { var numberOfSides: Int = 0 var name: String = "" init { this.name = name } fun simpleDescription() : String { return "A shape with ${numberOfSides} sides." } } class Square: Nam
switchみたいな条件分岐がしたい when Kotlinにはswitch構文はありません。 代替としてwhenを使います。 ifと同様にwhenも式(when式)です。 フォーマット 以下のように記述します。 when(引数) { 値-> 戻り値 else -> 戻り値 } when { 条件-> 戻り値 else -> 戻り値 } elseは必須となっております 実装サンプル val value = "hoge" when { value == "hoge" -> println("ほげ") value == "fuga" -> println("ふが") else -> println("piyo") } よくあるswitch的な書き方だとこんな感じです。 val value = "hoge" when(value) { "hoge" -> println("ほげ") "fuga"
「Kotlin 1.4.20」では、JVMのターゲットに「JVM 15」を追加するとともに、動的文字列連結の呼び出しに対応している。 また、Kotlin/JSでは、Gradle DSLにおけるプロジェクト構成をより適切に制御するための改善や、新しいプロジェクトウィザードのテンプレート導入が行われたほか、Kotlin/JS IRコンパイラにおいてコンパイルエラーを無視する機能が実験的に搭載された。 Kotlin/Nativeでは、パフォーマンス改善の一環として新しいエスケープ分析メカニズムのプロトタイプが導入されたほか、コード共有メカニズムなどのバグを修正している。また、プロパティの初期化、関数参照の動作など、コーナーケースでのKotlin/NativeとKotlin/JVM間の動作の不具合が修正されている。さらに、Objective-C相互運用機能を拡張し、Objective-C例外をKo
Kotlin を使い始めても色々な点で未だ Java 的なコーディングから抜けきれません。正規表現もそんな一つです。こんなことじゃいけないと思い、Kotlin の正規表現検索をちゃんと勉強すべく、色々情報をを探し回ったのですが、意外なことにまとまった情報が見つかりません。断片的な解説ページはいくつか有りますが、ちゃんと体系立って説明したものが見つからないのです。日本語、英語どちらにもです。 なので試行錯誤的に使い込んで分かってきたことを整理しておきます。 Regexクラス 正規表現検索を行なうにはまず正規表現文字列を定義しなくてはなりません。この時トリプルクオート("""〜""")を使うと便利です。特殊文字をエスケープする必要がなくなります。例えば通常の文字列表現では "\\d+" と書くところを """\d+""" と書けます。複雑な正規表現を書く場合のあの悪夢のような苦痛が少しは軽減で
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Kotlin 1.3がリリースされ、coroutinesが正式版になりました。 Kotlin 1.3にバージョンを上げるとKotlin 1.2系で動いていたcoroutinesの処理が動かなくなってしまったため、少しコードの修正が必要になりました。 2020年8月17日にKotlin 1.4がリリースされました 過去に投稿した AndroidでKotlinのcoroutine(Async, Await)を使ってサクッとHTTP通信(非同期処理)を行う をKotlin 1.3 1.4でも動くように修正しました。 (前回の記事と内
2018年10月30日にリリースされた Kotlin 1.3 で、 Kotlin Coroutines が stable になりました。概念などの説明は省きますが、非同期的な処理を同期的にすっきり書くことができる仕組みになります。 活用の幅が広そうなコルーチンですが、「Web APIやDBを簡単に扱いたい」というのが、Android 開発における大きなニーズなのではないかと思います。 この記事では、Android で、 コルーチンと Retrofit を使って Web API 叩く方法をパターン別に紹介します。また、JUnit と mockk を使ってテストを書く方法にも触れます。RxJava を使っている人向けに各例が RxJava の何に相当しそうかということも書いたりしていますが、使っていない方は読み飛ばしていただいても大丈夫です。 公式のドキュメントなどを読めば自明なことばかりかと
dispatchers コルーチンを使う際に、どのスレッドもしくはスレッドプールにて実行・制御したいということがあります その際にdispatcherを指定することで解決できます Dispatcherにもいくつか種類があるので使い分けたいところです Dispatchers.Main UIに関する処理をするメインスレッドのためのコルーチン Dispatchers.Main.immediate UI更新を即時行いたい際に使用される (e.g. textviewのtext更新とか) Dispatchers.Default 共有スレッドプールを使用し、CPUのコア数に従って設定される CPUに負荷をかけるような計算をするような処理に対して使うことが推奨されます Dispatchers.IO その処理に必要なコルーチンの数に応じて必要な分だけ共有スレッドプールを使用する DBの検索等、I/Oに負荷を
インタフェースの定義と実装 実装するオブジェクトの協会におけるプロトコル(規約、取り決め)を表現するもの インタフェースのメンバは基本抽象メンバ(abstructを書かないのが普通) 直接インスタンス化できない interface Greeter { val language: String fun sayHello(target: String) } class EnglishGreeter: Greeter { override val language: String = "English" override fun sayHello(target: String) { println("Hello, $target") } } 抽象クラスとの違い インタフェースにはコンストラクタがない 継承可能なクラスは1つ。準拠可能なインタフェースは1つ以上 複数のインタフェースを実装する場合は
MVP(Model + View + Presenter) なんでMVP? MVCで書いてるとActivityがViewとControllerの役割を担ってしまうためFatActivity(Activityに処理が集まってしまう)になってくらしい。 実質Activity=ViewなのでControllerの機能だけでも引きはがしたい。 ○○Listenerでイベント受け取って処理しなければいけないのはどうしようもない。 なので「○○Listener」での処理の中身はActivity外に移そうよ(Presenter)って方針になったぽい。 1.参考 ひとまず結論 簡単なTodoアプリで実装してみたけどあんまり恩恵は感じなかった ちゃんとFatControllerに対して適用したらよい感じなんだろうなー... 調べた 2.googlesamples 上のやつはFragmentを使う場合ぽい F
kotlinx.serializationとは Kotlin serialization consists of a compiler plugin, that generates visitor code for serializable classes, runtime library with core serialization API and JSON format, and support libraries with ProtoBuf, CBOR and properties formats. Serialize可能なクラスのvisitor codeを生成するコンパイラプラグインとcore serialization APIおよびJSON形式のランタイムライブラリで構成している。 つまり、Kotlinで作られたSerializerということですね。 また、そのほかの特徴として
Kotlin では バージョン 1.1 から Coroutine が導入されています。 検索すると coroutine, async/await に関する情報がたくさん見つかりますが、そもそも coroutine がどのようなもので、どのように使うのかを簡単に説明した資料が少なかったため、 Kotlin 公式ドキュメントを元に勉強してみました。 筆者は Coroutine 自体に馴染みがなく、今回 Kotlin で初めて触れています。根本的な認識の誤り等なにかございましたらご指摘いただければ嬉しく思います。 ※ 2017年11月現在の最新版は 1.1.60 ですが、 Coroutine は未だ experimental となっています。そのため今後破壊的な変更が行われる可能性があります。 Coroutine は軽量な Thread Coroutine とは、つまるところ軽量な Thread
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く