「いい加減」さに、自信あり。

春本番ですね

気づけば桜も散って春まっさかり、暁を覚えなさすぎて困る今日この頃ですね。新入社員の方の中にはそろそろ技術研修がはじまるという方もいるでしょうし、学校で「情報系」の科目を取ってプログラミングに触れ始めたという方も多いと思います。

Amazon様などを見ると、この春新しく学び始める方にも拙著『スッキリわかるJava入門』及び『同 実践編』を手にとって頂けているようで、本当にありがたいことだなぁと日々感じています。

表紙がゆるふわでごめんなさい

ところで、企業研修や学校の講義で使う言語入門用テキストって、かなりシッカリしていますよね。表紙の装丁も硬派だったりするので、持っているだけで「なかやまは かしこさ が2あがった!!」な気分になれます。

私も新入社員の頃、用事もないのに小脇に2冊ぐらいオライリー本を抱えつつ会議に臨んだりしたことがあったりなかったり。


ひるがえって拙著『スッキリわかるJava入門』ですが・・・ごめんなさい(・ω・)



いかんせんこの本、表紙からしザックリ感が小春日和に漂いまくるゆるふわ系Java入門書でして、かしこさの演出には全くもって用をなしません。

中身までいい加減でごめんなさい

とはいえ、拙著も一応学習のために使う入門書。表紙はともかくとして、まさか中身までいい加減なんてことは...

あります。自分で言うのもなんですが、
正直、かなり、いい加減です。


例えば、Javaの入門書に必ず出てくる「データ型」の紹介。マトモな入門書や研修テキストでは、大抵次のような表の形で数値型が紹介されます。


表1 : データ型の一覧

データ型 サイズ 格納可能な値の範囲
long型 8バイト -9223372036854775808 ~ 9223372036854775807
int型 4バイト -2147483648 ~ 2147483647
short型 2バイト -32768 ~ 32767
byte型 1バイト -128 ~ 127

これが拙著『スッキリわかるJava入門』になると、次のような"ていたらく"。



約21億とか、「約」ってナンだよ、やる気あんのかオイコラw

というご指摘、至極ごもっともでございます。


ならばここで宣言しよう! 『スッキリわかるJava入門』は日本一「いい加減」なJava入門書であるとッ! *1

これには深いわけがあって....

でも誤解しないでやってください。別にやる気がないわけではないんです。決して悪い奴じゃないんですよ。

 問題ない。全て計画通りだ。*2

いくら頭の中で「♪さくらいろの季節」がまわってるような著者とはいえ、やるときゃーやりますよ。一応、プロですから*3


実は研修でたくさんの方のJava学習を支援していて、伝統的なデータ型の紹介の仕方が「学び手指向じゃないのではないか」という実感がありました。特に「型の最大値や最小値」の紹介の仕方について、です(下表の赤字部分)。


表1 : データ型の一覧

データ型 サイズ 格納可能な値の範囲
long型 8バイト -9223372036854775808 ~ 9223372036854775807
int型 4バイト -2147483648 ~ 2147483647
short型 2バイト -32768 ~ 32767
byte型 1バイト -128 ~ 127


考えてもみてください。データ型を学ぶのは学習の序盤。研修であれば開始してまだ数時間後です。そのようなそもそもJavaを学び始めて数時間も経ってない段階で、long型の最大値である「9223372036854775807」とかいう桁数すらよくわからんような数字見せられて「たのしい」とか「有益だった」とか感じる人がいたら、かなりのレアキャラじゃないでしょうか。


こんな数字、Javaを使って毎日バリバリ開発している人でも覚えてません*4。そもそもよい子はLong.MAX_VALUEInteger.MAX_VALUEを使うもんです。

詳細すぎる解説は、本質を隠してしまう

私が入門書の本編でこの型の最大値を紹介することに抵抗があるのは、それによってそのときに本当に学び手に伝えるべき本質が見えにくくなってしまうからです。


学習開始数時間の学び手にとって、longの最大値が「9223372036854775807」であることなんて、正直どーでもいいこと。それを伝えても意味がありませんし、実際伝えてみても学び手は「ふーん。だから何?」と感じてしまいまっているように思えました。

