スッキリわかるJava入門

「スッキリわかるJava入門」の半分は湊くんでできています。

いつも温かい書評ありがとうございます。前回のポストでは、拙著『スッキリわかるJava入門』を上下巻の2冊に分けなかった理由(と自力で分ける方法)を書かせて頂きました。しかし、いざ640ページもある自称入門書を目の当たりにすると

『この分厚い図体にスッキリという名前をつける時点で、ツッコミ13面待ちの冗談だろ』

と思わずにはいられない気持ちもわかります。どこからみても悪役担当なのに、白いマントに「正義」という文字が書いてある人たちと同じぐらい矛盾をはらんでるように見えますが、しかし、実はそんなことはないという言い訳を今回はさせてください。

 

30ページのJava入門書があったら

ここにたった30ページでJavaの基本文法からオブジェクト指向までカバーした入門書があるとします。

30ページで全てを解説しようとすると、まぁそれぞれの文法についてそのルールや機能を網羅的に整理して述べていくしかありません。1

その本を読んで「Javaのことがスッキリ理解できた」という実感を持てる人は、ほとんどいないのではないでしょうか。「抽象クラスとかの書き方はわかったけど...これってそもそもどういうときに使うの?」などといったモヤモヤ感が残ってしまう人がほとんどでしょう。

あるものを学んでスッキリ感(納得感)を得るためには、「そのもの自体を学ぶ」だけでは足りないのです。

 

共感駆動学習

私が(相手にとって)あたらしい技術を人様に説明するときに心掛けていることが1つあります。

「その新しい技術を用いない場合の大変さ、苦労、悩みを可能な限り具体的に共有すること」

例えば、最初から統合開発環境(IDE)での開発方法を紹介しても、学ぶ側には大した感動はありません。しかし、メモ帳での開発でさんざん苦労したあとにIDEを紹介すると、特に若手の新入社員さんたちはその便利さに狂喜乱舞します2

「大変さ、苦労、悩み」をしっかり実感することは、その技術の必要性、ひいては自分がそれを学ぶ意味の理解に繋がります。だからできるだけ「大変だよね。面倒だよね。コレ、どうにかしたよね。」という感覚を学び手と共有してから解説に入るのです。

逆にこの「苦しみを共にした時間」「どうにかしたいというモチベーション」さえあれば、その解決に向けて楽しく前向きに進めないはずがないのです。

 

 強敵:抽象クラスと多態性

この「学び手と一緒に下積み時代の辛酸をなめ、輝く未来とあの夕日を目指して河原を走る作戦」を最も丁寧にやったのが、抽象クラスを紹介する第12章でした。

Javaやオブジェクト指向を少しでも学んだことがある人であればよくご存じだと思いますが、この抽象クラスっていうのが中ボスのくせに死ぬほど手強い。それまで元気だった学び手も次々と混乱しはじめ、死屍累々の山ができるというのがJava学習業界での常識です。しかも大ボスである多態性を理解するためには、この抽象クラス(抽象概念)の理解は不可避です。

世の中を見回すと、「抽象クラスとは、newできないクラスです」とか「クラスの宣言の前にabstractをつけます」などという文法や機能からの説明も散見されます。しかし、そもそも「何のために使うのか」「なにが嬉しいのか」がわからないまま難しい解説を続けると、学び手はポカーンとするか3、心が折れるかのどっちかです。

 

攻略法

そこで「スッキリわかるJava入門」第12章では 17ページもかけて延々と登場人物の湊くんが「抽象クラスがない世界で苦しむ物語」を展開させました。彼の場合、「自分が作ったRPG用キャラ部品を、未来の開発者が間違った使い方をしてしまう可能性があること」に悩み、それをなんとか防ごうとします。未来の開発者にコメントを残すなど、あらゆる手段を考えますが、いずれも課題を完全に克服するには至りません。たくさんの悩みを前に、湊くんは暗黒面に落ちない程度に追い込まれます。

そこで待ってましたとばかりに先生役の菅原先輩が登場して、解決策「抽象クラス」を授けます。抽象クラス自体の解説はたった7ページですが、それまで悩んだ課題が次々と克服されていくことを通して、湊くんは「抽象クラスがいかに便利なものであるか」を551が「あるとき」と「ないとき」の違いのように深く実感し、「抽象クラスがなぜ必要か」を把握してスッキリするという流れを狙っているのです。

「湊くん受難の17ページ」は、抽象クラス自体に関する説明ではありません。しかしスッキリするためにはとても重要であることを、本書発売直後に、そのものズバリ言い当てて下さっていたAmazonの書評を前に、思わず拝んでしまいました。

 

物語の必要性

「なぜ必要か、どうして学ぶのか」を具体的に深く共感するには「具体的な物語」が必要です。4
一般論として「ところで、開発していると○○したくなることがあります。」といった解説では、学び手と苦しみと学ぶ理由を深く分かち合えないのです。

今回その重責を一手に引き受けてくれたのが、湊くんという存在でした。

「散々おばかキャラを演じさせて、本当にごめんね」って著者としては心の中で彼に懺悔する毎日です。しかし彼こそがこの「学び手と悩みを共感しあうため」に一番大事な登場人物であることには間違いありません。

彼が夢見るRPG作りという具体的事例と、彼がやらかすオバカな言動・・・ページ数は多少必要となりますが、そのひとつひとつが私と学び手の方々との間での「不自由さ」と「新たなものを学ぶべき理由」の共感へと導く大切なステップなのです。

学び手との共感を得るために、失ったもの

本当は、軽くて、薄くて、内容が豊富で、スッキリわかって、早くて、安くて、ウマい本だとよかったんですが。

「言ったろ。錬金術の基本は『等価交換』って。
何かを得ようとするならそれなりの代価を払わなければいけない」

片腕とか取られるの嫌だったので、仕方なく著者が支払った代償が「スッキリわかるJava入門」の体型です。
Javaの高度な概念をよりわかりやすく伝えるための物語を含んでいる分、この本はちょっとおデブさんになってしまいました。

しかし、この子の本分は「スマートであること」ではなく、「わかりやすく伝えること」だと思うのです。

 

今回のまとめ

湊くんの汗と涙の物語が意外に高カロリーで、あんな体型に。

 

参考

このブログ記事は、著者の個人ブログ(flairDays)から移転掲載されたものです。

  1. まかり間違っても、クラスファイルの先頭を16進数で読むとCAFE BABEになってるとか、『コーヒー好きのおねぇちゃん』はまぁ許すけどDEAD BEEFなんて縁起が悪いファイルヘッダが存在するとか、そんな無駄なことを宣う余裕なんてこれっぽっちもないわけです
  2. 「うぉ、すげー。eclipseまじやべぇ。ってか、パネぇ!」という言葉が飛び交います。うんうん、おじさん言葉はよくわかんないけど、嬉しい気持ちはよくわかるよ
  3. もっと便利な調理器具がないかなと千日前の道具屋筋に出かけたら、見るからに怪しい店番オヤジに見るからに怪しい金物渡され、「オススメはコレだよおにぃちゃん! これ、ボタン押すと鈴虫の鳴き声がするんだぜ。すげぇだろ。これで日本料理からイタリアンまで調理はバッチリだ。絶対買うしかねぇって、安くしとくよ!」と押し売りされてるのと同じ
  4. どんな理由もある物語(文脈)の中で成立するとすれば、具体的な成果が具体的な想いからのみ誘導されるように、具体的な理由は具体的な物語の中で同定されうると思う

-スッキリわかるJava入門
-