スッキリわかるJava入門

JDK導入不要の開発環境『Dokojava』 本当の狙い

2019/11/14補記


当記事に登場するdokojavaは、2019年11月の「スッキリわかるJava入門 第3版」発売にあわせ全面改訂され、dokojava v2 となりました。
概要は、スッキリJava3版 発売カウントダウン記事で紹介しています。

いつも温かい書評をありがとうございます。今日は京都と奈良で数件の書店に立ち寄り確認しましたが、お蔭様で拙著『スッキリわかるJava入門』は様々な書店様に置いていただけいるようです。

店員さんがITにさほど精通していなかったりする場合、Javaの書籍というものはJavaScriptの本とごちゃまぜで陳列されていたりするというのが業界あるある((そっとデフラグして差し上げることもあります))なわけですが、今日立ち寄った某書店はちゃんとJava本とJavaScript本が別に整理されていました。・・・が、なぜか拙著だけがJavaScript本に混じって置かれていて・・・

「大丈夫、これはイジメじゃない。きっと店員さんが超やり手で、DokojavaでJavaScriptがたくさん使われていること((しかも超ぐだぐだなこと))を見破ったに違いない」

と自分に言い聞かせました。

ということで、今回は拙著の学習に利用できるDokojavaについてご紹介します。

Dokojavaとは

Dokojavaとは、「ブラウザ上でJavaコードを記述し、Webサーバー上でコンパイル・実行できる」入門学習用のJava開発環境です。

拙著『スッキリわかるJava入門』を手にする方が、スムーズに学習をはじめて貰えるよう、PC用とスマートフォン用を用意しました。

誰でも今すぐ利用可能なので、試しにhttps://dokojava.jpにアクセスしてみてください。起動直後にHello Worldのソースが入力済み状態になっていますので、そのまま「実行」ボタンを押せば実行結果を得られます。


ソースコードは実際にサーバーに送られ、本物のJavaコンパイラとJVMで処理されていますので、自由にソースコードを修正して再実行しても構いません。

読者登録をすると、書籍のサンプルコードをロードして実際に動かしたり、それを改造したりすることもできます。入門学習用のツールではありますが、ちょっとした動作検証にも自由にお使い下さい。

ところで、このDokojavaの最大のメリットは、「JDKの導入やクラスパスの設定などを隠蔽して、とりあえずコードを書き動かせる」という点に尽きます。

「よし、Javaをやってみよう」と思い立ったら10秒以内にJava開発を始められるのです。

そんなもんいらない?

「Dokojavaなんていらない」とバッサリ袈裟斬りなさるスーパープログラマさんもいるかもしれません。1

確かに、入門学習用の機能しかないDokojavaで本番システムの開発を行うことは到底出来ません。結局、いつかはJDKの導入方法やクラスパスの設定方法をマスターしなければいけないことは確かです。

でもですね。

世の中みんなスーパープログラマさんみたいに強い人ばかりではないのです。

アリアハンのお城をでた直後に、スライムAとスライムBとゾーマとバラモスゾンビが一緒にでてきたら、普通の人はさすがに嫌になっちゃうわけです。

特にJavaは、BASICやRubyやJavaScript等と比較して「入門者に対して比較的サディスティックな言語」だと思います。

「JavaのJの字もまだ知らない、実はPCは使うばかりで設定とか詳しくない。でも、はじめてプログラミングに興味を持った。やってみよう。」と思い立った未来ある若者に襲いかかる、JavaのドSっぷりを挙げてみましょう。

  • まずプログラミングを始めるにはJDKをダウンロード&セットアップしなければならない。
  • DLサイトがわかりにくい(URLやデザインがコロコロかわる、どれをDLすればいいかわからない)
  • DLとインストールに成功してもなぜか動かない(普通のアプリケーションプログラムではありえない)
  • え? 環境変数ってそもそも何? というPCユーザーも普通にいる
  • ファイル名とソースコード内のクラス名に矛盾があるとなぜかコンパイルできない
  • ソースコード内には実行したい文だけではなく、その周りに謎の「おまじない」の文(public static void main...)で囲まなければならない
  • コンパイルするときは「javac HelloWorld.java」なのに、なぜか実行時だけ「java HelloWorld」

確かに「一度理解して慣れてしまった人にしてみれば」大したことではありません。
しかし、たかだか画面に「Hello World」とかいう実用性も意味もない文字列を出すために、どんだけ頑張らせるつもりでしょうか

独学の「最初の壁」を痛感した事件

多くの入門書などでは冒頭にさらっとJDK導入手順が書いてある程度2だけれども、まぁ入門者もなんとかこれでやれてるのだろうと思っていました。