それどころか、「9223372036854775807」や「2147483647」とかいう巨大整数の羅列を見た瞬間、苦手意識がある方の脳は「わけわからん」「不要な情報」「自分が取り扱えない情報」と判断して思考停止&無視してしまうこともあります。


「整数型について」学び手の頭の中に

 なんだか沢山、いろいろあって、難しそうだな。
 Javaには、いろんな難しそうなものがあるんだな。

という印象しか残らないようでは、本末転倒です。

記憶に残るべきことが、ちゃんと残るような表現手段を選ぶ

学び始めた間もない段階の入門者の方には、以下の2点をまずはしっかり抑えて頂くことが大事だと私は考えています。

  1. それぞれの型に入る値の範囲には、それぞれ違いがあるということ
  2. それぞれの型の限界値を「うっすら」覚えておくこと(特にint型)

そこで、表ではなくイラストによる「いい加減」な解説をすることにしました。



大きさの違いを相手の印象に残すなら、数字ではなく「絵(グラフや数直線)」の方が直感的です。だから、イラストにしました。

また、よく使うintについては、開発中に「ん?使おうとしている数字は、int型にはいらないかも?*5ちょっと調べよう」と思えることが何より大事です。ですからあえて、「2147483647」という脳が拒否する数字ではなく、「約21億」という表記を目に飛び込ませるようにしています。

「21億」の方が、「中国の人口なら入るけど、世界の人口は入らない感じか」などという関連づけも行え、おおよその値の大きさの記憶がうっすらと記憶の片隅に残りやすいということが成人学習理論でも知られています。*6

自分に関係ないと感じることや、自分には把握できないと思えることは、頭の中にとどめないように、人間の脳はできています。

入門書が学び手に提供する体験

私が仕様書や論文、特許の明細書などを書くときは、厳密性と正確さをかなり意識します。それは、そのような書物が読み手に提供すべき価値は厳密で正確な情報を得られるという体験だと思うからです。


しかし、プログラミング入門書を書くにあたって、正確性や厳密さより重視したい価値がありました。それは、

  • とにかく「動いた!」っていう喜びであったり、
  • まだ厳密には覚えきれないけど、ザックリとは理解できたという自信だったり、
  • 「プログラミングって意外と楽しいんだな」と思えることだったり。

まずはそういうところからのスタートでいいと、私は思うんです。プログラミングに興味さえ持ってもらえたら、あとは楽しくて、Java言語仕様だろうと何だろうと自分で調べます。私たちだって、そうだったじゃないですか。


拙著の「データ型」の解説についても、書籍の冒頭部分で小難しい情報を持ち出すことで、本当の狙いを叶えられなくなってしまう恐れが強まるため、あえて厳密な記述や細部を隠したわけです。

情報は「伝わらなければ意味がない」

情報は正確で厳密であるに超したことはありません。 これは疑いようが無い事実です。

その一方で、私たちプロの技術講師は、その情報がいかに正確で厳密であったとしても「相手に受け取ってもらえなければ価値がない」こともよく理解しています。


受け手の状況(理解度や興味の段階)にあわせて、もっとも受け取りやすいであろう形に情報を加工することこそが、伝え手としての存在意味かなって思いつつ、「どのように情報を付け足したり、隠したり、時にはすり替えることで、より相手に気持ちよく・楽しく・効率的に受け取ってもらえるか」ばかりを考えています。

まとめ

「厳密すぎても、受け取りにくい」から。

ね。 「いい加減」でしょ?


スッキリわかるJava入門

スッキリわかるJava入門

*1:注:ギレン様風にお読みください。

*2:注:ゲンドウ様風でお願いします

*3:えぇ、一応ですが

*4:スラスラ唱えられる人がいたら尊敬しますが、少々キモく感じて後ずさりしちゃうかもしれません

*5:リテラルにLをつけなきゃいけないこかも?

*6:longについても「京」という不思議単位が出てきて「よくわかんないけどとにかくでかい」ということが伝われば、まずはそれでよいと思っています