SEの現場2004
SE shop.com SEの現場を購入する
SEの現場2004
   
過去記事
第9回 「Javaコース中級編(その4)」
第8回 「Javaコース中級編(その3)」
第7回 「Javaコース中級編(その2)」
第6回 「Javaコース中級編(その1)」
第5回 「Javaコース初級編(Q&A)」
第4回 「Javaコース初級編(その4)」
第3回 「Javaコース初級編(その3)」
第2回 「Javaコース初級編(その2)」
第1回 「Javaコース初級編(その1)」

誌面記事
マンガでわかる
会社・業界図鑑2004
気になる会社の状況と、業界でのポジションが一目でわかる。転職者・新入社員必見!!
SEの職場を拝見
日本オラクル、サイバードなど、「こんな会社で働きたい」職場を持つ企業に突撃取材。本誌未収録写真もアップ。
データベースのセキュリティを考える
今、重要な課題として挙げられるセキュリティの強化。なかでもデータの保護は最も重要です。データは通常データベースに格納されていますが、データベースの中にあれば大丈夫とは言い切れません。この連載ではデータベースのセキュリティについて皆さんと一緒に考えていきたいと思います。
クイズで実践
成功するSEの交渉術
この連載では、SEが獲得すべき交渉のスキルについて、会話形式の例題にそって解説していきます。現場での交渉は毎日が真剣勝負です。ここでは会話に沿って示される選択肢のなかから「これだ」と思うものを選ぶことにより、あなたの交渉スキルをチェックできます。では、さっそく始めましょう。
矢澤久雄の「プロのコード、アマのコード」
「プロらしいコードとは何か?」って聞かれたら、あなたは、何と答えますか? 『プログラムはなぜ動くのか』の著者矢澤久雄がプロのプログラミングを懇切丁寧に教えます。
新人PMに贈る、53通の手紙
え、今日から、プロジェクトマネージャー?期待と不安に満ちた新人PMに贈る現場感が満ちたエールです。
あなたは「もの作り派?」
「マネジメント派?」
 
あなたはどちらの道を選びますか? 自分のキャリアを、限りなくシンプルに考えるためのガイド。
トム・デマルコ インタビュー
プロジェクトマネジメントの神様 トム・デマルコに聞く「PMに必要なもの」。本誌未収録部分も掲載。
SEのための情報源
〜ユーザーグループ・雑誌・書籍〜
『SEの現場 2002〜2004』に掲載した、SEが読むべき雑誌、書籍、ユーザーグループを一挙紹介!
登録記事  
  第2回 Javaコース初級編(その2) 著者顔写真
グレープシティ株式会社 アドバイザリースタッフ
矢澤久雄
2004/4/8

 この記事は、翔泳社で実施する独習ゼミの研修を紙上で再現したものです。

使用したプログラミング言語はJavaです。プログラミング経験の有無から「初級コース」と「中級コース」に分かれて、それぞれ4問ずつプログラミングの課題に取り組んでいただきました。講師を務めた私の役目は、赤ペンでソースコードを添削することでした。提出されたプログラムは、どれもきちんと動作しましたが、誰にも共通した問題がありました。それは「プロらしくない」ということです。

実際に内定者さん(学生さん)から提出していただいたソースコードと添削結果を掲載しますので、皆さんも一緒にプロらしさとは何かを考えてみてください。また、指導する立場の人は、連載で指摘していく項目を意識しながら、後輩指導に取り組んでみるのもよいでしょう。今回は、初級コース第2回の課題を紹介します。なお、提出者の名前は匿名であり、ソースコードも一部を抜粋したものを掲載しています。

☆ ☆


以下の仕様の「じゃんけんゲーム」を作成してください。 ・コンピュータと人間(プレイヤー)が勝負する。
・コンピュータの手は、乱数で決定する。
・人間の手は、キーボード入力で選択する。
・1回勝負するごとに、勝敗の結果を画面に表示する。
・勝負回数は全部で5回とし、その時点のプレイヤーの勝敗数を画面に表示する。

 

 


/*
    クラス:Kadai2
    機能:じゃんけんゲーム(コンピュータとユーザー)
    作成日:xxxx年xx月xx日
    作成者:XXXXXXXX
*/

import java.io.*;

