本サイトからスピンオフした姉妹サイトです。Coreの基礎から開発実践までが学べる入門連載。Codeを使って開発するフローを説明する。2.0がリリースされた。バージョンアップしたNuGetライブラリが利用可能になっている。2.0を前提に説明をしていく予定だ。Coreを今から始める方は最新版で試していただきたい。2.0になって特に操作が変わった点については適宜説明をしていく。instructions」(英語)を参照してインストールしてほしい。previewバージョンをインストールしていた場合は、あらかじめアンインストールもしくはディレクトリごと削除しておいてほしい。1.xとの共存は可能であるが、その場合は環境変数PATHに設定しているディレクトリに存在するdotnet実行ファイルは2.0のものだけを含めるようにする必要がある。2.0をインストールする前に、以前のバージョンをアンインストールするか、PATH環境変数が示すディレクトリから削除するようにしてほしい。CentOSの場合であれば、/usr/loca/bin/dotnetのリンクを削除すればPATH環境変数から削除でき、/usr/dotnet以下のディレクトリを削除すればアンインストールできる。インストール時に圧縮ファイルを展開する方式を採るCentOSやDebian、さらには2.0でサポートされ同様のインストール方式であるFedoraやSUSEでは、1.0や1.1で利用していた/usr/dotnetというroot権限が必要なディレクトリではなく、~/dotnetといったユーザー権限でアクセス可能なディレクトリにインストールするように指示がされているので展開先には注意してほしい。プロジェクトの作成と実行さっそくプロジェクトを作成してみよう。CLIでプロジェクトを作成することもできる。newと実行してみよう。newコマンドだけだとコマンドの説明が表示されるようになった。プロジェクトだけではなくさまざまなファイルも作成でき、まとめてテンプレートと呼んでいる。独自のテンプレートを追加することもできる。ApplicationをC#言語でプロジェクト作成してみよう。consoleコマンドの出力結果ここで作成されたプロジェクトの中身(<プロジェクト名>.csprojファイルとProgram.csファイル)を確認してみよう(リスト2)。バージョンにより多少異なる可能性はあるが、基本的には変わらないはずである。FrameworkのころからあったXML形式のプロジェクトファイルである。似たような形式ではあるが、簡略化されたフォーマットになっている。<Project>要素のSdk属性に指定したタイプのプロジェクト設定を参照している。<PropertyGroup>要素の子要素にプロジェクトの設定を指定する。<OutputType>にExeを指定することで、そのプロジェクトが起動可能なアプリケーションであることを示している。CoreのFrameworkバージョンを指定している。これらについては次回以降テストプロジェクトやクラスライブラリプロジェクトという種類のプロジェクトを作成する際に説明する予定である。consoleコマンドで出力されたProgram.csファイルの中身Program.csファイル(リスト3)は、エントリポイントとなるC#のソースコードファイルである。voidでstring[]を引数(=中身はコマンドライン引数)にとるMainメソッドが、最初に実行されるエントリポイントとなる。World!とコンソールに表示して終了するプログラムとなっている。最速再入門【7.0対応】」を参照してほしい。それでは実行してみよう。2.0以降では図2の最後に表示されているように暗黙的にrestoreが実行されている。2.0の新機能である。restoreコマンドを明示的に実行することもできる。runコマンドでプロジェクトを実行しよう(図3)。runコマンドでプログラムが実行されるまでを簡単に説明しよう。大きく分けて、restore(リストア)・build(ビルド)・run(実行)という3つの処理を行っている。restore処理では、プログラムの実行に必要なライブラリのダウンロードと配置を行っている。SDKインストール時にローカルにインストールされているライブラリはファイルコピーを行い、インターネットから(設定によりイントラネットやファイルシステムから)追加で必要な外部ライブラリをダウンロードし配置している。インターネットで公開されているライブラリを追加する方法は最後の節で説明する。restore処理が完了した後、プロジェクトのbuildが実行される。.csprojファイルに記述されている内容と、runコマンドに渡したオプションを基にソースコードがビルドされて.dllファイルとして配置される。最後に、配置された.dllファイルをdotnetコマンドでrunすることでプログラムが実行される。runコマンドはデフォルトでカレントディレクトリのプロジェクトファイルを参照してビルドする。--projectオプションでプロジェクトファイルを指定することもできる。runコマンドによるプログラムの実行は、高速化のため、ライブラリをキャッシュして利用することがある。runコマンドでのアプリの実行は推奨されない。次回の記事で運用環境向けのバイナリの作成と実行方法を説明する。CLIで扱うことができる。CLIを使って先ほどのプロジェクトファイルの1つ上の階層のディレクトリにソリューションファイルを作成し、プロジェクトをソリューションに追加してみよう。newコマンドのテンプレートとして提供されている。slnコマンドでソリューションファイルを追加する。図4はコマンド実行時のを出力結果だ。これにより<同階層のディレクトリ名>.slnファイルが追加される。次に、このソリューションに先ほど作成したプロジェクトを追加してみよう。slnコマンドで行える。slnコマンドの出力結果ソリューションは関連性の強い複数のプロジェクトをまとめて管理するときに有用だ。1つのプロジェクトが別のプロジェクトを参照することもできるが、次回以降に説明を行う予定だ。Codeでの開発とデバッグここまで、プロジェクトとソリューションの基本的な操作をターミナルで行った。Codeで開いて、コードの編集とデバッグを行ってみよう。Codeは連載1回目の記事を基にインストールおよびC#拡張のインストールをしているものとする。Codeが該当のディレクトリを開いて起動する。Codeを起動しておいて、(メニューバーの)[ファイル]-[フォルダーを開く]メニューでプロジェクトのディレクトリを指定することもできる。Codeで開くと、アセットの追加とNuGetライブラリのrestoreを行うかどうかの確認メッセージが表示されることがある(図6)。restoreに関してはすでに実行済みの場合は表示されない。両方ともOKをクリックしてダウンロードを許可しよう。Codeで開いて、アセットの追加とNuGetライブラリのrestoreの確認ダイアログが表示されたところアセットはプロジェクトのディレクトリに.vscodeというディレクトリが作成され、その中に.jsonファイルとして作成される(図7)。アセットファイルが.vscodeディレクトリ内に作成されている様子さて、試しに適当にコーディングをしてみてほしい。リスト2のコードをコピー&ペーストではなく、Mainメソッドの中に手で入力してみてほしい。サンプルコード1入力途中で図8のようにIntelliSenseが表示されるはずだ。IntelliSenseは、文字列入力のみである程度は表示されるが、明示的に表示したい場合は、Ctrl+スペースキーで表示できる。IntelliSenseが表示されている様子リスト4のコードが入力できたら実行してみよう。左側のデバッグ(虫の上に禁止マーク)アイコンをクリックし、左のペインの上にある緑色の三角矢印でデバッグ開始できる(図9)。ショートカットキーはF5だ。コンソール]というウィンドウで扱われる。デバッグ実行した結果このようにデバッグ起動が完了した。ブレークポイントを貼ることもできる。図10のようにソースコードエディター上の行番号の左のスペースをクリックすると赤い丸が表示され、プログラムがここに到達すると一時的に停止されるようになる。赤い丸が表示されている状態で再度デバッグ実行を開始してみよう。図10のようにプログラムの実行が一時停止し、ローカル変数の値や呼び出し階層が左側のペインで確認できるようになった。Studioに近い感覚で利用できるようになっている。SDKの中のCoreFXという基本クラスライブラリが提供している。それ以外のライブラリを利用した処理を書きたい場合は、そのライブラリをプロジェクトに参照として追加する必要がある。参照として追加する場合、開発しているプロジェクトが対象とする.NETのフレームワークに応じて、適したクラスライブラリを参照する必要がある。2.0のプロジェクトから参照してもうまく動かない。そのようなフレームワークごとの対応関係をうまく処理しつつ、インターネット上に第三者が提供しているライブラリをまとめてホスティングする仕組みとして、NuGetというエコシステムが提供されている。Coreのプロジェクトを作成する場合は、マイクロソフトがnuget.orgで提供しているライブラリを追加で参照することになる。アカウント登録すれば、誰でもnuget.orgにライブラリを登録し、任意の人に使ってもらえるようになる。社内や特定の開発者のみに公開したいライブラリを、イントラネットで提供したり、認証付きで提供したりすることも可能である。今回はnuget.orgからライブラリを追加する方法を説明し、次回以降でnuget.orgへのライブラリの追加を紹介する予定である。Coreでも参照されていて、.NETでJSONを扱うライブラリとして知名度も高いJson.NETを参照に追加してみよう。nuget.orgのトップページで「Newtonsoft.Json」や「Json.NET」、あるいは単に「json」で検索すると、比較的最初の方に表示されるはずである。ページを開くと図11のような画面が表示されるはずだ。CLI用のコマンドライン表示しよう。nuget.orgのJson.NETライブラリの画面ライブラリを追加するには表示されたコマンド(リスト5)を、追加したいプロジェクトがカレントディレクトリの状態で実行する。表示されたコマンドの--package-directoryオプションを付加して、そこで追加したいプロジェクトのディレクトリを指定する。図11に表示されているバージョン10.0.3は執筆時点の最新版であるが、より新しいバージョンが公開されている場合は新しいバージョンを指定してもサンプルコードの実行には問題ない。10.0.3ライブラリの追加は.csprojファイルの編集で行える。リスト5のコードを実行すると、.csprojにリスト6のように<PackageReference>というXML要素が追加されているはずである。リスト5のコードを実行せずに直接.csprojファイルにリスト6の要素を追加してもライブラリの追加は行える。restoreコマンドを実行してほしい。追加できたら、Mainメソッドの中身を次のように修正してみよう。リスト7にはProgram.csファイル全体を載せているが、まずMainメソッドの中身の追加部分を手入力し、JsonConvertまで入力したところで、図11のようにIntelliSenseを表示するとusingの追加が候補として表示される。usingは指定した名前空間に属するクラスを、名前空間を省略して記述できるようにする文法である。new{key1=text}という記述はkey1という名前のプロパティを持つ匿名オブジェクトを生成している。このコードは匿名オブジェクトをJSON形式の文字列に変換するコードを記述していることになる。サンプルコード2ここまで記述できたら、再度デバッグ実行してみよう。コンソール]に出力されるはずである(図12)。Codeで編集、デバッグし、nuget.orgからライブラリを追加するという流れを説明した。次回は今回作成したアプリを配置できる形式にビルドし、実際に配置して実行する流れを説明する。CoreがWindows以外でも動く特徴を生かすため、Linuxマシン上に配置し、systemdから実行する方法や、cronからスケジュール実行する方法についても簡単に説明する予定である。※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。INDEX]を参照してください。Coreの基礎から開発実践までが学べる入門連載スタート。Coreの歴史/立ち位置/特徴を紹介し、開発環境の準備方法を説明する。Hat提供版には違いがある。1.xと2.x以降での違いを示す。Coreの利用についても言及する。Coreの基礎から開発実践までが学べる入門連載。Codeを使って開発するフローを説明する。Coreの基礎から開発実践までが学べる入門連載。4回目は作成したコンソールアプリのプロジェクトをビルドして配置する手順を説明する。Coreの基礎から開発実践までが学べる入門連載。Standardなクラスライブラリなプロジェクトを作成し、別のコンソールプロジェクトから参照する方法を説明する。機械学習エンジニアを目指す人~初中級者のための技術情報サイトです。「機械学習&AI」「クラウド&ビッグデータ」「IoTデバイス」のネット記事情報を共有中。開発者のためのSlackチーム、作りました:「機械学習&AI」「クラウド&ビッグデータ」「IoTデバイス」のネット記事情報を共有中。2020最適なビューへの切り替えを推奨します:スマートフォン用表示に。