次の方法で共有


Visual Studio Code で F# を始める

Ionide プラグイン を使用して、Visual Studio Code で F# を記述して、IntelliSense とコード リファクタリングを使用して、優れたクロスプラットフォームの軽量統合開発環境 (IDE) エクスペリエンスを実現できます。 プラグインの詳細については、Ionide.io を参照してください。

手記

開始する前に、F# と Ionide プラグインの両方がインストールされていることを確認してください。

Ionide を使用して最初のプロジェクトを作成する

新しい F# プロジェクトを作成するには、コマンド ラインを開き、.NET CLI を使用して新しいプロジェクトを作成します。

dotnet new console -lang "F#" -o FirstIonideProject

完了したら、プロジェクトにディレクトリを変更し、Visual Studio Code を開きます。

cd FirstIonideProject
code .

Visual Studio Code でプロジェクトが読み込まれると、ウィンドウの左側に F# ソリューション エクスプローラー ウィンドウが開きます。 つまり、Ionide は、先ほど作成したプロジェクトが正常に読み込まれました。 この時点より前にエディターでコードを記述できますが、これが発生すると、すべてが読み込みが完了します。

最初のスクリプトを記述する

.NET Core スクリプトを使用するように Visual Studio Code を構成したら、Visual Studio Code のエクスプローラー ビューに移動し、新しいファイルを作成します。 名前を MyFirstScript.fsxと付けてください。

次に、次のコードを追加します。

let toPigLatin (word: string) =
    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"

この関数は、単語を Pig Latinの形式に変換します。 次の手順では、F# Interactive (FSI) を使用して評価します。

関数全体を強調表示します (長い 11 行にする必要があります)。 強調表示されたら、Alt キーを押しながら Enterキーを押します。 画面の下部にターミナル ウィンドウがポップアップ表示され、次のようになります。

Ionide を使用した F# 対話型出力の例

これにより、次の 3 つのことが行われます。

  1. FSI プロセスが開始されました。
  2. 強調表示したコードが FSI プロセスに送信されました。
  3. FSI プロセスは、送信したコードを評価しました。

送信したものは 関数であるため、FSI でその関数を呼び出すことができます。 対話型ウィンドウで、次のように入力します。

toPigLatin "banana";;

次の結果が表示されます。

val it: string = "ananabay"

では、最初の文字として母音を使用してみましょう。 次のように入力します。

toPigLatin "apple";;

次の結果が表示されます。

val it: string = "appleyay"

関数は期待どおりに動作しているように見えます。 おめでとうございます!Visual Studio Code で最初の F# 関数を記述し、FSI で評価しましたね。

手記

ご注意のように、FSI の行は ;;で終了します。 これは、FSI で複数行を入力できるためです。 最後の ;; により、コードがいつ完了するかを FSI に知らせます。

コードの説明

コードが実際に何を行っているかがわからない場合は、次の手順を実行します。

ご覧のように、toPigLatin は単語を入力として受け取り、その単語の Pig-Latin 表現に変換する関数です。 この規則は次のとおりです。

単語の最初の文字が母音で始まる場合は、単語の末尾に "yay" を追加します。 母音で始まらない場合は、その最初の文字を単語の末尾に移動し、"ay" を追加します。

FSI で次のことに気付いたかもしれません。

val toPigLatin: word: string -> string

これは、toPigLatin が入力として string を受け取り(wordと呼ばれます)、別の stringを返す関数であることを示しています。 これは、関数の 型シグネチャと呼ばれ、F# コードを理解するための重要な F# の基本的な部分です。 また、Visual Studio Code で関数の上にマウス ポインターを置くと、このことにも気付きます。

関数の本体では、次の 2 つの異なる部分があります。

  1. isVowelと呼ばれる内部関数。特定の文字 (c) が母音であるかどうかを判断します。この関数は、指定されたパターンの 1 つに一致するかどうかを、パターン マッチングを使用して確認します。

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. 最初の文字が母音であるかどうかを確認し、最初の文字が母音であったかどうかに基づいて入力文字から戻り値を構築する if..then..else 式。

    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"
    

