比較プログラム言語論

比較プログラム言語論
平成16年7月21日
森田 彦
レポート(7/14)総括
< テーマ >
本日の講義で、あなたが最も興味を持った点はどのような点で
すか?講義の全体的な感想と共に、できる限り具体的に、200
字~400字程度で記述して下さい。
<論点の構成>
 ソフトウェア開発現場への関心
 現職SEへのインタビュー
 Java言語の評価(位置づけ)は?
 JBuilderのメリット
ソフトウェア開発現場への関心


実際の企業などにおいてプログラミングの作業
がどのようにされているのかなどについて興味
があるので聞けたらいいなと思っています。
ソフトウェア危機について。なんでもソフトウェア
開発はものすごい勢いで発展しているため、現
在企業に雇われるプログラマーは即戦力の使い
捨てで、次々に新しいプログラムが登場し、激務
でその新たなプログラムを勉強する暇もないの
だと聞いたのですがどうなんでしょう。読んで「そ
こまでひどいものか?」と内心疑っていますが。
ある企業のSEに実状を聞いてみました。
あるベテランSEへのインタビューから
ある大手企業のSEの方に以下の点を聞いてみました。



1.SEの研修体制は?
2.SEという職業の魅力は?
3.SEになりたい人へのメッセージ
1.ある企業のSE研修体制




4~7月 研修期間
基礎トレーニング (接客の仕方、電話での応対の仕方、
レポートの書き方等々)
プログラム、ネットワーク、セキュリティなどの学習
7月 配属 → 2年間は先輩SEの指導によるOJT期間
1年度目末・2年度目末に成果発表会
OJTの2年間でプログラミング、データベース、ネット
ワーク等を学ぶが、教えるのは基礎のみ。→後は自分
でつかみ取る必要がある
新人を育てることは重要→研修はみっちりやる!
2.SEの魅力は?





厳しい仕事なのは間違いない。特に納期前の作業は確
かにハード!
しかし、自分(達)が作成したシステムが稼働したときの
達成感は何ものにも代え難い。
システムを一つ作ると・・・また次のシステムを作りたくな
る。→モノ作りはやめられない!
モノ作りのためには最先端の技術動向を把握する必要
がある。
大変だが、それを獲得して行くことで、自分自身の成長
を実感できる。
ハイリスク・ハイリターンな職業!?
3.SEになりたい人へのメッセージ






まず、コンピュータが好きなことが第一要件。
共同で作業を進めるのでコミュニケーション力は重要。
プログラミング、データベース、ネットワークそしてセキュ
リティの問題など、勉強すべき点は数多くある。それらを、
主体的に勉強することが必要。
進展が激しい分野なので、常に勉強が必要。→ 勉強
する人は伸びる。逆に、勉強をやめた人はそこまでで終
わる。
それがはっきりと出る(見える)職業。
意欲のある人には、大変やり甲斐のある職業!
若い人にチャレンジして欲しい!
Java言語の評価(位置づけ)は?

Javaの現状について(一般的な評価、利用方法
など)講義していただけると嬉しいです。 個人的
な興味という面もありますが就職活動を控えて、
現場でどのような使われ方がしているのかや、
需要と供給の移り変わりなど、Javaの世間的な
評価も知ってみたいなと少し思いました。
SEの人に聞いてみました。
Java言語の評価(SEの人に聞きました)




Java言語自身が今後どうなるかは、分からない。
恐らく誰にも答えられないだろう。
しかし、Java言語の持つ、“プラットフォームに依
存しない”、つまりどのOSでも動作する、という
アーキテクチャは、今やスタンダード!
仮にJava言語が何かに移り変わっても、その性
質は今後も引き継がれるだろう。
なお、現場のSEは特定の言語にはこだわってい
ません。言語は道具だから・・・。
JBuilderのメリット


JAVA言語のデメリットにあげられた。『オブジェクト指向の独
特の記述が初心者には理解困難。』 『クラスライブラリの全
体像の把握することが困難。』の二つであるが、(開発)ツー
ルの側で解決できないかと考えた。 すぐにJBuilderなどに、
先を越されていることに気付いた。記述問題に関して、エ
ラーやおかしな文を指摘し、全体像に関しても、繋がりがわ
かりやすいようにしてある。 JAVA言語の特徴や、オブジェク
ト指向を、半期講義を受けて、ようやくツール設計の必然性
に気付けた。
プログラミングの授業などでJavaを使ってきていますが、実
際にFrameのほうは使いますが、Applicationのほうはいつ
もまったく触れないので、何に使えるのかと思っていましたが、
今日の授業でフレームを作るのにApplicationが使われると
いう話をしていて、何気なく出来ていたフレームが
Applicationで作られていたのだと初めて知りました。
JBuilderのメリットを理解するためには?

一つ提案というか…最初のプログラミングの時
に、コマンドプロント上で文字が表示される、簡
単なプログラムを書いたじゃないですか。あれを
改良…というわけではないですが、灰色の四角
を表示するくらいまでのものにしてもいいのでは
ないかと。HTMLタグは打ち込んで表示の操作
をすると結果がすぐに分かります。 そのように、
ある程度視覚化できるレベルまでをテキストエ
ディタから作ってみたほうがより分かりやすいの
ではないかと思います。
<本日のテーマ>
Javaプログラミング総復習
 JBuilderを用いて行ってきたフレームの生成やイベント処
理などを、(JBuilderに頼らず)最初から記述してみる。
 その過程を通じてJBuilderの機能のメリットを理解する。