public class Kadai2 {
    public static void main(String args[]) {
        // 1次元配列、変数の宣言と初期化。
        String te[] = {"グー", "チョキ", "パー"};

        int Com, You, Kaisu, Sho, Hai, Hiki;

        Sho = Hai = Hiki = 0;

        try {
            // InputStreamReaderクラスのインスタンスを生成する。
            InputStreamReader reader = new InputStreamReader(System.in);

            // BufferedReaderクラスのインスタンスを生成する。
            BufferedReader bufreader = new BufferedReader(reader);

            System.out.println("☆じゃんけんゲーム☆");

            for(Kaisu = 1; Kaisu <= 5; Kaisu++) {
               
                // 0〜2の範囲の乱数を1つ作成する。
                Com = (int)(Math.random() * 2 + 1);
                
                System.out.print("あなたの手(0:グー、1:チョキ、2:パー)");
                // キー入力を行う。
                You = Integer.parseInt(bufreader.readLine());

                if ((You - Com == 2) || (You - Com == -1)) {
                    System.out.println(" コンピュータ:" + te[Com] + 
                    "プレイヤー:" + te[You] + "あなたの勝ちです!");
                    Sho++;
                }
                
                else if (Com == You) {
                    System.out.println(" コンピュータ:" + te[Com] + 
                    "プレイヤー:" + te[You] + "引き分けです!");
                    Hiki++;
                }

                else {
                    System.out.println(" コンピュータ:" + te[Com] + 
                    "プレイヤー:" + te[You] + "あなたの負けです!");
                    Hai++;
                }
            } 

        }
        catch (Exception e) {
            // 例外処理を行う。
            System.out.println(e + "という例外が発生しました!");
        }

        // キー入力回数を表示する。
        System.out.println("プレイヤーの勝敗数:" + Sho + "勝" + Hai + "負" +
        Hiki + "引き分け");
    }
}

 



コメントの付け方がよくなりました
 プログラムの先頭や内部に適切なコメントが付けられるようになりましたね。プログラムを読みやすいと感じました。実際の現場では、チームで開発します。同僚や先輩に、あなたが作ったプログラムを使ってもらうこともあります。「どのような説明があれば分かりやすいだろう」と考え、思いやりの気持を込めてコメントを付けてください。

無駄な空行を置かないようにしましょう
 空行(コードが何も記述されていない改行だけの行)は、プログラムを見やすくするために置きます。プログラムを見る人は、空行を処理の区切りだと感じます。ただし、置くタイミンが悪いと、空行の効果が薄れてしまいます。現状では、空行がちょっと多すぎます。コメントを入れるタイミングで空行を置くとよいでしょう。ifとelse、tryとcatchのように対応するブロックは、空行で区切らないでください。別の処理に見えてしまうからです。

// ifとelseの間に空行を置く
if (a > 0) {
  ・・・
}

else {	←このelseがifに対応することが分かり難くなる!
    ・・・
}

Javaの名前付け規約をできるだけ守りましょう
 Javaプログラマは、クラス、メソッド、フィールド、変数、定数などに名前を付けることになります。この際、以下の名前付け規約を守るようにしてください。それによって、プログラムがより読みやすいものとなります。

・クラスは、大文字で始まる名前にする(例:Janken)
・メソッド、フィールド、変数は、小文字で始まる名前にする(例:kaisu)
・定数は、すべて大文字にする(例:PI)
・2つの単語からなる名前は、区切りを大文字にする(例:drawString)
 Javaのクラスライブラリが提供するさまざまなクラスとそのメンバは、
上記の名前付け規約を守っています。あなたも名前付け規約を守れば、
全体として統一の取れたコーディングができます。  たとえば、あなたは変数の宣言で以下のように宣言していますが int Com, You, Kaisu, Sho, Hai, Hiki; これらの変数名は、com、you、kaisu、sho、hai、hikiという
小文字から始まる名前にしたほうがよいでしょう。
大文字からはじまるとクラスに見えてしまいます。

勝ち負けの判定をコンパクトにしている部分は素晴らしいです
 2人の手の組み合せは3×3=9通りあります。何も工夫をしなければ、9つのifブロックを使うことになりますが、とても簡単な演算だけで判定しているのは素晴らしいです。オリジナルのプログラムを作れる実力が付いてきたと感じました。

 プログラムができるようになるとは、Javaの構文を100%暗記することではありません。たとえ50%の知識であっても、それを活用して自分の考えをプログラムとして具現化できることです。あなたには、そのセンスが十分にあると思いました。これからも、自信を持って学習を続けてください!

トップページ
(c) 2004 Shoeisha Co., Ltd. All rights reserved.