Kotlin 1.8 で JetpackCompose を使う

Kotlin を 1.7.21 から 1.8.0 に上げます。


[versions]

# kotlin = "1.7.21"
kotlin = "1.8.0"
compose-compiler = "1.4.0-alpha02"

build します。

はい、エラーでました。


e: This version (1.4.0-alpha01) of the Compose Compiler requires Kotlin version 1.7.21
but you appear to be using Kotlin version 1.7.21 which is not known to be compatible.
Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!).
https://developer.android.com/jetpack/androidx/releases/compose-kotlin#pre-release_kotlin_compatibility

表示されてるリンクに行きます。

はい、Kotlin 1.8 ありません。

👉 Compose to Kotlin Compatibility Map  |  Android Developers hatena-bookmark

さらに、そのページにあるリンク先へ。

ここにありますね。

👉 Compose Compiler Maven Index hatena-bookmark

さらに、このページにあるリンク先の記述を参考に変更します。


# libs.versions.toml

[versions]

# kotlin = "1.7.21"
# compose-compiler = "1.4.0-alpha02" # composeOptions ↔ kotlin 1.7.21

kotlin = "1.8.0"
compose-compiler = "1.4.0-dev-k1.8.0-33c0ad36f83"


// settings.gradle

dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    google()
    mavenCentral()

    maven {
      url "https://androidx.dev/storage/compose-compiler/repository/"
    }


// build.gradle (:app)

composeOptions {
  kotlinCompilerExtensionVersion libs.versions.compose.compiler.get()
}

👉 jimgoog/ComposeAppUsingPrereleaseComposeCompiler: Demonstrates using Compose with pre-releases of KotlinCompiler and ComposeCompiler hatena-bookmark


 

■ まとめ

Kotlin バージョンと Compose Compiler のバージョンは密接に関係しています。

ちなみに、Compose UI 側のバージョンは以前のままの alpha03 (現最新) で、まあまあ良さげです。


[versions]

kotlin = "1.8.0"
compose-compiler = "1.4.0-dev-k1.8.0-33c0ad36f83"
compose-ui = "1.4.0-alpha03"


[libraries]

compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose-ui" }
compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose-ui" }
compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose-ui" }
compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "compose-ui" }
compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "compose-ui" }


【AndroidStudio】プラグイン Rainbow Brackets が括弧だけでなく 変数 まで色が付くようになる【IDEA】

ネストする括弧を分かりやすく色分けしてくれるプラグイン「Rainbow Brackets」。

👉 IntelliJ IDEA プラグイン「Rainbow Brackets」を使う hatena-bookmark

ついに、変数 (variables) まで色分けしてくれるようになっております。

これが、

こうなる。

少しうざい、括弧だけでいい、という方は、詳細設定できます。

👉 Incompatibility with Semantic highlighting · Issue #2563 · izhangzhihao/intellij-rainbow-brackets hatena-bookmark


【IDEA】Python Code Style インデントをスペース2 に設定する

Editor の反応を スペース2 仕様にする。


Setting

  ↓

Editor

  ↓

Code Style

  ↓

Python

Tabs and Indents のタブから 4 → 2, 8 → 4 に変更。

【IDEA】Python Code Style インデントをスペース2 に設定する

IDEA の 文法チェック周りを調整する。


Setting

  ↓

Editor

  ↓

Inspections

  ↓

PEP8 coding style Violations

Options Ignore errorE111, E114 を追加する。

【IDEA】Python Code Style インデントをスペース2 に設定する


E111 indentation is not a multiple of four

E114 indentation is not a multiple of four (comment)

👉 Introduction — pycodestyle 2.7.0 documentation hatena-bookmark
👉 【Pythonコーディング規約】PEP 8 vs Google Style - Qiita hatena-bookmark
👉 styleguide | Style guides for Google-originated open-source projects hatena-bookmark

まあ、しかし、スペース 4 のほうが今はまだ主流ですよな。

👉 path:**/setup.cfg flake8 ignore - Code search results · GitHub hatena-bookmark
👉 Flake8: Your Tool For Style Guide Enforcement — flake8 6.0.0 documentation hatena-bookmark



【macOS】「⌫ (delete)」 と「⌦ (forward delete)」の キーボードショートカット設定

カーソルの左右の文字を消す

「⌫(delete)」「⌦(forward delete)」

の操作。

両手がキーボードのホームポジションから離したくないので、各エディタアプリごとの設定でキーボードショートカットやキーマップを設定しようとして困惑。

まあ、だるい。

設定できても衝突の話もある。

 

■ どうしたいのか

それぞれを 「⌃(control)」 を使ったショートカットに振り分けたい。


カーソルの左を消す delete-backward-char (Windows Backspace)
delete

→ ⌃(control) + H


カーソルの右を消す delete-char (Windows Delete)
fn (function) + delete

→ ⌃(control) + D

 

■ キーマップアプリで設定する

macOS 上で動くキーマップアプリでショートカットとして登録しちゃいます。

👉 ⌘英かな hatena-bookmark
👉 Karabiner-Elements hatena-bookmark

これだけです。

 

■ まとめ

macOS 上で動くテキストのエディタ系の操作はこれですべて統一できます。

