仕事でKtorを触ることがあったので、基本的な部分のメモを残す目的でこのエントリを作成しました
Ktorプロジェクトの作成
Google検索で出てくる記事を見てみると「Intellij IdeaのプラグインからKtorプロジェクトを作りましょう」という記事を多く見かけます。自分が購入したkotlin入門書も、Intellij Ideaのプラグインを利用したプロジェクト作成方法が記載されていました
が、現在Intellij Idea Community Editionでは、プラグインを利用したKtorプロジェクト作成は行なえません
Intellij Ideaのプラグインは、残念ながらUltimateから利用可能となっているようです。現在、Ktorプロエジェクトは以下の3つの方法で作成出来ます
・Intellij Idea Ultimate Editionのプラグインを利用する
・Ktor Project Generatorで作成する
・手動で依存関係を設定する
今回はGeneratorを利用してプロジェクトを作成してみます
Generatorを利用したプロジェクト
https://start.ktor.io/ にアクセスします
Adjust project settings をクリックすることで、組み込みサーバやパッケージ名など、より詳細な情報を設定できます

Add pluginをクリックすると、導入するプラグインが選択できます。
かなりの数がありますね・・・
(何も選択しなくても、Routingプラグインは自動で導入されるようです)

最後に「Generate project」をクリックすると、設定した内容でダウンロードが始まるため、適当なディレクトリにコピーします
Intellij Idea CAでプロジェクトを開いて実行してみる
ダウンロードしたzipファイルを展開します

Intellij Ideaの起動し、開くを選択します

zipを展開したディレクトリを指定します

プロジェクトを開くと、Gradleの依存関係処理が動きます。
サンプルコードを含む設定でプロジェクトを作成したため、Hello Worldの表示サンプルが含まれていました

ローカルサーバを起動し、Hello Worldを表示する
Intellij IdeaのGradleタスク一覧から「Application > run」を選択します
組み込みTomcatが起動し、「http://0.0.0.0:8080」でアクセスを待ち受ける状態になります


以上
Ktorを触ってみる、という記事でした。特にKtorプロジェクトの作成について、Intellij Ideaのプラグインがエディションによっては利用できなくなっているため、最新情報のキャッチアップは重要だと感じました。
Ktorについては触り始めたばかりでまだなんとも言えませんが、ルーティングを設定し、それに応じた処理を書いていくということで、結構素直な使い方ができそうな気がします。