しかし、若手エンジニアを育成する中である事件に遭遇し、考え方が変わりました。

その新人さんは、入社まであまりPCをさわったことがなかったのですが、人一倍努力家でした。
研修用とは別に、部門から貸与されたマシンにJDKを学習用に入れたいという熱意に応えるべく、「うまくJDKが入らない」という本人にノートPCを持参してもらい問題判別していたときのことです。

「入門書の指示通りに一字一句違わずやった」という本人が少し勘違いしていた設定項目をなおして、JDKが動くところまでもっていった直後。

スタートメニューの中に入っているビジネスアプリケーションを見て悪寒が走りました。

・・・こ、これは・・・

「ねぇ、○○さん。このアプリケーション、Javaを使って動くとっても高価なソフトなんだけど。○○さんが環境変数設定するとき、もともと何か設定されてなかった?」

「はい。最初から、すごくたくさんのわけわからない文字が入ってました。」

「(えっと、たしかそのソフトは、インストール時に独自のJREや多数のJARにクラスパスを通しまくるやつだったよな...)... それって、どうしました?」

「入門書の指示通りの記述に書き換えました(にこ)」

「上書きして消した、、、ってことかな」

「はい(にこ)」

案の定、その高価な商用開発環境は動かなくなってしまっていました。新人さんが部門PCの環境を壊してしまったことが確定した瞬間です。その後の顛末はいろいろと大変だったわけですが、すっかり萎縮してしまった彼を見て思ったわけです。

熱意ある無垢な学び手が、ただ単に画面に文字を出したいだけなのに、
なぜ現場に血が流れなければならないんだ3

私自身のプログラミングとの出会い

彼と違い、私のプログラミングとの出会いは、とてもスムーズでした。

パソコンの電源を入れると、自動的にN88 BASICというBASICのソースコードを入力可能になり、あとは画面から

PRINT 3 + 5

などと入れればその場で 8 が表示されました。

学校で「電卓を使ってはいけません」と言われた計算ドリルの宿題を、「電卓じゃないからOK」と自分に言い聞かせPCにやらせたりして少しずつ命令を覚えていきました4

BEEPと打ち込めば音が出た。

CIRCLEと打ち込めば円を画面に表示させられた。

・・・これ組み合わせればドラクエ作れるんじゃね?(←バカ)

そんなコンピュータとの対話が楽しくなって、どんどん自らリファレンスを調べ試すようになり、気付けばプログラムが組めるようになっていました。「やってみたいと思った熱意が冷める前に、すぐに試せた」ことが、とても大きかったと思います。

「最初の一歩」を踏み出してくれた熱意と勇気を無駄にしない

入門者とは、はじめて何かを学ぶ人です。

入門者は、まだ学んでいないのですから、当然、前提知識は豊富にはありません。

しかし、何かの縁で「はじめてみよう」と思い立ち、最初の一歩を踏み出した勇気ある人です。

その熱意と勇気が冷める前に、一度「できた!」「動いた!」を実感することさえできれば新たな興味が沸き、新たな興味は試行を呼び、試行は次の「できた!」に繋がります。そうして好循環のサイクルに入っていくことができれば、そのあとは多少難しいことや試行錯誤が続いても前向きに楽しく取り組めます。

拙著を手にしてくださった学び手の方には「画面に1文字も表示できないまま、振り絞った熱意と勇気がしぼんでいく」ような不幸な経験だけはして欲しくないという一心で、Dokojavaを作りました。

ヤヤコシイ話は後でいくらでもする5から、まずは全てに先立ち「自分もJavaを使って画面に文字を出せた!」という体験をして欲しかったんです。

つまりDokojavaの本当の狙いは「Javaのプログラムを開発してもらうこと」というよりも、「学び手に好循環のサイクルに入ってもらうこと」にあるのです。

今回のまとめ

原点は、「動いた!」というささやかな喜び。
スーパープログラマたちも、最初はみんなそうだったはず。

参考

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

  1. 「最初から苦労して試行錯誤した方が成長する」「それぐらい出来ずに挫折するヤツには学ぶ資格はない」なんていう台詞を口にすると、なんだかカリスマになった感じがする人もいるかもしれません。私はしませんが。
  2. あまりにDLサイトなどが変わるため「続きはWebで」みたいな感じになってることが多い
  3. パトカーの警察無線に語りかける感じで
  4. その後、「計算の途中経過の記述がないこと」から足がつき、先生にこっぴどく怒られたっけな(遠い目)
  5. 実際、クラスパスやクラスローディングに関しては並の入門書よりよほど深く解説しました

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