第一話 バグとの遭遇
森の奥にある小さなプログラミング教室で、シマリスのちくわ君は今日も赤い木の実をかじりながらコードを書いていた。ふわふわの尻尾を椅子に巻きつけ、小さな眼鏡をかけた姿は、まるで森の大学教授のようだった。
「うーん、このアルゴリズムはもう少し効率化できるかな」
ちくわ君がつぶやいていると、教室のドアが勢いよく開いた。
「ちくわさん!大変です!」
飛び込んできたのは、茶色の毛がふわふわのリス、はんぺん君だった。尻尾をぴょんぴょんと振りながら、慌てた様子でちくわ君の前に駆け寄った。
「どうしたんだい、はんぺん君?そんなに慌てて」
ちくわ君は赤い木の実を置いて、優しく微笑んだ。
「昨日教えてもらったプログラムを実行したら、パソコンが変な音を立てて、画面に『エラー:ドングリが見つかりません』って出るんです!」
はんぺん君は目を丸くして説明した。
「ああ、それはね...」ちくわ君は困ったような表情を浮かべた。「君、もしかして変数名を『donguri』にしたけど、実際のファイル名は『acorn.txt』にしたんじゃない?」
「え?えーっと...」はんぺん君は慌ててノートを確認した。「あ!本当だ!なんでわかったんですか?」
「君はいつもドングリのことを考えているからね」ちくわ君はクスクスと笑った。「プログラミングでは、変数名とファイル名の整合性が大切なんだ。特に君みたいに食べ物の名前を使いたがる場合はね」
「食べ物の名前って...確かにそうかもしれません」はんぺん君は恥ずかしそうに頬を赤くした。
第二話 ループの迷宮
翌日、はんぺん君は新しい課題を持ってやってきた。
「ちくわさん!今度は無限ループというものを作ってみたんです!」
「無限ループ?」ちくわ君は眉をひそめた。「それは危険だよ。どんなコードを書いたんだい?」
はんぺん君は得意げに画面を見せた。プログラムには「ドングリ美味しい!」「クルミも美味しい!」「栗も美味しい!」が永遠に続くコードが書かれていた。
「ああ...」ちくわ君は頭を抱えた。「これは確かに無限ループだけど、止まらないよ。パソコンがフリーズしちゃう」
「でも、美味しいものはいくらでも食べたいじゃないですか!」
「気持ちはわかるけどね」ちくわ君は苦笑いした。「プログラムには適切な終了条件が必要なんだ。例えば...」
ちくわ君は素早くキーボードを叩いて、3回で終了する改良版を作った。
「おおー!これなら3回で止まるんですね!」はんぺん君は目を輝かせた。
「そうだよ。でも君の食欲は無限ループみたいだけどね」
「え?そんなことないですよ!...たぶん」
第三話 関数の魔法
一週間後、はんぺん君は新しい発見を報告しにきた。
「ちくわさん!関数というものを覚えました!同じコードを何度も書かなくていいんですね!」
「お、いいじゃないか。どんな関数を作ったんだい?」
はんぺん君は誇らしげに画面を見せた。そこには「もぐもぐ」「美味しい!」「もっと食べたい!」から始まって「zzz...」で終わる関数が書かれていた。
「君の関数は食べることばかりだね」ちくわ君は呆れたような、微笑ましいような表情を浮かべた。「でも、関数にはパラメータを渡すこともできるんだよ」
「パラメータ?」
「例えば、こんな風に」
ちくわ君は何を何個食べるかを指定できる関数を作って見せた。
「すごい!これなら何を何個食べるかも決められるんですね!」
「そうだよ。ちなみに僕は赤い木の実が好きだから、いつも5個は食べるかな」ちくわ君は恥ずかしそうに笑った。
第四話 オブジェクト指向の冒険
ある日、はんぺん君は少し複雑な顔をしてやってきた。
「ちくわさん、オブジェクト指向プログラミングって何ですか?本で読んだんですけど、全然わからなくて...」
「ああ、それは確かに最初は難しいかもしれないね」ちくわ君は赤い木の実を食べながら考えた。「じゃあ、僕たちを例に説明してみよう」
ちくわ君はホワイトボードに絵を描き始めた。
「まず、『動物』という大きなクラスがあるとする。そこには『名前』『種類』『好きな食べ物』『話す』という共通の特徴があるんだ」
「はい!」
「そして、『リス』クラスは『動物』クラスを継承して、『尻尾を振る』『木に登る』という特別な機能を追加する。さらに、『シマリス』クラスと『普通のリス』クラスに分かれるんだ」
「なるほど!僕は『普通のリス』クラスで、ちくわさんは『シマリス』クラスなんですね!」
「そういうこと!」ちくわ君は満足そうに頷いた。「そして、僕たちはそれぞれのクラスから作られた『インスタンス』、つまり実際の個体なんだ」
ちくわ君は実際にプログラムコードで二人を表現して見せた。
「わあ!これで僕たちがプログラムの中で動き回れるんですね!」
「そうだよ。オブジェクト指向は、現実世界をプログラムで表現する方法の一つなんだ」
第五話 デバッグの大冒険
翌週、はんぺん君は困り果てた顔でやってきた。
「ちくわさん!今度は本当に大変なことになりました!」
「今度は何だい?」
「ゲームを作ろうと思って、大きなプログラムを書いたんですけど、エラーがいっぱい出て、どこが間違っているかわからないんです!」
はんぺん君は涙目になっていた。
「よしよし、一緒に見てみよう」ちくわ君は優しく慰めた。「デバッグはプログラマーの大切な仕事の一つなんだ。エラーメッセージをよく読んで、一つずつ解決していけば大丈夫」
二人は画面を見つめた。そこには文法エラー、変数名の間違い、インデントエラーなど、たくさんのエラーメッセージが表示されていた。
「うわあ...こんなにエラーが...」はんぺん君は泣きそうになった。
「大丈夫、大丈夫」ちくわ君は落ち着いて説明した。「まず、文法エラーはコロンを忘れたり、括弧を閉じ忘れたりしている。変数名エラーはスペルミス。donguri_countをどこかで間違って書いていない?」
「あ!もしかして...」はんぺん君は慌ててコードを確認した。「本当だ!donguri_conutって書いてました!」
「nとuが逆だね。プログラミングでは、こういう小さなミスが大きな問題になるんだ。だから、丁寧にコードを書くことが大切なんだよ」
「はい!気をつけます!」
二人は一時間かけて、一つずつエラーを修正していった。
「できました!」はんぺん君は喜んで跳び上がった。「ちくわさんのおかげです!」
「君が諦めずに頑張ったからだよ」ちくわ君は微笑んだ。「プログラミングは忍耐も大切なんだ。僕も最初はエラーばかりだったんだから」
第六話 チームワークの力
月末、二人は大きなプロジェクトに挑戦することになった。森の動物たちのための在庫管理システムを作るのだ。
「ちくわさん、これはさすがに僕一人では無理そうです...」
「そうだね。でも大丈夫、一緒に作ろう」ちくわ君は赤い木の実を食べながら提案した。「君はユーザーインターフェースを担当して、僕はデータベース部分を作るよ」
「本当ですか!僕にできるでしょうか?」
「もちろん。君はもうかなり上達しているよ」
二人は役割を分担して作業を始めた。はんぺん君は、動物たちが使いやすいように画面のデザインを考えた。
「ちくわさん!ボタンを大きくして、文字も見やすくしました!」
「いいね!とても使いやすそうだ」
一方、ちくわ君は効率的なデータベースシステムを設計していた。
「はんぺん君、君の画面から送られてくるデータを受け取るAPIを作ったよ」
「API?」
「アプリケーション・プログラミング・インターフェース。簡単に言うと、君のプログラムと僕のプログラムをつなぐ橋みたいなものだよ」
一週間後、ついにシステムが完成した。
「やりました!」はんぺん君は感動で涙を流していた。「僕一人じゃ絶対にできませんでした!」
「チームワークの力だね」ちくわ君も嬉しそうだった。「君の発想力と僕の技術力が合わさって、素晴らしいものができた」
エピローグ 新しい始まり
システムの完成披露会が森の広場で開かれた。たくさんの動物たちが集まって、二人の作品を見ていた。
「すごいね、はんぺん君!君はもう立派なプログラマーだよ」ウサギのおもち君が褒めてくれた。
「ちくわさんのおかげです!」はんぺん君は照れながら答えた。
「いやいや、君の努力の結果だよ」ちくわ君は赤い木の実を食べながら微笑んだ。「プログラミングは一人でするものじゃない。みんなで協力して、より良いものを作っていくんだ」
「ちくわさん、今度は何を作りましょうか?」はんぺん君は目を輝かせた。
「そうだね...森の動物たちがもっと便利に暮らせるアプリを作ろうか」
「はい!頑張ります!」
二人の新しい冒険が、また始まろうとしていた。森の小さなプログラミング教室では、今日も楽しい学びの時間が続いている。
次回予告:ちくわ君とはんぺん君が挑戦するのは、なんと人工知能プログラム!? はんぺん君が作ったAIは、ドングリのことしか考えない!? 乞うご期待!