タブレットPC開発入門 C#編 第3回 コマンドラインの取得

このページをDeliciousに追加 このページをはてなブックマークに追加 このページをYahoo!ブックマークに追加

2002年11月1日(金)版

タブレットPC開発入門 C#編 第3回 コマンドラインの取得

デスクトップ、ノートブックから、第3のスタイルへ


■コマンドライン?

 おいおい、いまさらコマンドラインだって? タブレットの時代にコマンドラインはねぇだろと思った方、いやいや今でもコマンドラインの取得は重要なのだ。(理由は次回述べる)

 或いは、コマンドラインって何?なんて思った方もいるかもしれない。コマンドラインとは例えばコマンドプロンプトで


C:\>app.exe readme.txt

 と入力したときの"app.exe readme.txt"がコマンドラインだ。これをアプリケーションで取得して何がユーザーから指示されたのか解析するのである。例えば、app.exeがテキストファイルの内容を表示するプログラムだとしたら、app.exeはコマンドラインをアプリケーション内部で取得して表示すべきファイルが"readme.txt"だと知るのである。ちなみに"app.exe"の".exe"はしばしば省略される。

■また少しコードを書いてみよう

 新たに前回のようなコンソールアプリケーションを作成する。プロジェクト名はなんでも良いが例えば"CommandLine"にしてみよう。すると前回とほとんど同じコードが表示されるはずである。違うのはnamespaceがCommandLineになっていることぐらいである。


using System;

namespace CommandLine
{
///


/// Class1 の概要の説明です。
///

class Class1
{
///
/// アプリケーションのメイン エントリ ポイントです。
///

[STAThread]
static void Main(string[] args)
{
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}

 前回Mainメソッドの解説を少ししたが今回はその後ろも見て欲しい。Mainの後ろには"(string[] args)"と書いてある。これはMainメソッドの引数はstring型の[](配列)変数でその名前は"arg"だよと言っている。プログラムを起動したときここにコマンドラインの文字列が入ってくる。

 それを確かめるためにMainメソッドを以下のように変更してみよう。前回と同じくSystem.Console.WriteLineメソッドを使うが少し横着をする。


static void Main(string[] args)
{
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
Console.WriteLine(args[0]);
}

 ここからが少し前回とは違う。今回はVisual Studio.NETの環境からは実行せず、コマンドプロンプトから起動する。Visual Studio.NETでは「ビルド」→「CommandLineのビルド」メニューを選択しビルドだけ行う。

 ビルドが正常に終了すると"CommandLine\bin\debug"フォルダに"CommandLine.exe"と言う名前のファイルができているはずである。これがビルドの結果作成された実行ファイルである。

■アプリケーションをコマンドプロンプトから実行する

 コマンドプロンプトを開いて"CommandLine\bin\debug"フォルダまで移動し、以下のように入力してみて欲しい。



C:\Projects\CommandLine\bin\debug>CommandLine test

 画面上には以下のように表示されたのではないだろうか。


test

 実行するときの"test"の部分をいろいろ変えて試してみるのも良い。前回の"Hello World"もこのようにコマンドプロンプトから実行すればじっくりとその表示内容を観察できる。(じっくり見てもあまり楽しいものではないが。)

■今回は何をやったのか

 今回はコマンドラインがどのようにアプリケーションに渡されるのかを見た。コマンドラインはアプリケーションが起動されるとき、Mainメソッドのstring型の配列"args"に格納される。上記の例では"test"と言う文字列がargs[0]すなわちargs配列の0番目に格納されてMainメソッドが起動された。ちなみにC#の配列は0から始まる。

 それを前回出てきたWriteLineメソッドでコンソールにそのまま表示しただけだ。string型とは文字列を格納する入れ物のタイプ、配列とは同じ型の集まりを扱いやすいように番号を振ったものと考えれば良い。今回はSystemを省略をしてConsoleから記述したが、これはコードの先頭にある


using System;

 に秘密がある。本来はSystem.Console.WriteLineと書くべきところを、Systemの部分については省略する可能性があるよとコンパイラに教えているのである。

 ではまた次回。



タブレットPC開発入門 C#編 第3回 コマンドラインの取得

Reported by Allergy


Last-modified: Sun, 24 May 2009 23:45:30 JST (4538d)