ぜんぜん知らない開発言語をてっとりばやく覚える方法 C# 編
はじめに
このブログでは Visual C# 2008 Express Edition (無償) を使用した Windows アプリケーションに作り方について説明しています。
Visual C# 2008 Express Edition (無償) の入手方法については この記事 を、プロジェクトのコンパイル方法については この記事を参照してください。
タイトルにあるとおり、今回は未経験の開発言語でとりあえずプログラムを書けるようにするための、てっとりばやい方法について書いてみたいと思います。
コードを書く仕事に携わっていると、仕事の要件や技術の革新、開発製品のディスコン、あるいは趣味嗜好、心境の変化などで新しい開発言語を使用する状況になることがあります。
しかし、開発言語の習得というのは、他人との関係を築くのに似てそう簡単ではありません。
深く理解し、心の底から分かりあえるまでにはそれなりの時間と経験、そして寛容さ(これが難しい)が必要になるのです。
そりゃあまぁ、たしかに出会った瞬間から相思相愛となり、狂おしく求めあう合うような運命的な開発言語に出会うこともあるのやもしれません。あなたがもし若者と呼ばれる輝かしい季節を生きているならなおさらであり、そういった出会いの奇跡に胸を膨らますのもむべなるかな、といったところでしょう。
しかし、私はここであえて言いたい。
夢なんか見るな、現実を見ろっ!! と。
たいていの場合、初めて使う開発言語はまったくの他人のような顔をしているものです。しかも、もしかしたら、その言語仕様はあなたの好みではないのかもしません。
今まで慣れ親しんできた開発言語のように、変数の大文字小文字を間違えて書いても何も言わずに受け入れてくれるような寛容さはなく、コンパイルの度にこちらのミスばかりをヒステリックに責めたてる狭量なやつなのかもしれません。
あるいは、少量のコーディングでデータベース関連のオブジェトを自動生成してくれるような、世話焼き女房のような優しく気の利いたフレームワークは無いのかもしれません。
そんなよそよそしい新しい開発言語を前に、あなたは
「また "Hello World." からかよ..._| ̄|〇」
と、歩み始めた道の長さにがっくりと膝をついてしてしまうかもしれません。
しかし、心配は無用です。
なぜなら、ぜんぜん知らない開発言語をてっとりばやく使えるようにする方法をここで紹介させていただくからです。
このブログを読み終わるころには、あなたはニヒルに微笑んで、こう呟くことでしょう。
"フっ、開発言語なんて、所詮どれもいっしょさ。"
さて、目一杯自らのハードルを上げたところで、さっそくその方法について書いみたいと思います(汗)
"ぜんぜん知らない開発言語をてっとりばやく使えるようにする方法"、それは "作製するプログラムが必要とする機能しか覚えない" という方法です。
笑いこっちゃありません。本当です。
ではプログラムを作製するうえで必要最低限のコードとはなんでしょう?
プログラムの構成要素を大まかに分割すると以下のようになります。
(よくいわれるプログラムの三大要素)
| 入 力 |
| 処 理 |
| 出 力 |
さらに入力と出力は表裏一体ですので、プログラムは入出力と処理の部分に分けられます。
その入出力の種類はだいたい次のようになります。
(入出力処理の種類)
| 入力/出力 |
| ・コマンドプロンプトから入力(に出力) ・アプリケーションウィンドウから入力(に出力) ・関数の引数として入力(返り値として出力) ・ファイルから入力(に出力) ・データベースから入力(に出力) ・ネットワークから入力(に出力) ・外部デバイスから入力(に出力) ・ |
メインとなる入出力の形態は、ほとんどの場合、作成するアプリケーションを決定します。
入出力処理と、アプリケーションの形態の対応としては次のような感じです。
(入出力とアプリケーションの対応)
| 入出力処理 | アプリケーションの形態 |
| コマンドプロンプト | コンソールアプリケーション |
| アプリケーションウィンドウ | ウィンドウアプリケーション |
| 関数の引数/返り値 | クラスライブラリ |
つまり、入出力に関しては、作製するプログラムの形態を選択し(※)、それ以外の入出力処理についてはアプリケーションが使用するものだけを学習すれば良いのです。
(※)Visual C# 2008 Express Edtion での作成するプログラム形態の指定方法については前回のブログで説明していますのでご参照ください。
続いて [処理] についてです。
プログラムで行われる入出力以外の処理は以下のように大別されます。
(処理の分類)
| 処理 |
| ・演算 ・分岐(判断) ・反復(繰り返し) |
開発言語には様々なオブジェクトや関数が用意されていますが、いずれもこの分類からはみ出るものではありません。
つまり、入出力と上の三つの処理を行う方法 + 型や演算子といった記述のルールさえ覚えてしまえばそれなりにプログラムを書くことができるのです。いや、マジでよ。
では、この理論にしたがって C# をてっとりばやく学習するためのリソースをご紹介させていただきます。
まずは C# のマニュアルについてなのですが、購入する Edition の Visual Studio 2008 の場合は以下のパスに *.doc 形式のマニュアルが用意されています。
C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1041
ただし、既定では Visual Studio 2008 では英文のままですが、この度 RTM された SP1 を適用すると和訳したものに置き換わるようです。
フリーの Express Edition には上記のマニュアルは付属していませんが、以下の URL から参照することができます。あ、こっちは和訳されてます。
『C# リファレンス』
http://msdn.microsoft.com/ja-jp/library/618ayhy6.aspx
しかしながらページを見ると、なにから手を付けて良いやら ??? となることが多いはず。ええ、すくなくとも私はげんなりします。
そこで、前述したようにプログラムの作成に最低限必要なものを抜粋してご紹介させていただきます。
紹介する順序は、覚え安さを考慮して前後しますのでアシカラズ。。
まずは C# を記述する際の "掟" とも呼べる書式についてです。
C# の書式について
=================
・・・・・ 。
えと、まず基本的な C# の書き方を紹介してあるドキュメントを紹介しようと思ったのですが、マイクロソフトのページにはそういのがないですね....。
しょうがないので書きますわ。
C# の関数 (メソッド) は、元となった C++ のように以下のように、コードブロックの前後を {} で囲み、センテンスの終わりには ; (セミコロン) を記述します。
| //2 つの数値の演算結果を文字列として返すサンプル string sampleFunc(int a, int b) { int c = a + b; string d = "演算結果は " + c.ToString() + "です。"; return d; //返り値 } |
上のコードの書式はこんなふうになってます。
| //2 つの数値の演算結果を文字列として返すサンプル 返り値の型 sampleFunc(引数の型 a, 引数の型 b) { int iResult = a + b; string d = "演算結果は " + c.ToString() + "です。"; return d; //返り値 } |
コメントとコメントブロックは // と /* で表します。
|
//ここはコメントです。 |
... あ、書いてあった。(ーー;)
『ステートメント(C# プログラミング ガイド)』
http://msdn.microsoft.com/ja-jp/library/ms173143(VS.80).aspx
C# で使用される型
===============
C# で使用されるデータ型は以下のドキュメントを参照してください。
『組み込み型の一覧表 (C# リファレンス)』
http://msdn.microsoft.com/ja-jp/library/ya5y69ds(VS.80).aspx
リファレンスにあるとおり C# にはいろいろなデータ型が用意されていますが、以下の型を覚えておけばだいたい事足りますね。
| 型 名 | 意 味 |
| bool | 正負 |
| int | 符号付き32ビット整数 |
| long | 符号付き64ビット整数 |
| string | 文字列 |
| DateTime | 日付時刻 (※)Datetime構造体 |
"数値を文字列に..." などの型変換の方法については、以下のリファレンスを参照してください。
『キャスト (C# プログラミング ガイド)』
http://msdn.microsoft.com/ja-jp/library/ms173105.aspx
演算子と、改行などを表すエスケープシーケンスについては以下のドキュメントを参照してください。
『C# の演算子』
http://msdn.microsoft.com/ja-jp/library/ms173145(VS.80).aspx
『文字リテラル』(エスケープシーケンス)
http://msdn.microsoft.com/ja-jp/library/aa691087(VS.71).aspx
C# による "処理" の記述
======================
ここではプログラムの三大要素中の "処理" に含まれる 分岐(判断)、反復(繰り返し)、演算を行うための C# のリファレンスは以下の通りです。
『選択ステートメント (C# リファレンス)』 (if-else, switch-case とか )
http://msdn.microsoft.com/ja-jp/library/676s4xab.aspx
『繰り返しステートメント (C# リファレンス)』(for,while とか)
http://msdn.microsoft.com/ja-jp/library/32dbftby.aspx
『配列 (C# プログラミング ガイド)』
http://msdn.microsoft.com/ja-jp/library/9b9dty7d(VS.80).aspx
『例外処理ステートメント (C# リファレンス)』
http://msdn.microsoft.com/ja-jp/library/s7fekhdy.aspx
『文字列 (C# プログラミング ガイド)』 (文字列の処理について)
http://msdn.microsoft.com/ja-jp/library/ms228364(VS.80).aspx
C# の入出力処理
==========
アプリケーションの形式ごとに入出力処理については、アプリケーションの作成方法を含めてこのブログで順次紹介していこうと思うので、ここではアプリケーションの形式に関わらない入出力処理について紹介しますね。
『File メソッド』 (ファイル関連。ドキュメント内の "パブリックメソッド" の [+] 印をクリックしてメソッド一覧を展開してください)
http://msdn.microsoft.com/ja-jp/library/system.io.file_methods(VS.80).aspx
データベースの入出力については手順が複雑なので、以下のドキュメントの内容を参照していただければと思います。
『Visual C# による ADO.NET 入門』
http://www.microsoft.com/japan/msdn/academic/Articles/csharp/06/csharp6.aspx
ネットワーク通信については、とりあえず Socket クラスについてご紹介。
以下のドキュメントには Socket クラスを使用して HTTP 通信を行うサンプルコードが載っています。
『Socket クラス』
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket(VS.80).aspx
ちなみにインターネット関連のプロトコルを処理するのであれば以下のネームスペース下のクラスを使ったほうが簡単です。
『System.Net 名前空間』
http://msdn.microsoft.com/ja-jp/library/system.net(VS.80).aspx
プリンタ関連。
『System.Printing 名前空間』
http://msdn.microsoft.com/ja-jp/library/system.printing(VS.80).aspx
その他の自習リソースについて
===================
MSDN の "ズバリ!!" シリーズでは、目的別に短いサンプルコードを掲載しています。
実装したい機能があったら、とりあえずココ↓を見て、サンプルがなかったらリファレンスを調べるのが近道かも知れません。
『「300 秒でズバリ !!」 & 「10 行でズバリ !!」 シリーズ 』
https://www.microsoft.com/japan/msdn/thisweek/300x10/
だれかに質問したくなったら
===============
マイクロソフトの開発製品のコミニュティです。
『MSDN フォーラム』
http://forums.microsoft.com/msdn-ja/default.aspx?siteid=7
どうしても解からないことがあったら、一人で悩んでないでここで相談してみましょう。
今回は "ぜんぜん知らない開発言語をてっとりばやく覚える方法" と題して、C# でプログラムを書く上でとりあえず必要となる情報についてまとめてみました。
次回は Visual Studio IDE を使用した、デバッグの方法について書いてみたいと思います。
ではまた。
- 帝国の野望ブログ 最新エントリ
- ホワイトペーパー
- 企画特集
- 話題のタグ
SQLite対応アプリのデータベースファイルを閲覧する
グーグル、「Google Buzz」を発表--Gmailのソーシャル機能を強化
「H.264」ストリーミングのロイヤリティ無料期間が延長
マイクロソフト、「Office 2010」のRC版をリリース
仮想化をダメにするストレージの実態
Xbox Live インディーズゲーム開発の軌跡
仮想環境のバックアップは難しいのか
新しい視点のレンタルサーバが誕生!
事例 VMwareでデータセンターをクラウド化
DBのパフォーマンスに困ってませんか?
身近な業務をCRMが変革!
御社はまだフリーの転送サービスですか?
アンケートから見るセキュリティ対策の実態
通販サイトのアクセス集中からの危機を救う
経営統合後の事業損益構造の見える化を実現
利用者の理想を追求した最新レンタルサーバ
レガシーアプリケーションの稼働どうしてる?
アプリケーション仮想化 3つの課題