kotlinx.cliで始めるCLIアプリ開発
by
Yuta Tomiyama
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
kotlinx.cliで始める CLIアプリ開発 CAMPHOR- LT 2020 Summer
Slide 2
Slide 2 text
自己紹介 HN: マヤミト 会津大学26期 (学部3年) Zli 現代表 Twitter: @yt8492 GitHub: https://github.com/yt8492 好きな技術: Kotlin https://yt8492.com Facebookのすがた Twitterのすがた
Slide 3
Slide 3 text
もくじ 1. そもそもKotlinでCLIアプリの開発ができるのか? 2. kotlinx.cli の紹介 a. プロジェクトへの導入 b. ArgParser c. Argument d. Option e. Subcommand 3. デモ
Slide 4
Slide 4 text
1. そもそもKotlinでCLIアプリ開発ができるのか?
Slide 5
Slide 5 text
1. そもそもKotlinでCLIアプリ開発ができるのか? A. できます。(できなかったらそもそも今日登壇してない)
Slide 6
Slide 6 text
前提: KotlinでCLIアプリを開発するには - 実行可能なjarファイルにする - 実行可能なバイナリにする - nodeで実行可能なjsにする
Slide 7
Slide 7 text
2. kotlinx.cliとは - Kotlinのコマンドラインパーサーライブラリ - Kotlin公式が出している - コマンドやパラメータを宣言的に書ける - マルチプラットフォーム対応 - Kotlin/JVM, Kotlin/JS, Kotlin/Native (公式リポジトリのReadmeより適当に和訳) https://github.com/Kotlin/kotlinx-cli
Slide 8
Slide 8 text
使用例1
Slide 9
Slide 9 text
使用例2
Slide 10
Slide 10 text
kotlinx.cliの導入 方法その1 build.gradleに依存を追加
Slide 11
Slide 11 text
kotlinx.cliの導入 方法その2(Kotlin/Nativeの場合のみ) build.gradleのターゲットの設定でenableEndorsedLibsをtrueにする
Slide 12
Slide 12 text
ArgParser コマンドライン引数をパースしてくれるやつ コンストラクタにプログラム名を渡す parseメソッドにコマンドライン引数のString型の配列を渡してパース
Slide 13
Slide 13 text
Argument そのCLIアプリの主要な引数 例: catで渡すファイル名 type: 引数のタイプ(String, Int, Double, Boolean, Choice) description: 引数の説明 変数名がそのままargumentの名前になる
Slide 14
Slide 14 text
Option コマンドのオプション 例: git commit --amend type, description: Argumentと同じ shortName: -が1つの省略形 Argumentと同じく、変数名がそのままオプション名(fullName)になる デフォルト値や必須のオプションなどを設定可能
Slide 15
Slide 15 text
Subcommand CLIアプリのサブコマンド 例: git add, git commit Subcommandクラスを継承して実装する Subcommandクラスのコンストラクタに名前と説明を渡す ArgumentとOptionの使い方はほぼ同じ executeメソッドに実行時の処理を実装する
Slide 16
Slide 16 text
デモ
Slide 17
Slide 17 text
使ってみた感想 - めちゃくちゃ楽 - 宣言的に書けるので読みやすい - helpを自動で設定してくれるのが良い - MPP対応なのでいろいろな使い方ができそう - サーバーの起動時のオプションをkotlinx.cliを使って渡すなど - CLIアプリの場合バイナリにできるKotlin/Nativeと相性が良い
Slide 18
Slide 18 text
リンク集 kotlinx.cli https://github.com/Kotlin/kotlinx-cli 今回のサンプルアプリ https://github.com/yt8492/CliSample catをKotlin/Nativeで実装しようとしてるやつ(WIP) https://github.com/yt8492/CatKt