C言語を教えるのは意外と大変(高校クラブ奮闘日誌4)
こんにちは、サトにゃんです。来年の4月から大阪府内の情報系専門学校に通うことになりました。慣れない電車通学になると思いますが、気持ちを切り替えて頑張りたいです。高校を卒業するまでにこの連載を終えなければ……。
ではでは、前回の続きを書きたいと思います。
■□■□■
■ 顧問の先生をどうするか
主顧問の先生の転勤を聞いて驚いた自分は、すぐ部員全員に連絡。部員の皆は「そうなんだ……」という感じ。もっと心配してよ……。
結局、顧問を引き受けてくれそうな先生を探すことに。いろいろな先生に事情を説明し、最終的に1人の先生を紹介されました。その先生は、校内でオーディオ機器やパソコンに詳しく、本当に優しい先生でした。自分のお願いに先生は「あぁ、いいよ」みたいな感じで、顧問を引き受けてくれることに。顧問の先生をどうするか、という問題は意外と簡単に解決しました。本当に感謝です。
いま考えると、引き受けてくれる顧問の先生がたとえ見つからなかったとしても、廃部にはならなかったと思っています。自分が通っている高校では、部と同好会の違いがあまりなく、同じクラブとして認められています。部員がゼロにならない限りは、存在し続けることができます。ただ、監督する立場の顧問の先生がいて初めてクラブとして成り立つので、引き受けてくれる顧問の先生を自分たちで探そう! って思いました。このように、同好会を立ち上げて部長になると(自分だけかもしれませんが)本当に大変です。奮闘の毎日ですから(笑)。
■ C言語を教えるという難しさ
C言語講座がスタートしけたれど、どうやって教えればいいの……? そんなことに悩んでいた自分がいました。HSPのように、プログラミングツールだと簡単なのですが、本当のプログラミング言語であるC言語を教えることにはまったく慣れていませんでした。
自分は学校の先生ではないので、教えるときに配布するプリントとかは全然用意していません。書店で売られているプログラミング書籍の解説を参考にして進めるほうが分かりやすいかなぁーって。その書籍選びがポイントで、いかに分かりやすく教えられるかが左右されてきます。書店で立ち読みしたり、Amazonのカスタマーレビューを確認したり、いろいろ自分なりに調べてみました。最終的には候補書籍を全部購入して、読み比べてみました。そのうちの書籍4冊を紹介したいと思います。
―――――
『猫でもわかるC言語プログラミング 第2版』 粂井康孝(著)
サンプルコードと練習問題解答を収録したCD-ROMを付録。書籍の帯には「知識ゼロからの出発」と書かれています。通称「猫C」。有名な書籍の1つですよね。他の高校のパソコン系クラブで結構使われているみたいです。 分かりやすい(猫でも分かるんだから人間でも分かる)という一方で、分かりにくい(猫にしか分からない)という意見もあります。ある程度パソコンに詳しくないと理解できないかも……。
解説本や独学本というのではなく、絵本としてのプログラミング参考書。イラストによる解説が多め。初心者でも気軽に読めるのがいいですね。絵本なので堅苦しい感じがまったくないです。ただ、説明されている範囲は少ないです。本当の入門書といったところでしょうか。
Cの絵本とは真逆の分厚くて、文字とソースばかりの参考書。CD-ROM付き。全体的に読んでみましたが、初心者には理解しづらい説明です。これも、(前述の「猫C」よりも)ある程度パソコンに詳しくないと理解できません。C言語プログラミングに慣れてから読んでみるといいかもしれないです。とりあえず書かれていることが多いので、結構参考になります。
シンプルな感じの参考書。帯には「C言語入門書の最高峰」と書かれています。3色刷りですが、分かりやすく解説されています。文字とソースばかりなのに、なぜか初心者でも理解できそうな内容。「明解」というだけに分かりやすかったですね。自分が選ぶC言語入門書の中で確かに最高峰でした。シリーズとしてほかにも中級編や実践編なども。演習問題の解答は、検索すれば出てきます。
―――――
と、書評みたいになってしまいましたが、簡単に紹介させてもらいました。最終的に、クラブで教えるのに使う書籍は『明解C言語 入門編』と『Cの絵本』に決めました。自分の場合は『猫でもわかるC言語プログラミング』よりも『明解C言語 入門編』のほうがダントツに分かりやすかったです。技術チームのみんなも同じことを言っていました。『Cの絵本』を選んだのは、堅苦しく教えたくなかったからです。イラストを使っての解説も必要ですね(上記4冊の紹介内容は個人的な意見です。少数派かもしれません……)。
でも、本当にC言語を教えることは難しかったですね。自分自身、C言語を完璧に知らなかったので苦労しました(特にポインタを理解してなかったのは痛いです)。技術メンバーの皆は「おまじない(※1)って絶対に覚えなきゃダメ?」とか「関数って何?」とかばかり……。HSPのときよりも熱心に教えました。HSPが手軽すぎたんですね。いい経験になりました。ゆっくり順調にC言語講座が進み、ポインタの手前にさしかかったとき……。
(※1) 「明解C言語 入門編」4ページに書かれている。C言語プログラミングにおいて、最低限書かなければいけない部分のこと。 #include <stdio.h> int main(void){ return(0); }
個人的に今までに購入したC言語関連書籍
C言語のポインタはまだ分からないままです……。
■ ゲーム製作としてのシナリオ作成作業
クラブの技術チームメンバーは、これまでHSP講座やC言語講座でプログラミングについて勉強してきました。今までやってきたプログラミング講座で学んできた知識を生かし、ゲームスクリプトのスクリプティングをすること。それが、本来の目的「ゲーム製作」です。
デザインチームはというと、(アドベンチャーゲームなので)ゲームで使うシナリオを考えてもらっていました。技術チームのC言語講座でポインタの手前にさしかかったころに修正前のゲームシナリオがついに完成し、クラブメンバー全員で本当のゲーム製作がスタートしました。
自分も後からゲームシナリオを読ませてもらったんですが、文章の量がすごかったです。デザインチームの女子2人が数カ月という短い期間で、約3万字、A4サイズ58ページにわたるゲームシナリオを書き上げてくれました。本当に自分では考えられない量です(笑)。内容がどうとかは関係なく、書いてくれた2人には「本当にお疲れさま」といまでも言いたいですね。
そしてその後、クラブメンバー全員でゲームシナリオの1次~3次修正が行われ、やっとゲームに使うシナリオが完成したのでした(シナリオ作成入門書と辞書を片手に作業していた記憶があります。Skypeの会議通話で深夜に修正作業をすることもしばしば……。それだけ時間はありませんでした)。
果たしてゲームは完成するのか、期限までに作ることができるのか…!?
■ 自分は恵まれている環境だった
いま思うと、クラブ設立時から今日に至るまで、自分は本当に恵まれている環境だったんだなぁと身に染みて感じます。いろんな人にクラブ設立の話をするんですが、それだけでも本当に難しいようですね。先生の人数や施設・設備には限りがあるので、最近はクラブを設立すること自体が珍しく、認められないケースももちろんあるそうです。そんな中、クラブを立ち上げられたことだけでも奇跡に近かったですね。
また、このときの部員数は10人で、現在でも10人の部員が所属しています。ほとんどの高校で生徒入部率が下がっている中、文化部でしかもパソコン系クラブに10人も部員がいるということも珍しいみたいです。一時期に女子も入部してくれていたときもあったので、いろんな意味で恵まれている環境だったんだなぁーって。クラブを作っていくのは、自分じゃなくて部員1人ひとりですからね。クラブメンバーには本当に感謝しないといけないです。
■ 後輩を交えての新たなスタート
2009年4月、2年のはじめ、後輩の新1年生2人がクラブメンバーとして加わり、新たなスタートを切りました。そのうちの1人の後輩が、動画技術やハードウェアに本当に詳しくて、自分が後輩に教えられることも……。日々勉強の毎日です。
後輩が入部してくれただけでも嬉しかったですね。自分が立ち上げたクラブを後輩に引き継げるんですから。もう1人の後輩は、放送部にも所属していて、いかにもパソコン系クラブっていう感じです(笑)。これからの後輩の活躍に期待です!
(次回に続く)
コメント
放浪者
はじめまして
もうすぐ中年と言われそうな会社員です。
クラブ活動楽しそうでうらやましいかぎり。
高校時代を思い返します。
C言語のポインタでは、私は2回挫折した経験があります。
また、最初にC言語に触れた時は「ライブラリとリンクするって何?」とか
「そもそもライブラリって何?」とちんぷんかんぷんでした。
私の場合、ポインタをどうやって理解したのか記憶にない・・・
分からないなりにコーディングしてmakeしてデバッガで動作をみてるうちに
なるほどなっと体得した感じです。
当時私の周りに聞ける人は一人もおらずインターネットも普及してない時代で
パソコン通信できる小遣いもなく孤軍奮闘してました。
もし今の私が他人にポインタが何かを教えるなら
デバッガでメモリダンプしたのを見せながら
「ポインタ=メモリ番地」というのを見せると思います。
私は、プログラムが理解しにくいのはその動作が目に見えないからだと考えていて
デバッガはその動作を見せてくれる一種の教育ツール足り得ると思います。
C言語の本でデバッガについて書いてる本はほとんどないと思いますけど
本気でC言語を理解するならデバッガを使うのも1つの道だと思います。
visual studioのデバッガとかGUIですし、変数の値とか簡単に見れるし
ステップ実行して変数値がどう変化するかも一目瞭然です。
メモリダンプもアセンブラコードも見れます。
(関数ポインタを理解するにはマシン語がどこのメモリにあるかわかる方がうれしいかも)
まぁなんにせよ、楽しくプログラミングってのが一番ですね。
コラムニストのサトにゃんです。
コメントありがとうございます。
コメントの返事が遅れてしまって本当に申し訳ないです。
本当に真剣に自分がプログラミングについて勉強すれば、もしかしたらポインタを理解できるかもしれません(笑)
「ポインタを理解できない」というよりも「理解しにくい」もっと言うならば「理解したくない」のかもしれません。
いずれにせよ将来エンジニアを目指すならば、C言語のポインタは理解しとかないといけないですよね。
専門学校でC言語の授業があるそうなので、必死に勉強して鍛えてきますね!
デバッガですか。あんまり使ったこと無いですね。
また機会があれば色々と試してみたいと思います。