|
この記事は、翔泳社で実施する独習ゼミの研修を紙上で再現したものです。
この記事は、翔泳社で実施している独習ゼミの研修を紙上で再現したものです。使用したプログラミング言語はJavaです。プログラミング経験の有無から「初級コース」と「中級コース」に分かれて、それぞれ4問ずつプログラミングの課題に取り組んでいただきました。講師を務めた私の役目は、赤ペンでソースコードを添削することでした。提出されたプログラムは、どれもきちんと動作しましたが、誰にも共通した問題がありました。それは「プロらしくない」ということです。
これまで4回に渡って、中級コースの内定者さん(学生さん)から提出していただいたソースコードと添削結果を掲載してきました。今回は、中級コースのまとめとして内定者さんとのQ&Aを紹介しますので、皆さんも一緒にプロらしさとは何かを考えてみてください。また、指導する立場の人は、中級者が悩んでいる問題を意識しながら、後輩指導に取り組まれるとよいでしょう。なお、質問の内容は、一部を抜粋したものとなっています。
☆ ☆
| Q: |
4章までは順調でしたが、5章から「分かったような、分からないような」という傾向に陥っています。理解度チェックの課題プログラムがほとんど作成できません。答えのソースコードを見ても「分かったような、分からないような」という感じです。
|
[答え]
| A: |
たった1回だけの学習で理解できる人など滅多にいません。理解が不十分な章は、何度でも読み直して復習してください。すべてのプログラムを打ち込んで、動作確認をしてください。
|
| Q: |
手続型プログラムで学ぶようなところは理解できていると思いますが、クラスを作ることが難しいです。
|
[答え]
| A: |
クラスをベースとしたオブジェクト指向プログラミングは、大規模な(クラスが数多くある)プログラムに適した手法です。教材の小規模なサンプルプログラムでは、なかなかイメージがつかめないかもしれません。とりあえず、クラス=部品と割り切って考えれば、何となくでもイメージがつかめるでしょう。 |
| Q: |
オブジェクト指向について、まだまだ理解できていないと思います。一応テストには合格し、課題もこなしていますが、それと理解することはまったく別物と感じています。 |
[答え]
| A: |
オブジェクト指向プログラミングのテクニックだけでなく、それを採用するメリットに注目してください。「プログラムの再利用性と保守性が向上する」、すなわちコスト削減につながるのです。コスト削減を実現できないなら、オブジェクト指向を採用する意味がありません。プロの立場で考えましょう。
|
| Q: |
Javaに限らずGUIプログラムをほとんど組んだことがないので、ものすごく不安を感じています。
|
[答え]
| A: |
GUIなんて誰でもできます。それよりも、ロジックやデータベースの設計の方が難しいのです。お客様の業務を分析しなければならないからです。ロジックとデータベースができれば、それに合わせたGUIなど簡単に作れます。どうぞご心配なく。
|
| Q: |
アプレットを作成するためのクラスやメソッドを覚えきれません。覚えているつもりでも混乱してしまいます。
|
[答え]
| A: |
まだまだプログラミングの回数が足りませんね。クラスの種類やメンバの機能などは、英単語を覚えるように丸暗記するものではありません。何度も何度もプログラムを作って、自然と覚えてしまうものです。ただし「何を調べればよいか」を知っているだけでも十分です。
|
| Q: |
フローチャートを書くのがちょっと苦手なのですが、大丈夫でしょうか。
|
[答え]
| A: |
フローチャートは、図でプログラムの流れを表したものです。プログラムは、プログラミング言語の構文でプログラムの流れを表したものです。表現は違っても、やっていることは同じです。プログラムが書けるなら、フローチャートも書けるはずです。心配する必要はありません。フローチャートが苦手だという人は、順序が逆になりますが、完成したプログラムからフローチャートを作る練習をするとよいでしょう。
|
| Q: |
プログラミングで失敗したことはありますか? すごく興味があります。先生の体験談をお聞かせください。
|
[答え]
| A: |
失敗談と呼べるかどうかわかりませんが、バグをつぶすのに1ヶ月かかったことがあります。たった1行のプログラムの間違いが原因でした。バグが引き起こす結果は大きくても、原因は些細なことである場合が多いのです。プロになると、体験から多くのことを学びます。
|
| Q: |
プログラム作成のための下準備と、作成のための手順の効率よい方法を教えてください。プログラムを作ろうと思ってから出来あがるまでの手順というか、しなければならないことにはどんな物があるのでしょうか。 |
[答え]
| A: |
プログラムの打ち込みより、設計に時間をかけてください。1ヶ月かけて設計すれば、プログラムの打ち込みなど数日で終わります。事前にテスト計画を立てておくことも重要です。テストが完了しないと納品できないからです。後で改造するためのドキュメントを整備しておくことも重要です。
|
| Q: |
static変数を便利だと思って使っていますが、プログラム的にあまりよくないものであると聞きました。どのような弊害が起きるのですか?
絶対に使わない方がいいですか? |
[答え]
| A: |
自分で便利だと思えるなら、大いに活用してください。static変数が問題となる場面に遭遇したら、使わないようにすべき理由がわかります。「これをしてはいけない」という考え方は禁物です。「これは便利だ」ということを実践するのがプロです。
|
| Q: |
プログラムと長い間付き合っていくには何が重要ですか? |
[答え]
| A: |
プログラムを通してコンピュータと語り合えることを「楽しむ」ことです。プログラムが上手か下手かは関係ありません。コンピュータを好きだと感じられるなら大丈夫です。
|
| Q: |
プログラムを書く仕事に就く人にとって、プログラミング以外ですると良いことはありますか?
|
[答え]
| A: |
まず、健康管理(スポーツ、食生活、睡眠時間、気分転換)です。次に、できるだけ会議に出席し、セミナーやイベントなどに参加することを心がけましょう。毎日コンピュータにかじりついているだけではいけません。プログラマという業種に限らず、プロになったら、人と人との触れ合いが何より大切なのです。
|
| Q: |
これからプロとして仕事をしていく上で、持っていた方がいい本を教えてください。
|
[答え]
| A: |
技術の本は、必要に応じて自然と机の上に置かれるようになります。プロのプログラマなら、変数名のスペルを間違わない、ドキュメントの日本語を間違わない、コンピュータ用語の意味を間違わないために、以下を用意してください(私の机の上にもあります)。
・英和辞典 ・和英辞典 ・国語辞典 ・文書文例辞典 ・コンピュータ用語辞典
|
| Q: |
私は、この研修に限らず、学校で作るプログラムでも、他人が見て分かりやすいプログラムを作っているとは言えないような気がします。つい変数をたくさん作り過ぎたりして、ごちゃごちゃとしたものになってしまいます。仕事で「他人が見て分かりやすいプログラムを作る」というのは当たり前だと思うのですが、見やすくすっきりしたプログラムを作れるようになりたいです。
|
[答え]
| A: |
ただ動けばよいのは、アマチュアが趣味で作るプログラムです。プロが作るプログラムは、誰が見ても分かりやすいものでなければなりません。なぜだかわかりますか?
それは、後で必ず改造作業が発生するからです(見やすい=改造しやすいです)。 それでは、なぜ改造作業が発生するかわかりますか?
それは、お客様が業務で使うプログラムだからです。業務に変化は付き物です。たとえば、消費税率が変わったらプログラムを改造しなければなりません。どこを改造すればよいのでしょう?
改造しやすい単位で、あらかじめプログラムを分けておけばよいのです。Javaならクラスの単位で分けられます。 |
☆ ☆
最後に、研修のまとめとして「プロらしくする七ヶ条」を挙げておきます。どれも当たり前のなのですが、プロでない人には、なかなかできないことのようです。プロになったら「ソースコードが仕事の成果物である」という意識を常に持ってください!
1.わかりやすいコメントを書きましょう。
2.コードの切れ目を明確にしましょう。
3.変数やメソッドなどにわかりやすい名前を付けましょう。
4.マジックナンバーを使わないようにしましょう。
5.できるだけコードが短くなるように工夫しましょう。
6.ユーザー思いのエラー処理を記述しましょう。
7.再利用できるコードを目指しましょう。
※マジックナンバー:何を意味しているかわかならい数値のこと。
|
この連載は、今回で最終回です。記事をお読みいただいた皆様、そして課題プログラムとQ&Aの掲載を快く了承してくれた内定者の皆様に、この場をお借りして御礼申し上げます。内定者だった彼らも、今ではプロの現場で立派に活躍されていることでしょう。
|