toPigLatin の流れは次のとおりです。

入力単語の最初の文字が母音かどうかを確認します。 その場合は、単語の末尾に "yay" を付けます。 それ以外の場合は、その最初の文字を単語の末尾に移動し、それに "ay" を追加します。

これに関する最後の点が 1 つあります。F# では、関数から返す明示的な命令はありません。 これは、F# が式ベースであり、関数の本体で最後に評価された式によって、その関数の戻り値が決定されるためです。 if..then..else 自体が式であるため、then ブロックの本体または else ブロックの本体の評価によって、toPigLatin 関数によって返される値が決まります。

コンソール アプリを Pig Latin ジェネレーターに変換する

この記事の前のセクションでは、F# コードを記述する際の一般的な最初の手順を示しました。初期関数を記述し、FSI を使用して対話形式で実行します。 これは REPL 駆動開発と呼ばれ、REPL は "読み取りEvaluate-Print ループ" を表します。 機能を試すには、何かが機能するまでの優れた方法です。

REPL 駆動型開発の次の手順は、作業コードを F# 実装ファイルに移動することです。 その後、F# コンパイラによって、実行できるアセンブリにコンパイルできます。

まず、.NET CLI で前に作成した Program.fs ファイルを開きます。 一部のコードが既に存在していることがわかります。

次に、PigLatin という新しい module を作成し、前に作成した toPigLatin 関数を次のようにコピーします。

module PigLatin =
    let toPigLatin (word: string) =
        let isVowel (c: char) =
            match c with
            | 'a' | 'e' | 'i' | 'o' | 'u'
            | 'A' | 'E' | 'I' | 'O' | 'U' -> true
            |_ -> false
        
        if isVowel word[0] then
            word + "yay"
        else
            word[1..] + string word[0] + "ay"

このモジュールは、main 関数の上と open System 宣言の下にある必要があります。 F# では宣言の順序が重要であるため、ファイルで関数を呼び出す前に関数を定義する必要があります。

次に、main 関数で、引数に対して Pig Latin ジェネレーター関数を呼び出します。

[<EntryPoint>]
let main args =
    for arg in args do
        let newArg = PigLatin.toPigLatin arg
        printfn "%s in Pig Latin is: %s" arg newArg

    0

これで、コマンド ラインからコンソール アプリを実行できます。

dotnet run apple banana

スクリプト ファイルと同じ結果が出力されますが、今回は実行中のプログラムとして出力されます。

Ionide のトラブルシューティング

発生する可能性がある特定の問題をトラブルシューティングする方法をいくつか次に示します。

  1. Ionide のコード編集機能を取得するには、F# ファイルをディスクに保存し、Visual Studio Code ワークスペースで開いているフォルダー内に保存する必要があります。
  2. Visual Studio Code を開いてシステムに変更を加えた場合、または Ionide の前提条件をインストールした場合は、Visual Studio Code を再起動します。
  3. プロジェクト ディレクトリに無効な文字がある場合は、Ionide が機能しない可能性があります。 この場合は、プロジェクト ディレクトリの名前を変更します。
  4. Ionide コマンドが動作していない場合は、Visual Studio Code キー バインド 確認して、誤ってオーバーライドしているかどうかを確認します。
  5. お使いのマシンで Ionide が壊れていて、上記のどの方法でも問題が解決していない場合は、コンピューター上の ionide-fsharp ディレクトリを削除して、プラグイン スイートを再インストールしてみてください。
  6. プロジェクトの読み込みに失敗した場合 (F# ソリューション エクスプローラーに表示されます)、そのプロジェクトを右クリックし、[詳細 表示 をクリックして診断情報を取得します。

Ionide は、F# コミュニティのメンバーによって構築および管理されているオープンソース プロジェクトです。 問題を報告し、ionide-vscode-fsharp GitHub リポジトリで自由に投稿してください。

Ionide Gitter チャネルの Ionide 開発者と F# コミュニティからさらに支援を求めることもできます。

次の手順

F#とその言語機能について詳しく知るには、「F#のツアー 」をご覧ください。