Version 18.13
まとめと、これから。
『ほぉたーるのぉーひぃーかーありぃー』
「というわけで、今回で #pragma twice は最終回になります」
『先生! まだまだ教え足らない気がするんですが!』
「そんなことはないよ。実践経験が足らないだけで、もう十分いろんなこと
を理解してるはずだから」
『そうかなー』
「まぁ本当言うと、その実践経験を積んでもらうつもりだったんだけど、
紙面の都合で……」
『なんてこったい』
「さて、今回は最終回ということで、これまでの復習を行います」
『はい!』
「まずは各章を振り返ってみましょう」
・Version 1.01 ( No.003 )
1.0 アプリケーションって、なに?
「ワークスペースの作り方とか、そういう一番最初の部分です」
『とりあえず作ってみましょう、という話ね』
・Version 2.01 ( No.011 )
2.0 計算機の作り方
「前回まで作ってきた、計算機プログラムの MFC 版です」
『 MFC 使うと、触るとこほんのちょっとでいいんだね』
「そのほんのちょっとずつを理解していくことが大事かな」
・Version 3.01 ( No.026 )
3.1 クラスってもの
「この章では MFC のクラスというものや、その使い方、あとリソースにつ
いて説明しました」
『確かに MFC ってクラス使えないとどうしようもないね』
「 MFC を使う上ではクラスの使い方や API との関連性が不可欠だし、そこ
から勉強を始めると進めやすいかな」
『つか API から始めたらすごく大変だよねきっと……』
・Version 4.01 ( No.051 )
4.01 テストアプリの準備
「テスト用のプログラムや、コンピューターそのものの仕組み、変数の中身、
ポインタ等について説明しました」
『 MFC とは逆って感じね。こういうの理解できてないとポインタが分から
ないから結構大事よね』
「 C++ はこういうの分からないと難しいね。あとテストプログラムは作る
くせを必ず付けておいてね」
『分からないことがあったらまずテストプログラムで試す!』
・Version 5.01 ( No.066 )
5.01 普通のアプリを作ろう
「 MFC に関係ない、一般的なプログラムに必要な API の知識、文字列操作
やファイル操作を行うランタイム、それとウィンドウ関係について説明しま
した」
『 Windows アプリの基本って感じね』
「ここが一通り分かれば、普通のプログラムなら作れるかな」
『うん、なんかこの章は普通の本に載ってることっぽかった』
・Version 6.01 ( No.101 )
6.01 バグってなに?
「バグとコンパイルエラーの違い、プリプロセッサとマクロ、演算子、あと
デバッグの方法について説明しました」
『逆にこっちは本に載ってない話だったね』
「こういう知識はなかなか得られないと思うからね。ひとつ前の章よりもむ
しろこの章やふたつ前の章の方が重要かも」
・Version 7.01 ( No.121 )
7.01 描画してみよう!
「デバイスコンテキストと GDI 、 API の構造体と MFC のクラス、それと
イベントの仕組みについて説明しました」
『私、この章すっごく重要だと思う! 特にイベントやタイマー関係』
「そうだね、ウィンドウが固まるとなぜ再描画されなくなるのか、といった
ことが分かるからね。 GDI 関係も、 Windows の仕組みを理解する上では
重要かな」
『そだね、ハンドルって最後の最後まで使うもんね』
・Version 8.01 ( No.143 )
8.01 ウィンドウズ、はじめの一歩
「 API だけでダイアログを作る方法を説明しました」
『ここで初めて MFC 使わないのよね』
「 MFC を使わずにプログラムが組める、 API が一番重要、ってところを押
さえてもらえればいいかな」
・Version 9.01 ( No.162 )
9.01 SDI アプリを作ろう!
「 SDI 、つまりウィンドウがひとつだけのアプリケーションについて説明
しました。あとメニュー、ツールバー、アクセラレーターといった
ユーザーインターフェイスについても」
『 MFC 使ってだけどね』
「最初は MFC 使った方が分かりやすいからね」
・Version 10.01 ( No.179 )
10.01 1からウィンドウを作る!
「で、今度は API でウィンドウを作って、あとメニューやステータスバー
も作ってみました」
『つまり前の章の API 版ね。でもこうしてみると MFC と API の関連が分か
っていいね』
「この章ではウィンドウクラスの登録やメッセージループについても説明し
たから、かなり重要な回かな。 Windows を使うだけでも、ここは憶えてお
いて欲しいかも」
・Version 11.01 ( No.201 )
11.01 文字列ってなんだっけ
「文字と文字列、 new と delete、 CString クラス、コンストラクタと
デストラクタ、演算子のオーバーロードについて説明しました」
『前半はメモリ関係の中身の説明で、後半はクラスの説明で、なんか全然違
う章みたい』
「そうかも……」
・Version 12.01 ( No.224 )
12.01 文字列じゃない世界
「テキストとバイナリー、あと浮動小数点について」
『バイナリーって重要だよね、こうやって振り返るとメモリやポインタ関係
とかってそういう知識あると分かりやすいかも』
・Version 13.01 ( No.237 )
13.01 アルゴリズム?
「アルゴリズムの基礎と、ソート、それと日時について説明しました」
『ソートは複雑だったねー。それにこういう知識はこれまで必要なかった
し』
「そうだね……こういう知識こそがプログラマーに必要かなとも思うし、逆
にこういう部分はライブラリでカバーされてるっていう現実もあるし」
『 qsort() 使えば知識必要ないもんね……』
・Version 14.01 ( No.268 )
14.01 マルチスレッドって?
「マルチスレッドと同期オブジェクトについて説明しました」
『マルチスレッドも複雑だった! 流れが増えるだけで分からなくなるね』
「複数の人が同時に使うアプリだとこの知識は必要不可欠だから、この章は
しっかり憶えておいた方がいいかも」
・Version 15.01 ( No.301 )
15.01 ソースファイルのコンパイル
「ソースファイルとヘッダーファイル、コンパイルとリンクとビルド、あと
DLL について説明しました」
『ここの密度はすごかった……でもソースファイルとヘッダーファイルの話
は重要かも。これがあるからクラスが増えてファイルが増えても大丈夫って
気がするし』
・Version 16.01 ( No.328 )
16.01 クラスを作ってみよう!
「クラスの基本について説明しました」
『半分くらいは復習だったよーな』
「これまでまとめて説明してこなかったしね……」
・Version 17.01 ( No.356 )
17.01 クラスの継承
「クラスの応用、継承とオーバーライド、そしてポリモーフィズムについて
説明しました」
『ポリモーフィズムは目鱗ものだったなー。でもあんま使わない?』
「次の章で使ってるでしょ」
・Version 18.01 ( No.388 )
18.01 ウィンドウプログラムをクラスで作る
「で、前回まで API とクラスでダイアログアプリを作ってみました」
『クラスの連携とか、実際にポリモーフィズムをプログラムで使って見ると
かだったね』
「で、ここまで読んでもらえれば、 MFC と API の関係は分かったと思うし、
それを踏まえてクラスでどうプログラムを作ればいいか、っていうのはだい
たい分かったかな」
『……なんとなく』
「なんとなく……なら、もう一押しすると、結局は MFC とか真似ちゃって
いいよ、という話」
『真似ちゃっていいんですか』
「 MFC だけじゃなく、いろんなプログラムを真似てみて。僕が教えてきた
のは、プログラムの書き方というよりは、読み方の方だから」
『あー、そんな感じかも』
「プログラムに書かれていることがどういう意味なのか、どういう意図で
書かれているのか、そういうことを説明してきたつもりだから、それを踏
まえて、あとは自分で真似てみて」
『そうしていけばプログラムは作れる、と』
「あともうひとつ。ここまでの説明は、どれも細かい部分部分の説明に終始
していたと思うけど」
『うん、サンプルも大きいのほとんどないし』
「プログラムではそれが大事。どんなプログラムも、小さなプログラムの集
まりだから」
『あ、それ何度も言ってたね』
「小さなプログラムを組み立てていって大きなプログラムができるんです。
だから、部分部分をちゃんと理解してしっかり作っていけば」
『おっきなプログラムも作れる!』
「そういうこと。そういう意識を忘れずに持っていて」
『はーい』
「さて、この #pragma twice は計8年間連載してきました」
『長いよね〜』
「その間に、 Visual C++ はあまり使われなくなってしまいました」
『ええ〜!? じゃあ教わってたことって、古くなっちゃったってこと?』
「そういうことだね。もちろんまだまだ使える分野は多いんだけど、少なく
とも主流じゃなくなっちゃったかな」
『なんで使われなくなっちゃったの?』
「まずひとつは、普通のアプリケーション、つまり Exe 形式のものよりも、
インターネットを通して実行するアプリケーションの方がよく使われるよう
になったことかな」
『確かにそうよね、最近じゃホームページを通して動かすエクセルとかもあ
るみたいだし』
「そういうアプリケーションに、 C++ 言語、特に Visual C++ っていう
ツールが特化されていなかった、っていうのがあるかな。もうひとつは、
最近は安い・早い・便利が求められているっていうのが大きいかも」
『どっかの牛丼みたい……』
「まず〈安い〉は、無料で使える開発環境や実行環境のこと。 Visual C++
は高いけど、最近の開発環境はどれも無料なんです」
『ほえー』
「タダでコンパイラとかを揃えることができて、かつ〈早い〉、簡単に
プログラムを作って動かせるものが最近増えてます」
『あ、〈早い〉って実行したときの話じゃないんだ』
「そう、プログラムを作るのが簡単ってこと。最近はどんなアプリも早く
作って早く公開して、要望があればどんどん直していく、っていうスタイル
だから」
『 Visual C++ だとそういかない?』
「うん、手軽なものよりは作るのに時間がかかるかな。あと〈便利〉、最近
の言語はライブラリがとても豪華なんだよね」
『 MFC 以上に?』
「 MFC よりもずっと。それに開発環境が無料だから、他の人が作った
ライブラリも多いしね」
『あー、それじゃ負けちゃうね……』
「というわけで、この #pragma twice で使用してきた Visual C++ 6.0 は
ちょっと時代遅れになってきてしまいました。なので、乗り換えを推奨しま
す」
『えええーっ!? そ、それいいの?』
「まぁ仕方ないから……それに、これまでの勉強はちゃんと役立つよ」
『そういうものなんだ』
「おすすめの言語をあげておくと、以下のような感じかな」
・Java(じゃば)
「 C++ 言語に似た文法で、インターネット用アプリケーションを作るのに
向いた言語です。機能も豊富だし、 C++ をしていれば憶えやすいし、無料、
しかもかなりよく使われている言語だから、まずはこれをおすすめします」
・Visual Studio.Net 2005(びじゅあるすたじおどっとねっとにせんご)
『あれ、これって Visual C++ 6.0 の最新版ってこと?』
「そう、だから一応ここまでのプログラムも動く……けど、だいぶ変わって
きてるからそのまま動かないのも結構あるかな」
『ええーっ?』
「おすすめなのは、この中に入っている C# (しーしゃーぷ)っていう言語。
これは C++ 言語に似ていて、いいとこどりをしている言語だから悪くないと
思うよ。結構使われているし」
『でもタダじゃないんだよね……』
「あ、一応無料版もあるからその辺から試してみるのもいいかも。学生なら
アカデミックパックもあるからね」
・JavaScript(じゃばすくりぷと)
「まず始めに言っておくと、さっき挙げたJavaとは、名前は似てるけど別の
言語なので注意してください」
『まぎらわしい……』
「これはホームページ上で動かせるプログラムで、完全無料で、ものすごく
簡単に作れます。それに最近はかなり色々なことができる高機能の言語でも
あるので、やっておいて損はないかな。言語仕様は C++ に似てるし」
・PHP(ぴーえっちぴー)
・Perl(ぱーる)
「このふたつはホームページ上で動かすのに向いた言語で、無料で使うこと
ができます。これも C++ 言語に似ているし、手軽に使えるからおすすめ」
『 C++ に似てるのって多いんだねぇ』
「まずはこんなところ。ほとんどが無料だし、言語仕様が似ているから
とっかかりやすいと思うよ」
『つまりこれまでの知識が生きるってことね』
「ただ、 MFC や Win32 API の知識はあまり役立たないかも」
『げ!』
「でも、今回もちょっと触れたけど、 Win32 API の知識は、イコール
Windows そのもの知識だから、必須の知識だと思うけどね」
『たしかに、メッセージループとかは知っておかないといけないかも』
「それに、プログラミング言語の歴史はそれほど長くないから、どの言語も
似てるんだよね。だから、この #pragma twice をちゃんと勉強しておけば
どの言語でもやっていけると思うから」
『と、励まされたところでお開きですか?』
「だね。上に挙げたようにプログラミング言語はたくさんあるし、 C++ 言語
に限定してももっともっと奥が深いから、ここまで学んだことを踏まえて、
さらにステップアップしてください!」
『じゃ、みんなまたねー!』
『……ところで、私って結局なんだったの?』
「……僕が10年後くらいに作るプログラムなんだよ、きっと」
『へー水希ちゃんってわたしのパパだったんだーうれしー(棒読み)』