Skip to content

新しいKtorプロジェクトの作成、オープン、実行

新しいKtorプロジェクトの作成、オープン、実行

このチュートリアルでは、最初のKtorサーバープロジェクトを作成、オープン、および実行する方法を学びます。プロジェクトが起動して実行されたら、一連のタスクを完了してKtorに慣れることができます。

これは、Ktorを使用したサーバーアプリケーション構築を開始するための一連のチュートリアルの最初のステップです。各チュートリアルは独立して行うことができますが、以下の推奨される順序に従うことを強くお勧めします。

  1. 新しいKtorプロジェクトの作成、オープン、実行。
  2. リクエストの処理とレスポンスの生成
    タスク管理アプリケーションを構築することで、Ktorを使用したKotlinでのルーティング、リクエスト処理、およびパラメータの基本を学びます。
  3. JSONを生成するRESTful APIの作成
    JSONファイルを生成するRESTful APIの例を特徴とする、KotlinとKtorを使用したバックエンドサービスの構築方法を学びます。
  4. Thymeleafテンプレートを使用したウェブサイトの作成
    KtorとThymeleafテンプレートを使用してKotlinでウェブサイトを構築する方法を学びます。
  5. WebSocketアプリケーションの作成
    WebSocketのパワーを活用してコンテンツを送信および受信する方法を学びます。
  6. Exposedを使用したデータベースの統合
    Exposed SQLライブラリを使用して、Ktorサービスをデータベースリポジトリに接続するプロセスを学びます。

新しいKtorプロジェクトの作成

新しいKtorプロジェクトを作成する最も速い方法の1つは、ウェブベースのKtorプロジェクトジェネレーターを使用することです。

あるいは、IntelliJ IDEA Ultimate専用のKtorプラグインまたはKtor CLIツールを使用してプロジェクトを生成することもできます。

Ktorプロジェクトジェネレーターの使用

Ktorプロジェクトジェネレーターで新しいプロジェクトを作成するには、以下の手順に従ってください。

  1. Ktorプロジェクトジェネレーターにアクセスします。

  2. Project artifactフィールドに、プロジェクトアーティファクトの名前として com.example.ktor-sample と入力します。 Project Artifact名にcom.example.ktor-sampleを指定したKtorプロジェクトジェネレーター

  3. Configureをクリックして、設定ドロップダウンメニューを開きます。 Ktorプロジェクト設定の展開ビュー

    以下の設定が利用可能です:

    • Build System: 希望する

      ビルドシステム
      既存のGradle/MavenプロジェクトにKtorサーバーの依存関係を追加する方法を学びます。
      を選択します。 これはGradle KotlinGradle GroovyMaven、またはAmperにすることができます。

    • Engine: サーバーの実行に使用される

      エンジン
      ネットワークリクエストを処理するエンジンについて学びます。
      を選択します。

    • Configuration: サーバーパラメータを

      YAMLまたはHOCONファイルで指定
      構成ファイルでさまざまなサーバーパラメータを構成する方法を学びます。
      するか、
      コード内で指定
      コード内でさまざまなサーバーパラメータを構成する方法を学びます。
      するかを選択します。

      現在、MavenベースのKtorプロジェクトではYAML構成はサポートされていません。

    このチュートリアルでは、これらの設定はデフォルト値のままで構いません。

  4. Doneをクリックして構成を保存し、メニューを閉じます。

  5. その下には、プロジェクトに追加できる一連の

    プラグイン
    プラグインは、シリアル化、コンテンツエンコーディング、圧縮などの一般的な機能を提供します。
    が表示されます。プラグインは、認証、シリアル化とコンテンツエンコーディング、圧縮、Cookieのサポートなど、Ktorアプリケーションで一般的な機能を提供する構成要素です。

    このチュートリアルでは、現段階でプラグインを追加する必要はありません。

  6. Downloadボタンをクリックして、Ktorプロジェクトを生成してダウンロードします。 Ktorプロジェクトジェネレーターのダウンロードボタン

  7. ダウンロードが自動的に開始されます。

新しいプロジェクトが生成されたので、続けてKtorプロジェクトの展開と実行に進んでください。

IntelliJ IDEA Ultimate用のKtorプラグインの使用

このセクションでは、IntelliJ IDEA Ultimate用のKtorプラグインを使用したプロジェクトのセットアップについて説明します。

