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