はじめまして! 私は「鳩でもわかるC#」の管理人です。ここではブログ名「鳩でもわかるC#」に込めた管理人の思いを語ります。
Contents
なぜ「鳩」なのか?
突然ですが、あなたは鳥についてどう思いますか?
鳥はその翼によって自由に空を飛び回ることができる自由の象徴とされることが多いです。人間はそんな鳥に憧れ、空を飛ぶために努力を積み重ねてきました。
鳥は空を飛ぶために多くのものを犠牲にした
しかし本当に鳥は自由なのでしょうか? 実は鳥は空を飛ぶために多くのものを犠牲にしました。空を空を飛ぶためには体重を軽くしなければなりません。そこでまず骨が犠牲になりました。鳥の骨は空洞になっていて内部はスカスカです。足も軽量化の犠牲になりました。鳥の足はか細く体重を支えるのがやっとです。走ることには適しません。
スカスカなのは骨だけではありません。脳もスカスカです。脳が重いと体重が重くなり、自由に空を飛ぶことができなくなるのです。つまり鳥は空を飛ぶために多くのものを犠牲にしたのです。
翼がないって素晴らしい!
質問ですが、それでもあなたは空を飛びたいですか?
翼がないって素晴らしい。
翼はいらない。今の僕がいい。遙かなる道の先を夢見て歩こう。( AKB48 / 翼はいらないの歌詞より)
鳥は賢くないのです。しかも鳩は平和の象徴でもあり「ノー天気」でもあります。プログラミングができる人は優秀な一部の人だけである。そのように考えていないでしょうか? そんなことはありません。C#(WindowsForms)であれば比較的簡単にアプリケーションの開発ができます。
プラグラミングは難しい?
ではあなたはプログラマーに対してどんな印象をもっているでしょうか? プログラマー=一般人には暗号にしかみえないコードをリアルタイムで解読する特殊能力をもつ人種であると考えていないでしょうか?
たしかにプログラミング言語のなかには難しいものもあります。C言語は難しいと思います。しかしC#であれば難しくありません。
私は最初は趣味としてプログラミングを始めました。プログラミングをするためには開発環境が必要です。しかし当時はこの「開発環境」が非常に高くて買うことができませんでした。もちろん無料のものもありますが、あまり使いやすいとはいえませんでした。それでもプログラミングをやってみたかったので無料で使えるコマンドラインコンパイラを使っていました。言語はC言語とC++です。よく参考にしていたのは猫でもわかるプログラミングです。
鳩にはC言語とC++は難しすぎる
なぜ、猫なのか? 「猫でもわかるプログラミング」のイントロダクションの冒頭にはこんな文章が書かれています。
「猫の額」ほどの土地などと言います。猫の額は狭いのです。 額が狭いと言うことは、ゼントーヨー(前頭葉)が小さいと言うことです。 よーするに、賢くないと言うことです。
猫でもわかるプログラミングはそんな「猫」でもわかるように作成されたサイトです。しかし猫は地上で狩りをして生きている高等生物です。空を飛ぶために脳みそを軽量化していまった鳩とは比較にならないくらい賢い動物です。
事実、C言語でWindowsアプリケーションをつくるのは大変です。ここではもっとも簡単なWindowsアプリケーションを紹介します。下記コードの意味はわからなくてもかまいません。C言語でWindowsアプリケーションを作成するのは大変なのだということがわかればいいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); TCHAR szClassName[] = TEXT("template"); //ウィンドウクラス TCHAR szWindowTitle[] = TEXT("とっても難しいC言語"); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style = CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc = WndProc; myProg.cbClsExtra = 0; myProg.cbWndExtra = 0; myProg.hInstance = hInstance; myProg.hIcon = NULL; myProg.hCursor = LoadCursor(NULL, IDC_ARROW); myProg.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); myProg.lpszMenuName = NULL; myProg.lpszClassName = szClassName; if (!RegisterClass(&myProg)) return FALSE; } hWnd = CreateWindow(szClassName, szWindowTitle, WS_OVERLAPPEDWINDOW, 100, // 表示されるウィンドウのX座標 100, // 表示されるウィンドウのY座標 300, // 表示されるウィンドウの幅 200, // 表示されるウィンドウの高さ NULL, NULL, hInstance, NULL); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); } |
これだけ大変な思いをしてどんなアプリができるかというと真っ白なウィンドウが表示されるだけです。
C#なら鳩でもわかる!
C言語は鳩には難しすぎました。だから鳩レベルの知能しか持たない人にはC#をおすすめします。
このブログでは主にC#(WindowsForms)を扱います。なぜか? それはとってもカンタンだから。これにつきます。ここではWindowsアプリケーションを扱います。Macユーザーのみなさん、ゴメンナサイ。
上記のとおりWindowsアプリケーションを作成するときはウィンドウを表示させなければなりません。ところがこのウィンドウを表示させるのが大変な作業なのです。しかも実用性のあるWindowsアプリケーションを作成したいのであればウィンドウだけでなく、メニューやボタン、テキストボックスなども必要です。
しかしC#(WindowsForms)であればウィンドウを表示させるだけならコードを1行も書く必要はありません。メニューやボタン、テキストボックスを表示させたいときもドラッグアンドドロップでフォーム上にコントロール(ボタン、テキストボックスなどの部品のようなもの)を配置することができるので簡単に使えます。
またアプリケーションを開発するのであれば、文字を描画したり前景色や背景色を変更したくなることもあるでしょう。これもC#(WindowsForms)であれば簡単にできます。
無料で使えるVisualStudio Community
もうひとつプログラミングを勉強するうえでネックがありました。それが金銭的な問題、すなわちアプリケーションを開発するうえで絶対になくてはならない「統合開発環境」(IDE)が高額であったということです。かつては「プログラミングっておもしろそうだな。やってみようかな」と思っても手が出せるものではなかったのです。
もしあなたがプログラミングに本気で取り組みたい、職業としてプログラマーを選択したいというのであれば「多少高くても買えよ。これくらいの先行投資もできないようでどうする?」と言いたくなりますが、「プログラミング、なんか面白そうだな。やってみようかな」という人に対して何万もする開発環境を買え!なんて絶対に言えません。
しかし時代は変わりました。いまなら無料で使えます。有料のものもありますが、VisualStudio Communityであれば無料で使えます。
「鳩でもわかるC#」というタイトルに込めた管理人の思い
以上のような考えからプログラミング言語はC#(WindowsForms)、開発環境はVisual Studioという組み合わせをおすすめします。そしてこの組み合わせであれば優秀な人でなくてもプログラミングに挑戦することはできると考えています。
優秀な人でなくてもC#というプログラミング言語であれば挑戦できる。これが「鳩でもわかるC#」というブログ名を採用した理由です。このサイトでは文法に関する説明はしません。他のサイトをみれば書かれているのでそちらにまかせます。このサイトでは他のサイトには書かれていないようなコンテンツの作成を目指します。
どうでしょうか? プログラミングとC#に関心をもっていただけたでしょうか?
よろしければ以下のページもご覧ください。そして感想をいただけると嬉しいです。
初めまして。初学者です。グリン豆と申します(おじさんです)。大変勉強になります。現在メンタの先生にASP.netCore+vue.js版やEFcore+vue.js版のWEBアプリを教えて頂きデプロイできる状態です。最近、自分でもいろいろなアプリに挑戦したくXamarinに寄り道しようかと思って試行錯誤してお天気アプリでも作ろうかと思っていたところOpenMapWeatherなるものを知り、ここへたどり着きました。そして記事の内容を参考にさせていただくと、「自分の様にわざわざXamarinに寄り道しなくてもASP.netCore版で色々なアプリを作れそうだな?なぜXamarinに寄り道しようと思ったのか」と、、よくわからなくなりました。一度、先生方のサイトにあるようなアプリを自分でも量産していく方が、せっかく勉強した事を放置せずに済みそうです。目から鱗だったかもしれません。ありがとうございました。
はじめまして、こんにちは。
いま、OpenTKというツールキットを使って、OpenGLのプログラムをVisualBasicでブログラミングしています。その際、OpenTKには、メッシュモデルが用意されていなかったので、その部分を組むのに、ここのサンプルプロプログラムを参考にさせていただきました。
ところで、僕もC#でログラムを組んだことがありますが、僕にとっては、C#は、「鳩」というより、C言語のようで、構造的には、VisualBasicに近い、どちらでも属しているようで、どちらかでもない、コウモリのような気がします。
拙いコメントで、お気に障ったらごめんなさい!