新しいKtorプロジェクトを作成するには、IntelliJ IDEAを開き、以下の手順に従ってください。

  1. ウェルカム画面で、New Projectをクリックします。

    または、メインメニューからFile | New | Projectを選択します。

  2. New Projectウィザードで、左側のリストからKtorを選択します。

  3. 右側のペインで、以下の設定を指定できます。

    Ktorプロジェクト設定
    • Name:プロジェクト名を指定します。プロジェクトの名前としてktor-sampleと入力します。

    • Location:プロジェクトのディレクトリを指定します。

    • Website:パッケージ名の生成に使用されるドメインを指定します。

    • Artifact:このフィールドには生成されたアーティファクト名が表示されます。

    • Engine:サーバーの実行に使用される

      エンジン
      ネットワークリクエストを処理するエンジンについて学びます。
      を選択します。

    • Include samples:プラグインのサンプルコードを追加するには、このオプションを有効にしたままにします。

  4. Advanced Settingsをクリックして、追加設定メニューを展開します。

    Ktorプロジェクト詳細設定

    以下の設定が利用可能です:

    • Build System: 希望する

      ビルドシステム
      既存のGradle/MavenプロジェクトにKtorサーバーの依存関係を追加する方法を学びます。
      を選択します。 これはGradle KotlinGradle GroovyMaven、またはAmperにすることができます。

    • Ktor version: 必要なKtorバージョンを選択します。

    • Configuration: サーバーパラメータを

      YAMLまたはHOCONファイルで指定
      構成ファイルでさまざまなサーバーパラメータを構成する方法を学びます。
      するか、
      コード内で指定
      コード内でさまざまなサーバーパラメータを構成する方法を学びます。
      するかを選択します。

      現在、Mavenベース의 KtorプロジェクトではYAML構成はサポートされていません。

    このチュートリアルでは、これらの設定はデフォルト値のままで構いません。

  5. Nextをクリックして次のページに進みます。

    Ktorプラグイン

    このページでは、一連の

    プラグイン
    プラグインは、シリアル化、コンテンツエンコーディング、圧縮などの一般的な機能を提供します。
    (認証、シリアル化とコンテンツエンコーディング、圧縮、Cookieのサポートなど、Ktorアプリケーションの一般的な機能を提供する構成要素)を選択できます。

    このチュートリアルでは、現段階でプラグインを追加する必要はありません。

  6. Createをクリックし、IntelliJ IDEAがプロジェクトを生成して依存関係をインストールするまで待ちます。

新しいプロジェクトを作成したので、続けてアプリケーションのオープン、探索、および実行方法を学習してください。

Ktor CLIツールの使用

このセクションでは、Ktor CLIツールを使用したプロジェクトのセットアップについて説明します。

新しいKtorプロジェクトを作成するには、お好みのターミナルを開き、以下の手順に従ってください。

  1. 以下のいずれかのコマンドを使用して、Ktor CLIツールをインストールします。
    console
    console
  2. 対話モードで新しいプロジェクトを生成するには、次のコマンドを使用します。
    console
  3. プロジェクト名としてktor-sampleと入力します。 対話モードでのKtor CLIツールの使用

    (オプション)プロジェクト名の下のLocationパスを編集することで、プロジェクトが保存される場所を変更することもできます。

  4. Enterを押して続行します。
  5. 次のステップでは、プロジェクトに
    プラグイン
    プラグインは、シリアル化、コンテンツエンコーディング、圧縮などの一般的な機能を提供します。
    を検索して追加できます。プラグインは、認証、シリアル化とコンテンツエンコーディング、圧縮、Cookieのサポートなど、Ktorアプリケーションで一般的な機能を提供する構成要素です。 Ktor CLIツールを使用したプロジェクトへのプラグインの追加

    このチュートリアルでは、現段階でプラグインを追加する必要はありません。

  6. CTRL+Gを押してプロジェクトを生成します。

    あるいは、CREATE PROJECT (CTRL+G)を選択してEnterを押すことでもプロジェクトを生成できます。

Ktorプロジェクトの展開と実行

このセクションでは、コマンドラインからプロジェクトを展開、ビルド、および実行する方法を学びます。以下の手順は、次のような状況を想定しています。

  1. ktor-sampleという名前のGradleプロジェクトを作成し、ダウンロードした。
  2. このプロジェクトは、ホームディレクトリのmyprojectsというフォルダに配置されている。

必要に応じて、自身のセットアップに合わせて名前とパスを変更してください。

