ちくわ君とはんぺん君のプログラミング大作戦

第一話 バグとの遭遇

森の奥にある小さなプログラミング教室で、シマリスのちくわ君は今日も赤い木の実をかじりながらコードを書いていた。ふわふわの尻尾を椅子に巻きつけ、小さな眼鏡をかけた姿は、まるで森の大学教授のようだった。

「うーん、このアルゴリズムはもう少し効率化できるかな」

ちくわ君がつぶやいていると、教室のドアが勢いよく開いた。

「ちくわさん!大変です!」

飛び込んできたのは、茶色の毛がふわふわのリス、はんぺん君だった。尻尾をぴょんぴょんと振りながら、慌てた様子でちくわ君の前に駆け寄った。

「どうしたんだい、はんぺん君?そんなに慌てて」

ちくわ君は赤い木の実を置いて、優しく微笑んだ。

「昨日教えてもらったプログラムを実行したら、パソコンが変な音を立てて、画面に『エラー:ドングリが見つかりません』って出るんです!」

はんぺん君は目を丸くして説明した。

「ああ、それはね...」ちくわ君は困ったような表情を浮かべた。「君、もしかして変数名を『donguri』にしたけど、実際のファイル名は『acorn.txt』にしたんじゃない?」

「え?えーっと...」はんぺん君は慌ててノートを確認した。「あ!本当だ!なんでわかったんですか?」

「君はいつもドングリのことを考えているからね」ちくわ君はクスクスと笑った。「プログラミングでは、変数名とファイル名の整合性が大切なんだ。特に君みたいに食べ物の名前を使いたがる場合はね」

「食べ物の名前って...確かにそうかもしれません」はんぺん君は恥ずかしそうに頬を赤くした。

第二話 ループの迷宮

翌日、はんぺん君は新しい課題を持ってやってきた。

「ちくわさん!今度は無限ループというものを作ってみたんです!」

「無限ループ?」ちくわ君は眉をひそめた。「それは危険だよ。どんなコードを書いたんだい?」

はんぺん君は得意げに画面を見せた。プログラムには「ドングリ美味しい!」「クルミも美味しい!」「栗も美味しい!」が永遠に続くコードが書かれていた。

「ああ...」ちくわ君は頭を抱えた。「これは確かに無限ループだけど、止まらないよ。パソコンがフリーズしちゃう」

「でも、美味しいものはいくらでも食べたいじゃないですか!」

「気持ちはわかるけどね」ちくわ君は苦笑いした。「プログラムには適切な終了条件が必要なんだ。例えば...」

ちくわ君は素早くキーボードを叩いて、3回で終了する改良版を作った。

「おおー!これなら3回で止まるんですね!」はんぺん君は目を輝かせた。

「そうだよ。でも君の食欲は無限ループみたいだけどね」

「え?そんなことないですよ!...たぶん」

第三話 関数の魔法

一週間後、はんぺん君は新しい発見を報告しにきた。

「ちくわさん!関数というものを覚えました!同じコードを何度も書かなくていいんですね!」

「お、いいじゃないか。どんな関数を作ったんだい?」

はんぺん君は誇らしげに画面を見せた。そこには「もぐもぐ」「美味しい!」「もっと食べたい!」から始まって「zzz...」で終わる関数が書かれていた。

「君の関数は食べることばかりだね」ちくわ君は呆れたような、微笑ましいような表情を浮かべた。「でも、関数にはパラメータを渡すこともできるんだよ」

「パラメータ?」

「例えば、こんな風に」

ちくわ君は何を何個食べるかを指定できる関数を作って見せた。

「すごい!これなら何を何個食べるかも決められるんですね!」

「そうだよ。ちなみに僕は赤い木の実が好きだから、いつも5個は食べるかな」ちくわ君は恥ずかしそうに笑った。

第四話 オブジェクト指向の冒険

ある日、はんぺん君は少し複雑な顔をしてやってきた。

「ちくわさん、オブジェクト指向プログラミングって何ですか?本で読んだんですけど、全然わからなくて...」

「ああ、それは確かに最初は難しいかもしれないね」ちくわ君は赤い木の実を食べながら考えた。「じゃあ、僕たちを例に説明してみよう」

ちくわ君はホワイトボードに絵を描き始めた。

「まず、『動物』という大きなクラスがあるとする。そこには『名前』『種類』『好きな食べ物』『話す』という共通の特徴があるんだ」

「はい!」

「そして、『リス』クラスは『動物』クラスを継承して、『尻尾を振る』『木に登る』という特別な機能を追加する。さらに、『シマリス』クラスと『普通のリス』クラスに分かれるんだ」

