[ 戻る ]

Java読書会BOF 「Kotlinイン・アクション」を読む会 第7回

開催概要
日時 2018年7月21日 10:00 - 16:00
場所 川崎マリエン 第3会議室
出席者(敬称略) 高橋(智)、高橋(徹)、加藤、平山、岩室(書記)

第11章 DSLの作成

11.2 構造化されたAPIを構築する: DSLにおけるレシーバ付きラムダ

11.2.1 レシーバ付きラムダと拡張関数型

  • 誤字脱字など
    • p.381 「【b】buildString」→「【】buildString」(リスト11.2のタイトル)
    • p.382 「bu【】ldString」→「bu【i】ldString」
  • p.382 「Excl」って何の略? → 感嘆符(exclamation mark)

11.2.2 HTML builderでのレシーバ付きラムダを使う

  • HTML builderは標準か?
    • リファレンスのページにあるのはDSLの例。

    • 公式なHTML builderとして「kotlinx.html」が提供されている。(参考: p378 11.1.4)
  • 「+"文字列"」の「+」は何か?
  • p.392
    • classesへの代入は何か?→プロパティへの書き込み

    • わざわざセミコロンで区切ってるのは何か?
      • 単に1行で書きかったのでは?

      • 二項演算子の「+」に解釈されないようにするためではないか?
        • 二項演算子「+」は未定義だからエラーになるのではないか?
        • たまたま有効な式になっているとエラーにならないのではないか?
  • 誤字脱字など
    • p.385 「Ko【lt】in」→「Ko【tl】in」(リスト11.4のタイトル)

    • p.388 リスト11.9内
      • 「結果をHTML【を】文字列として」→「結果をHTML【】文字列として」
      • 「</table」→「</table>」
    • p.389 「その他の要素など【の】要求された場所に」→「その他の要素など【を】要求された場所に」

    • p.391 「il」→「li」 (リスト11.14内)

11.3 invoke規約による柔軟なブロックのネスト

11.3.1 invoke規約: オブジェクトを関数のように呼び出す

11.3.2 invoke規約と関数型

11.3.3 DSLにおけるinvoke規約: Gradleで依存関係を記述する

  • 誤字脱字など
    • p.396 「({...【)}】」→「({...【})】」 (下から2行目。カッコの対応が逆)

11.4 実際のKotlin DSL

11.4.1 中置呼び出しのチェイン: テストフレームワーク内のshould

  • 英語っぽいDSLはわかりやすいか???
    • 英語話者以外は読み辛い。
    • JUnit4のassertThatがJUnit5では非推奨(?)になった。
    • Rubyでも同様のテストフレームワークの揺り戻しがあった。

11.4.2 プリミティグ型での拡張定義: 日付の扱い

11.4.3 メンバ拡張関数: SQLのための内部DSL

  • 何故演算子オーバーロードではなく「eq」を使用するか?
    • 比較処理を行いたいわけではなく、SQL式を組み立てたいから。
    • 「=」や「==」を使用したいケースと衝突しているのではないか?
  • 誤字脱字など
    • p.402 「SQL【】ための」→「SQL【の】ための」
    • p.405 「【デ】ーブル」→「【テ】ーブル」(リスト11.26)

11.4.4 Anko: AndroidのUIを動的に生成する

11.5 まとめ

付録A Kotlinプロジェクトのビルド

A.1 Gradleを使ってKotlinコードをビルドする

  • 誤字脱字など
    • p.412 「←KotlinのGradleプラグインを適用する」の位置は1行下 (リスト内)

A.1.1 Gradleを使ってKotlinのAndroidアプリをビルドする

A.1.2 アノテーションプロセシングを使っているプロジェクトをビルドする

A.2 Mavenを使ってKotlinプロジェクトをビルドする

  • 誤字脱字など
    • p.415 「http:」→「https:」 (A.2末尾のリンク)

A.3 Antを使ってKotlinコードをビルドする

付録B Kotlinコードをドキュメント化する

B.1 Kotlinのドキュメンテーションコメントを書く

B.2 APIドキュメントの生成

付録C Kotlinのエコシステム

C.1 テスト

  • モックフレームワークはいろいろあるが、どれがよいか? (Javaも含めて)
    • Javaだとmockito。
    • aspectjも良いのではないか?

C.2 依存性の注入

  • 「Dagger」は初耳。
    • Androidでよく使われる。
    • Google製らしい。

C.3 JSONによるシリアライズ

C.4 HTTPクライアント

  • Apache HTTP clientが候補に含まれていない。
    • 昔はAndroid標準に含まれていたが、非推奨→削除となった。
  • 誤字脱字など
    • 「低レベルのもの【がが】必要」→「低レベルのもの【が】必要」

C.5 Webアプリケーション

C.6 データベース接続

C.7 ユーティリティやデータ構造

C.8 デスクトッププログラミング

(以上)

[ 戻る ]