お好みのコマンドラインツールを開き、以下の手順に従います。

  1. ターミナルウィンドウで、プロジェクトをダウンロードしたフォルダに移動します。

    console
  2. ZIPアーカイブを同名のフォルダに展開します。

    console
    console

    ディレクトリには、ZIPアーカイブと展開されたフォルダが含まれるようになります。

  3. ディレクトリから、新しく作成されたフォルダに移動します。

    console
  4. macOSおよびUNIXシステムでは、システムが実行可能なコマンドとして認識できるように、Gradleヘルパースクリプトを実行可能にする必要があります。これを行うには、chmodコマンドを使用します。

    console
  5. プロジェクトをビルドするには、次のコマンドを使用します。

    console
    console

    ビルドが成功したら、次のステップに進んでプロジェクトを実行します。

  6. プロジェクトを実行するには、次のコマンドを使用します。

    console
    console
  7. プロジェクトが実行されていることを確認するには、ターミナル出力に表示されているURL(http://0.0.0.0:8080)をブラウザで開きます。 ブラウザに「Hello World!」というメッセージが表示されるはずです。

    生成されたKtorプロジェクトの出力

おめでとうございます!Ktorプロジェクトの起動に成功しました。

NOTE

基盤となるプロセスがKtorアプリケーションの実行でビジー状態であるため、コマンドラインが応答しなくなることに注意してください。CTRL+Cを押すとアプリケーションを終了できます。

IntelliJ IDEAでのKtorプロジェクトのオープン、探索、および実行

プロジェクトをオープンする

IntelliJ IDEAがインストールされている場合は、コマンドラインから簡単にプロジェクトを開くことができます。

プロジェクトフォルダ内にいることを確認し、ideaコマンドに続けて、現在のフォルダを表すピリオドを入力します。

Bash

または、手動でプロジェクトを開くには、IntelliJ IDEAを起動します。

ウェルカム画面が開いた場合は、Openをクリックします。そうでない場合は、メインメニューのFile | Openに移動し、ktor-sampleフォルダを選択して開きます。

TIP

プロジェクトの管理に関する詳細は、IntelliJ IDEAのドキュメントを参照してください。

プロジェクトを探索する

プロジェクトを開くと、次のような構造が表示されます。

IDEでの生成されたKtorプロジェクトビュー

完全なレイアウトを表示するには、各フォルダの横にある展開矢印をクリックして、Projectビューのフォルダを展開します。

アプリケーションのソースコードは、src/main/kotlinの下にあります。デフォルトで、Application.ktRouting.ktという2つのファイルが作成されます。

Ktorプロジェクトのsrcフォルダ構造

プロジェクト名はsettings.gradle.ktsファイルで構成されています。

kotlin

構成ファイルやその他の種類のコンテンツは、src/main/resourcesフォルダ内に配置されます。

Ktorプロジェクトのresourcesフォルダ構造

プロジェクトを実行する

    IntelliJ IDEA内からプロジェクトを実行するには:

  1. 右側のサイドバーにあるGradleアイコン(IntelliJ IDEA Gradleアイコン)をクリックして、Gradleツールウィンドウを開きます。

  2. このツールウィンドウ内で、Tasks | applicationに移動し、runタスクをダブルクリックします。

    IntelliJ IDEAのGradleタブ
  3. KtorアプリケーションがIDEの下部にある実行(Run)ツールウィンドウで起動します。

    ターミナルで実行中のプロジェクト

    以前にコマンドラインに表示されていたものと同じメッセージが、Runツールウィンドウに表示されます。

  4. プロジェクトが実行されていることを確認するには、指定されたURL(http://0.0.0.0:8080)をブラウザで開きます。

    画面に「Hello World!」というメッセージが再び表示されるはずです。

    ブラウザ画面のHello World

Runツールウィンドウを介してアプリケーションを管理できます。

  1. アプリケーションを終了するには、停止ボタン(IntelliJ IDEA終了アイコン)をクリックします。
  2. プロセスを再起動するには、再実行ボタン(IntelliJ IDEA再実行アイコン)をクリックします。

これらのオプションの詳細については、IntelliJ IDEA実行ツールウィンドウのドキュメントを参照してください。

試してみるべき追加タスク

試してみることをお勧めする追加タスクをいくつか紹介します:

  1. デフォルトポートの変更
  2. 新しいHTTPエンドポイントの追加
  3. 静的コンテンツの構成
  4. 統合テストの作成
  5. エラーハンドラーの登録

これらのタスクは互いに依存していませんが、徐々に難易度が上がっていきます。宣言された順序で試すことが、段階的に学習するための最も簡単な方法です。簡単にするため、また重複を避けるため、以下の説明はタスクを順番に試していることを前提としています。

コーディングが必要な箇所については、コードと対応するインポートの両方を指定しています。IDEがこれらのインポートを自動的に追加してくれる場合もあります。

デフォルトポートの変更

構成ファイルでのポート変更

構成を外部のYAMLまたはHOCONファイルに保存することを選択した場合、Projectビューでsrc/main/resourcesフォルダに移動し、以下の手順に従います。

  1. 構成ファイル(application.yamlまたはapplication.conf)を開きます。次のようになっているはずです:
    yaml
    generic
  2. ファイル内のportの値を、9292など、任意の見慣れない番号に変更します。
  3. 再実行ボタン(IntelliJ IDEA再実行ボタンアイコン)をクリックして、アプリケーションを再起動します。

  4. アプリケーションが新しいポート番号で実行されていることを確認するには、新しいURL(http://0.0.0.0:9292)をブラウザで開くか、IntelliJ IDEAで新しいHTTPリクエストファイルを作成します。

    IntelliJ IDEAのHTTPリクエストファイルを使用したポート変更のテスト

コード内でのポート変更

新しいKtorプロジェクトを作成する際、構成をコード内に保存するか、外部のYAMLまたはHOCONファイルに保存するかを選択できます。

構成をコード内に保存することを選択した場合、Projectビューでsrc/main/kotlinフォルダに移動し、以下の手順に従います。

  1. main.ktファイルを開きます。次のようなコードが見つかるはずです。

    kotlin
  2. embeddedServer()関数内で、portパラメータを9292など、任意の別の番号に変更します。

    kotlin
  3. 再実行ボタン(IntelliJ IDEA再実行ボタンアイコン)をクリックして、アプリケーションを再起動します。

  4. アプリケーションが新しいポート番号で実行されていることを確認するには、新しいURL(http://0.0.0.0:9292)をブラウザで開くか、IntelliJ IDEAで新しいHTTPリクエストファイルを作成します。

    IntelliJ IDEAのHTTPリクエストファイルを使用したポート変更のテスト

新しいHTTPエンドポイントの追加

Projectツールウィンドウで、src/main/kotlinフォルダに移動し、以下の手順に従います。

  1. Routing.ktファイルを開きます。次のようなコードが表示されるはずです:

    Kotlin
  2. 新しいエンドポイントを作成するには、次のように追加のルートを挿入します。

    kotlin

    NOTE

    /test1というURLは、好きなものに変更できることに注意してください。
  3. IDEは自動的にContentTypeのインポートを追加します。

    kotlin
  4. 再実行ボタン(IntelliJ IDEA再実行ボタンアイコン)をクリックして、アプリケーションを再起動します。

  5. ブラウザで新しいURL(http://0.0.0.0:9292/test1)をリクエストします。ポート番号は、デフォルトポートの変更タスクを完了したかどうかによって異なります。以下のような出力が表示されるはずです。

    ブラウザ画面にHello from Ktorが表示されている様子

    HTTPリクエストファイルを作成した場合は、そこでも新しいエンドポイントを確認できます。

    http

    NOTE

    異なるリクエストを区切るには、3つのハッシュ(###)を含む行が必要であることに注意してください。

静的コンテンツの構成

Projectツールウィンドウで、src/main/kotlinフォルダに移動し、以下の手順に従います。

  1. Routing.ktファイルを開き、ルーティングセクションに次のルートを追加します。

    kotlin

    この行の意味は次のとおりです:

    1. staticResources()を呼び出すことで、アプリケーションがHTMLやJavaScriptファイルなどの標準的なウェブサイトコンテンツを提供できるようになります。このコンテンツはブラウザ内で実行できますが、サーバーの観点からは静的であると見なされます。
    2. URL /contentは、このコンテンツを取得するために使用されるパスを指定します。
    3. パス mycontentは、静的コンテンツを配置するフォルダの名前です。Ktorは、このフォルダをresourcesディレクトリ内で探します。
  2. IDEが自動的に追加しない場合は、次のインポートを追加してください。

    kotlin
  3. Projectツールウィンドウで、src/main/resourcesフォルダを右クリックし、New | Directoryを選択します。

    または、src/main/resourcesフォルダを選択し、⌘Cmd+N(macOS)またはCtrl+N(Windows/Linux)を押し、Directoryをクリックします。

  4. 新しいディレクトリにmycontentという名前を付け、↩Enterを押します。

  5. 新しく作成したフォルダを右クリックし、New | Fileをクリックします。

  6. 新しいファイルにsample.htmlという名前を付け、↩Enterを押します。

  7. 新しく作成したファイルページに、有効なHTMLを入力します(例):

    html
  8. 再実行ボタン(IntelliJ IDEA再実行ボタンアイコン)をクリックして、アプリケーションを再起動します。

  9. ブラウザでhttp://0.0.0.0:9292/content/sample.htmlを開くと、サンプルページの内容が表示されるはずです。

    ブラウザでの静的ページの出力

統合テストの作成

Ktorは

統合テストの作成
特別なテストエンジンを使用してサーバーアプリケーションをテストする方法を学びます。
をサポートしており、生成されたプロジェクトにはこの機能がバンドルされています。

これを利用するには、以下の手順に従ってください。

  1. src/test/kotlinフォルダに移動します。

  2. ServerTest.ktファイルを開きます。次のコードが表示されるはずです:

    kotlin

    testApplication()関数は、Ktorの新しいインスタンスを作成します。このインスタンスは、Nettyなどのサーバーではなく、テスト環境内で実行されます。

    次に、configure()関数を使用して、embeddedServer()から呼び出されるのと同じセットアップを呼び出すことができます。

    最後に、組み込みのclientオブジェクトとJUnitアサーションを使用して、サンプルリクエストを送信し、レスポンスを確認できます。

IntelliJ IDEAでテストを実行する標準的な方法のいずれかでテストを実行できます。Ktorの新しいインスタンスを実行しているため、テストの成否はアプリケーションが0.0.0.0で実行されているかどうかには依存しないことに注意してください。

新しいHTTPエンドポイントの追加に成功した場合は、この追加のテストを追加してください:

kotlin

以下の追加のインポートを追加します:

Kotlin

エラーハンドラーの登録

StatusPagesプラグイン
%plugin_name%を使用すると、Ktorアプリケーションは、スローされた例外やステータスコードに基づいて、あらゆる失敗状態に適切に応答できるようになります。
を使用して、Ktorアプリケーションのエラーを処理できます。

TIP

このプラグインは、デフォルトではプロジェクトに含まれていません。Ktorプロジェクトジェネレーター、またはIntelliJ IDEAのプロジェクトウィザードでプロジェクトを作成する際に、Pluginsセクションから追加できます。

次のステップでは、プラグインを手動で追加および構成する方法を学びます。これを達成するための4つのステップがあります:

  1. Gradleビルドファイルに新しい依存関係を追加する。
  2. プラグインをインストールし、例外ハンドラーを指定する。
  3. ハンドラーをトリガーするためのサンプルコードを作成する。
  4. サンプルコードを再起動して呼び出す。

    Projectツールウィンドウで、プロジェクトのルートフォルダに移動し、以下の手順に従います。

  1. build.gradle.ktsファイルを開き、次のように新しい依存関係を追加します:

    kotlin
  2. Shift+⌘Cmd+I(macOS)またはCtrl+Shift+O(Windows/Linux)を押して、プロジェクトをリロードします。

  1. Routing.kt.configureRouting()メソッドに移動し、次のコード行を追加します:

    kotlin

    これらの行は、StatusPagesプラグインをインストールし、IllegalStateException型の例外がスローされたときにどのようなアクションを実行するかを指定します。

  2. 以下のインポートを追加します:

    kotlin

通常、レスポンスにはHTTPエラーコードが設定されますが、このタスクの目的上、出力はブラウザに直接表示されます。

  1. .configureRouting()メソッド内にとどまり、次のように追加のルートを追加します:

    kotlin

    これで、URL /error-testを持つエンドポイントが追加されました。このエンドポイントがトリガーされると、ハンドラーで使用されている型の例外がスローされます。

  1. 再実行ボタン(IntelliJ IDEA再実行ボタンアイコン)をクリックして、アプリケーションを再起動します。

  2. ブラウザで、URL http://0.0.0.0:9292/error-testにアクセスします。次のようにエラーメッセージが表示されるはずです:

    `App in illegal state as Too Busy`というメッセージが表示されたブラウザ画面

次のステップ

追加タスクの最後まで到達したなら、Ktorサーバーの構成、Ktorプラグインの統合、および新しいルートの実装について理解できたはずです。しかし、これはほんの始まりに過ぎません。Ktorの基礎的な概念をさらに深く掘り下げるには、このガイドの次のチュートリアルに進んでください。

次は、

タスク管理アプリケーションを作成して、リクエストを処理しレスポンスを生成する方法
タスク管理アプリケーションを構築することで、Ktorを使用したKotlinでのルーティング、リクエスト処理、およびパラメータの基本を学びます。
を学びます。