「なるほど!僕は『普通のリス』クラスで、ちくわさんは『シマリス』クラスなんですね!」

「そういうこと!」ちくわ君は満足そうに頷いた。「そして、僕たちはそれぞれのクラスから作られた『インスタンス』、つまり実際の個体なんだ」

ちくわ君は実際にプログラムコードで二人を表現して見せた。

「わあ!これで僕たちがプログラムの中で動き回れるんですね!」

「そうだよ。オブジェクト指向は、現実世界をプログラムで表現する方法の一つなんだ」

第五話 デバッグの大冒険

翌週、はんぺん君は困り果てた顔でやってきた。

「ちくわさん!今度は本当に大変なことになりました!」

「今度は何だい?」

「ゲームを作ろうと思って、大きなプログラムを書いたんですけど、エラーがいっぱい出て、どこが間違っているかわからないんです!」

はんぺん君は涙目になっていた。

「よしよし、一緒に見てみよう」ちくわ君は優しく慰めた。「デバッグはプログラマーの大切な仕事の一つなんだ。エラーメッセージをよく読んで、一つずつ解決していけば大丈夫」

二人は画面を見つめた。そこには文法エラー、変数名の間違い、インデントエラーなど、たくさんのエラーメッセージが表示されていた。

「うわあ...こんなにエラーが...」はんぺん君は泣きそうになった。

「大丈夫、大丈夫」ちくわ君は落ち着いて説明した。「まず、文法エラーはコロンを忘れたり、括弧を閉じ忘れたりしている。変数名エラーはスペルミス。donguri_countをどこかで間違って書いていない?」

「あ!もしかして...」はんぺん君は慌ててコードを確認した。「本当だ!donguri_conutって書いてました!」

「nとuが逆だね。プログラミングでは、こういう小さなミスが大きな問題になるんだ。だから、丁寧にコードを書くことが大切なんだよ」

「はい!気をつけます!」

二人は一時間かけて、一つずつエラーを修正していった。

「できました!」はんぺん君は喜んで跳び上がった。「ちくわさんのおかげです!」

「君が諦めずに頑張ったからだよ」ちくわ君は微笑んだ。「プログラミングは忍耐も大切なんだ。僕も最初はエラーばかりだったんだから」

第六話 チームワークの力

月末、二人は大きなプロジェクトに挑戦することになった。森の動物たちのための在庫管理システムを作るのだ。

「ちくわさん、これはさすがに僕一人では無理そうです...」

「そうだね。でも大丈夫、一緒に作ろう」ちくわ君は赤い木の実を食べながら提案した。「君はユーザーインターフェースを担当して、僕はデータベース部分を作るよ」

「本当ですか!僕にできるでしょうか?」

「もちろん。君はもうかなり上達しているよ」

二人は役割を分担して作業を始めた。はんぺん君は、動物たちが使いやすいように画面のデザインを考えた。

「ちくわさん!ボタンを大きくして、文字も見やすくしました!」

「いいね!とても使いやすそうだ」

一方、ちくわ君は効率的なデータベースシステムを設計していた。

「はんぺん君、君の画面から送られてくるデータを受け取るAPIを作ったよ」

「API?」

「アプリケーション・プログラミング・インターフェース。簡単に言うと、君のプログラムと僕のプログラムをつなぐ橋みたいなものだよ」

一週間後、ついにシステムが完成した。

「やりました!」はんぺん君は感動で涙を流していた。「僕一人じゃ絶対にできませんでした!」

「チームワークの力だね」ちくわ君も嬉しそうだった。「君の発想力と僕の技術力が合わさって、素晴らしいものができた」

エピローグ 新しい始まり

システムの完成披露会が森の広場で開かれた。たくさんの動物たちが集まって、二人の作品を見ていた。

「すごいね、はんぺん君!君はもう立派なプログラマーだよ」ウサギのおもち君が褒めてくれた。

「ちくわさんのおかげです!」はんぺん君は照れながら答えた。

「いやいや、君の努力の結果だよ」ちくわ君は赤い木の実を食べながら微笑んだ。「プログラミングは一人でするものじゃない。みんなで協力して、より良いものを作っていくんだ」

「ちくわさん、今度は何を作りましょうか?」はんぺん君は目を輝かせた。

「そうだね...森の動物たちがもっと便利に暮らせるアプリを作ろうか」

「はい!頑張ります!」

二人の新しい冒険が、また始まろうとしていた。森の小さなプログラミング教室では、今日も楽しい学びの時間が続いている。

次回予告:ちくわ君とはんぺん君が挑戦するのは、なんと人工知能プログラム!? はんぺん君が作ったAIは、ドングリのことしか考えない!? 乞うご期待!

コメディ プログラミング 友情 成長 動物 学習