もし、すでに 「⌃(control) + H/D」をショートカットすでに使用している場合は使えなくなりますが、最も頻繁に直感的に使うエディタ操作を優先します。

👉 【macOS】キーマップとキーボードショートカットの変更設定 hatena-bookmark
👉 Deletion (GNU Emacs Manual) hatena-bookmark


【macOS】キーマップとキーボードショートカットの変更設定

最近では、macOS ユーザーは、いくつもの重なって設定されたショートカット機能を「ほぼ無意識」にキーボードから操作することになっています。

当然、衝突したり、意図しない機能が発動されることも多くなります。

まずは、設定箇所をはっきり把握しておきたいです。

 

■ OS 設定 キーボードショートカット「修飾キー」

修飾キー (Modifier Keys) の、それぞれの機能を入れ替えたり、無効化することができます。


System Settings

  ↓

Keyboard

  ↓

Keyboard Shortcuts…

  ↓

Modifier Keys

👉 Macで修飾キーの動作を変更する - Apple サポート (日本) hatena-bookmark

 

■ キーマップ変更アプリ

修飾キー を含めたいろいろなショートカットを作成できます。⌘(command)⇧(shift) キーの左右個別の機能振り分けやカーソルキー、Fn キーなど細かく設定できるサードパーティのアプリです。

有名な2つを挙げておきます。ソースコードはともに GitHub で公開されています。無料です。

👉 Karabiner-Elements hatena-bookmark

👉 ⌘英かな hatena-bookmark

私は、⌘英かな を利用して、英数 ↔ かな の切り替えと カーソルキー のショートカット作成で使用しています。

👉 【macOS】IDE で 矢印 (カーソルキー) を使うと キーボード ホームポジション がずれる件 hatena-bookmark

 

■ OS 設定 キーボードショートカット「アプリショートカット」

OSの設定からアプリごとにショートカットを設定できます。


System Settings

  ↓

Keyboard

  ↓

Keyboard Shortcuts…

  ↓

App Shortcuts

  ↓

All Applications


👉 Mac のキーボードショートカット - Apple サポート (日本) hatena-bookmark

ショートカットに振り分ける機能の名称に関しては、スペースや大文字小文字などきちんと入力する必要があります。そこが面倒です。機能 - 名称 の一覧とかどこかにないでしょうかね。

👉 【macOS】キーボードショートカットの変更は言語設定別でイヤだ!! hatena-bookmark

 

■ 各アプリの設定

ブラウザ や エディタ、IDE など、インストールしたアプリ内の設定からもショートカットの設定ができます。

以下、Android Studio のデフォルトのショートカット。


👉 キーボード ショートカット  |  Android デベロッパー  |  Android Developers hatena-bookmark

Android Studio では、設定から、個別にショートカットの変更ができますが、それらの詰め合わせとなったIDEAプラグインをインストールしてまとめて変更することもできます。

👉 IdeaVim - IntelliJ IDEs Plugin | Marketplace hatena-bookmark
👉 VSCode Keymap - IntelliJ IDEs Plugin | Marketplace hatena-bookmark
👉 macOS For All - IntelliJ IDEs Plugin | Marketplace hatena-bookmark
👉 Emacs Keymap - IntelliJ IDEs Plugin | Marketplace hatena-bookmark

以下、Chrome のデフォルトのショートカット。

👉 Chrome のキーボード ショートカット - パソコン - Google Chrome ヘルプ hatena-bookmark

Chrome では、設定 - エクステンション - ショートカット


chrome://extensions/shortcuts

から、個別のアプリに対してのショートカットを変更できますが、これも以下のような Chrome エクステンションをインストールすると設定しやすいです。

👉 AutoControl: Keyboard shortcut, Mouse gesture - Chrome Web Store hatena-bookmark
👉 Shortkeys (Custom Keyboard Shortcuts) - Chrome Web Store hatena-bookmark
👉 Disable keyboard shortcuts - Chrome Web Store hatena-bookmark

 

■ まとめ

不必要にショートカットをカスタムするのはやめたほうが良さげ。

最小限のカスタムで今の段階でメモ。


1. os settings keyboard modifier keys

  caps lock → control


2. ⌘英かな (os app)

  left command → 英数
  right command → かな
  control + p → arrow up
  control + n → arrow down
  control + f → arrow right
  control + b → arrow left


3. os settings keyboard app shortcuts

  command + v → Paste and Match Style
  shift + command + v → Paste

  ※ Notes.app 向けに paste 2つを入れ替える。


4. app settings

  - Android Studio
    Settings… - Keymap
    → macOS のままにする

  - Chrome
    disable shortcut (chrome extension)
      command + p → Do nothing
      command + d → Do nothing
      command + s → Do nothing

    ※ 英かな切り替え直後の意図しない動作を防ぐ。

指がホームポジションから離れることがずっと気になっていました。

キーマップを自由にカスタマイズできる ⌘英かなKarabiner-Elements を使うことで カーソルキーを使った範囲選択が shift + control + p/n/f/b でできるようになったことで IDEA/Android Studio 上でエディタの Keymap を デフォルトである macOS のまま利用できるようになったことがうれしい。

衝突の警告が多少出ているが、追って調整していけば問題ないでしょう。