<内容>
1.
2.
3.
4.
5.
6.
mainクラスの定義
フレームの生成
mainクラスとフレームクラスの役割分担
ボタンとテキストフィールドの貼り付け
イベント処理の実装①
イベント処理の実装②
1.mainクラスの定義
class FrameApplication {
コンストラクタ
public FrameApplication() {
省略可
}
public static void main(String[] args) {
System.out.println("実行成功!");
}
}
mainメソッドの定義:一つの処理に対し必ず一つ定義する。
FrameApplication.javaとして保存
以下、作成したファイルやフォルダが、javac.exeやjava.exeなどのJava翻
訳システムがあるフォルダにあるものとして話を進める。
mainクラスの翻訳・実行
① バイトコードへの変換(翻訳)
② バイトコードの実行
実行結果!
2.フレームの生成
import javax.swing.*;
フレームクラスはjavax.swing
パッケージにある
class FrameApplication {
public static void main(String[] args) {
JFrame frame=new JFrame(); フレームオブジェクトの生成
w h
フレームの幅wと高さhを設定
frame.setSize(300,200);
}
}
frame.setTitle("自作のフレーム");
x y
frame.setLocation(100,50);
表示位置(x,y)の設定
frame.setVisible(true);
フレームを表示させる
フレームの生成→実行
50
100
200
300
※ ×をクリックしても、ウィンドウは閉じるがプログラムの実行は終了しない。
プログラムの終了処理を記述しなければならない。
3.mainクラスとフレームクラスの役割分担
<準備>
1. 適当なフォルダ、例えばframesampleというフォルダを作る。
2. その中にFrameApplication.javaを移動する。
3. 同フォルダ内に、フレームを定義するFrame1.javaを作る。
framesample
パッケージ
FrameApplication.java
フレームを生成
Frame1.java
フレームを定義
Frame1.java
package framesample;
import javax.swing.*;
import java.awt.event.*;
パッケージの指定
ウィンドウ(フレーム)の終了処理
のために必要
class Frame1 extends JFrame {
public Frame1() {
・・・
}
JFrameを継承
コンストラクタ
フレームの初期処理
//ウィンドウが閉じられたときに終了するようにオーバーライド
protected void processWindowEvent(WindowEvent e) {
・・・
}
}
FrameApplication.java
package framesample;
class FrameApplication {
public static void main(String[] args) {
Frame1 frame=new Frame1();
frame.setLocation(100,50);
frame.setVisible(true);
}
}
これで、FrameApplication.javaはいじる(変更する)必要が
なくなる。
JBuilderで皆が意識しなかった理由
4.ボタンとテキストフィールドの貼り付け
<Frame1.java>
class Frame1 extends JFrame {
private JPanel contentPane;
private JTextField TField1 = new JTextField();
private JButton Btn1= new JButton();
public Frame1() {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
TField1.setBounds(20,10,200,25); テキストフィールドの
貼り付け
contentPane.add(TField1);
Btn1.setBounds(20,60,120,25);
Btn1.setText("自作ボタン");
ボタンの貼り付け
contentPane.add(Btn1);
this.setSize(300,200);
this.setTitle("自作のフレーム");
}
5.イベント処理の実装①
ボタンをクリックした時に、テキストフィールドに「イベント処理
成功!」という文字を表示させるには・・・
以下の部分を加える。
イベントリスナの登録
public Frame1() {
・・・
this.setTitle("自作のフレーム");
リスナインタフェース
Btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TField1.setText("イベント処理成功!");
}
});
}
メソッドの上書き(定義)
6.イベント処理の実装②
public Frame1() {
・・・
this.setTitle("自作のフレーム");
Btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Btn1_actionperformed();
TField1.setText("イベント処理成功!");
}
});
}
メソッドに置き換える
public void Btn1_actionperformed() {
TField1.setText("イベント処理成功!");
}
関連する質問:開発手法とは?

様々な職種で役割分担を行い、効率をあげている
のはあたりまえであるが、開発現場でも行われてい
ることに興味を持ちました。(中略) しかし、プログラ
マによってクラスの設計や継承が異なるので共有し
にくい欠点があったことや現在は開発手法が整備さ
れルールが共有されていることに疑問を感じました。
ルールとはどのようなものがあるのでしょうか?
JBuilderは、標準的なJavaプログラミングの手法を、ある意味
で強制している。それにより、個々が開発したプログラム(クラ
ス)の共有を促進している。→一つの開発ルールの提示
第14回目レポート




これまで(3ヶ月にわたって)本講義を受けてみての感想を、
特にあなたが興味を持った点を中心に400~800字程度で
記述して下さい。もちろん、講義に対する意見や要望を含め
ても結構です。
上に加えて、後輩(来年度以降、本講義を受講する学生)へ
のメッセージを記述して下さい。短くても結構です。後輩達が、
本講義を選択する際の参考になるようなメッセージをお願い
します。よくまとまったメッセージはHPに掲載しておきます。
提出先:[email protected]
件名:「学籍番号(半角)+半角空白+氏名」を記入して下さ
い。
例) s02xxx 学院太郎
HPに自由掲示板を開設(6/24) 各自活用して下さい。
コンストラクタの記述
class Frame1 extends JFrame {
public Frame1() {
this.setSize(300,200);
this.setTitle("自作のフレーム");
}
・・・
}
これにより、フレームが生成されるときに、その大きさとフ
レームタイトルが設定される。
フレームの終了処理
//ウィンドウが閉じられたときに終了するようにオーバーライド
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
×を選択した場合
}
プログラムを終了させる。
メソッドの上書き→終了処理を加える。