ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

依存性の問題の対応策(その5:引数の共通化で継承を使う場合)

2006-11-29 18:29:45 | Weblog

 シリーズ依存性の問題の対応策の前回書いた内容について。

 仕様変更が多かったり、汎用化させたいため、引数を共通化する場合、

1.いくつかの引数を1つのハッシュマップに入れてしまうという方法があります。
  この場合、ハッシュマップに入れるときに、クラス化すると、クラスが
  変わったことによって、エラーではじくことができます
  (あと、ハッシュマップの場合は、キーを変えることでもはじけます)

2.引数を汎用的な型から継承させ、メソッドの引数自体は、その汎用的な型のほうを
  書く。

  Strutsなどでは、これが利用されています。

  画面(フォーム)の値はActionFormという型から継承します。
  たとえば、No1ActionFormという画面があったら、

public class No1ActionForm extends ActionForm
{
  private String val1;
  private String val2;
:
setter/getter続く
}

という形で、ActionFormから継承させて、各画面の値をもつクラスをつくり、
実際に呼び出されるメソッドは

public ActionForward execute(ActionMapping mapping,
              ActionForm form,
              HttpServletRequest req,
              HttpServletResponse res)
{

というかんじで、派生させた、ActionFormを引数とします。
そして、executeのメソッドの中で、

No1ActionForm no1form =(No1ActionForm)form;

とキャストして使います。

 では、1と2、どのように使い分けるのでしょうか?




■ポイントは、汎用的にやることがあるかと無規則でよいか

 世の中の流れ的に言えば、POJO(extendsって書いてない、Javaのオブジェクト、
これでも、オブジェクトからは、継承されてるけど)なんつー言葉が出てくる
くらいですから、あんまり、継承されたくはないということになります。

 継承が深いと、「このメソッド、どこのクラスに記述されているの?」なんていう
ことになったり、継承しているものも管理しないといけない(継承元の依存性がかわり、
引数が1個抜ける場合、継承先のものにも影響が出てしまう)など、めんどっちいので。

 ただし、以下の2つの場合、あえて継承したのを使うこともあると思います
・汎用的にやることがなにかある
・無規則だとこまる

 たぶん、Strutsの場合は前者のような気がします。
 システムで、引数に対して、共通に何かしているのでしょう。
 この場合は、継承しないとできないので、継承させる必要があります。

 無規則だとこまるというケースは、ハッシュマップに入れてしまう場合、
 どーにでもいれられるので、それはやだ。なんか、決めておきたいというときです。
 まあ、この場合も、将来的に、汎用的に何かやりたい場合が多いんですが
 (なので、無規則だと、今はいいけど将来困る)




■逆に、ころころ変わるのは、ハッシュマップに入れちゃうほうがはやい

 逆に、継承しないほうがいいのは、引数がころころ変わりそうなとき
(仕様が不安定、あるいはない)。
 この場合は、前回のように、クラスにいれてからハッシュマップっていうのもしないほうがいい
 単純にキーワードと値の組をputして、ハッシュマップを引数として渡したほうが、
 仕様の変更にすばやく対応できる。




てなかんじですかね(^^)
ウィリアムのいたずらは、カオル姫方式っぽく、
ハッシュマップになんでも詰め込んでしまうのが
好みです。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

近畿大学HP、「既卒者は肉体労働に近い職を探すことになります」。SEやプログラマは?

2006-11-29 15:16:08 | Weblog

近畿大学のホームページで、「新卒で就職出来ていない人は欠陥品」と載せて、
削除した話は、まあ、知られていると思うが、

ここのニュース
フリーターは惨め」 近大、HPの文章削除
http://www.sanspo.com/sokuho/1129sokuho026.html

によると(以下、および上記の斜体は上記ニュースより参照)

以下のような文章もあったそうな


「既卒者は肉体労働に近い、人が敬遠するような職を探すことになります」という表現もあった。


えー、既卒者、つまり中途採用で、SE、プログラマ募集って、よくありますよね。
上記の表現にたっていえば、

 新卒で、ゼミ経由で就職したような人ではなく、

  中途採用で入ったSE、プログラマ、
  いやプロジェクトマネージャーでさえも、
 
 実は、人が敬遠するような肉体労働に近い仕事です

という意味に。。なりますよね!

おおお、近畿大学、するどいっつーか、なんちゅーか、ほんちゅーか。。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaの画面表示-その2:JSPで表示部分、サーブレットで処理部分(その3:配置)。

2006-11-29 13:56:53 | JavaとWeb

シリーズJavaの画面表示のつづきです。今、JSPで表示画面を作成し、サーブレットで処理部分を書くということをやっています。

 前回はJSPのソースと、サーブレットのソースについて公開しました。
 今日は、それらのソースをどこに置くのかということと、それ以外に記述するファイルについてです。

 前回の、ソース作成後以降の手順は、以下のとおりです

1.サーブレットのコンパイル
2.フォルダを作成して、ファイルをおく
3.web.xmlの作成
4.server.xmlの編集
5.Tomcat立ち上げ

 以下、順に説明します。




■1.サーブレットのコンパイル
 前回作った、サーブレットshori.javaをコンパイルして、クラスファイルを作成します。
 前回にも示しましたが、servlet.jarというファイルが必要です。
 詳しくは、

JavaでHello World > サーブレット (Servlet)編
http://www.hellohiro.com/servlet.htm

の「◆コンパイル」に出ています。

 なお、Tomcatが、javaの1.4で動いているとき、コンパイルをjavaの1.5でやるといったように、javaの動作環境と、コンパイル環境が違うと、実行時にエラーメッセージが出てえらーになることがありますので、動作環境とコンパイル環境のjavaのバージョンはあわせたほうがいいです。
(「っていうのは、ソース作成するときにいってくれよ!」といわれそうですが。。)

で、うまくいくと、shori.classというのができるはずです。




■2.フォルダを作成して、ファイルをおく

今回のシステムのフォルダ構成は、以下のようになります
Tomcatのフォルダ(Program Files/Apache Tomcat 4.0 等)
   |-conf (フォルダ)
   |  |-server.xml (ファイル)
   | (つづく)
   |
   |-webapp
   |  |-test
   |  |  |-jsp
   |  |  | |-index.jsp
   |  |  | *-kekka.jsp
   |  |  |
   |  |  *-WEB-INF
   |  |      |-web.xml
   |  |      *-classes
   |  |         |
   |  |         *- shori.class
   | (つづく) 
  (つづく)

(説明に関係ないフォルダ・ファイルは省略しています)

confフォルダから下のものはあるので、やる作業は
(あ).webappフォルダにtestというフォルダを作ってください
(い).testフォルダの下にjspとWEB-INFというフォルダを作ってください
(う).jspフォルダのほうに、index.jspとkekka.jspをコピーしてください
(え).WEB-INFにclassesというフォルダを作ってください
(お).そこにさっき作ったshori.classをコピーします
(か).(え)で作ったWEB-INFフォルダの下にweb.xmlというファイルを作成します
     →web.xmlの内容は後述します。

となります。JSPの配置をすでにしていれば、(あ)と(い)のうちのjspフォルダ作成、(う)の作業はやっていると思うので、残りの作業をしてください。
(ただし、(う)の作業中、index.jspは、JSPのみのものと、JSPとサーブレットのものとでは、
 ソースの中身が違うので、index.jspについては、今回コピーが必要です)




■3.web.xmlの作成
上記のweb.xmlを作成します。
中身は以下のとおりです
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

</web-app>

(上記 < > は、本当は半角です。なので、実際作るときは、これを置換したりするより、
 ここをコピーしたほうがいいかも。
 ちなみにリンク先はJavaでHello Worldでweb.xmlのサンプルがあるところ)
これを、WEB-INFの下にweb.xmlというファイル名で保存します。




■4.server.xmlの編集
 JavaでHelloWorldを見ている人は、ひきつづき、<TomcatへのWEBアプリケーションの登録>
 ってかいてあるところのことをやってください。
 具体的には、confフォルダの下、server.xmlファイルを開いて、
 ずっと下のほうに
    <!-- Tomcat Root Context -->
    <!--
      <Context path="" docBase="ROOT" debug="0"/>
    -->

  (実際には< > は半角)

と書いてある行があるはずです。
その下に、以下のように書きます。
 
   <!-- Tomcat UserTest Context -->
    <Context path="/test" docBase="test" debug="0"
        reloadable="true" crossContext="true"/>

  (実際には< > は半角)
 そして、これを保存します。

 なお、この作業は、サーブレットだけ、JSPだけのときでもやる作業で、事実、JSPだけでやる方法を紹介したときは、ここの「■手順」の2で、同じことをやっています。




■5.Tomcat立ち上げ

 ここでTomcatを立ち上げてStart Tomcatを実行して)ください。
(すでに立ち上げてある人は、Stop Tomcatで一回とめて、その後Start Tomcatを実行してください)。

 で、立ち上がったら、
 http://127.0.0.1:8080/test/jsp/index.jsp

を開いてください。
(ローカルのIPはかならず、127.0.0.1です。:8080は、デフォルトなら、そのはずです)




■つけたし

 なお、index.jspのファイルで、呼び出し先が、http://127.0.0.1:8080/test/servlet/shoriになっているのに、ファイルを置いているのはWEB-INFの下なのは、間違っているのではなく、これで正しいです(つまり、ファイルシステムのWEB-INF/classesの下が、URL上、servlet/の下になる)




以上、配置方法でした。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

YouTubeの、携帯電話からのムービー視聴の予定

2006-11-29 12:04:03 | Weblog

ここの記事
YouTube、ついに携帯電話からのムービー視聴が可能
http://gigazine.net/index.php?/news/comments/20061129_youtube_mobile/

に、YouTubeの、携帯電話からのムービー視聴についての話(ただし、アメリカ中心みたい)が書いてあります。それによると
(以下斜体は上記ニュースより引用)

サービス開始時期は今年の12月初旬頃を予定しており、1日3ドルか月額15ドルの有料サービスである「V Cast」に加入すると閲覧可能になるという仕組み。閲覧するだけでなく、携帯電話で撮影したムービーを直接YouTubeにアップロードすることも可能。この携帯電話からアップロードする仕組みは今年の5月から実装されており、「YouTube to Go」という名前で呼ばれています。


有料にしちゃうのですね。

でも、それより

著作権侵害の可能性のあるムービーやアダルトムービーの閲覧はできないようになっているとのこと。

おお、どーやって、チェックするんだろう。。。
このチェックは、将来PCにも(つまり、今のYou Tubeにも)入ってくるんだろうか?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

高橋名人とニンテンドーDSブラウザと、ゲーム市場

2006-11-29 03:12:26 | Weblog

高橋名人が「16連射のつぶやき」でつぶやいている、いや吠えている(^^;)
ここの痛いニュース

高橋名人「とあるゲーム雑誌は勘違いをしている」
http://blog.livedoor.jp/dqnplus/archives/862604.html

によると(以下斜体は上記ニュースより引用)


今までにも、私は何回か言っていますが、いままでのゲーム業界が目指していたのは、ピラミッドの頂点であって、しかし実はもっと目指さなければいけないのは、ピラミッドの中腹から底辺に近いところにいるユーザーなのです。

テクニック重視のゲームも、もちろん必要かもしれませんが、そのピラミッドの中腹に居られる方にとって大事なのは、そのゲームが面白いという意見が直感的に出てくることだと思います。
遊べるというのは、ゲームの完成度ではなく、それが直感的に遊べるかどうかだと思うのです。

ピラミッドの頂点を目指したために、ダメになったジャンルがあるのに…
で、それを今でも引っ張ろうとしていて、それが頂点を走っていると勘違いをしている雑誌社とかがあるので、こういう意見を言いたくもなってきてしまいました。


まず、この手の話題の場合、ゲームと雑誌では同じ市場でも、表現が違うことは、
確認しておく必要があると思う。

雑誌社の場合もゲームメーカーの場合も、メイン市場は、顧客層の多いピラミッドの中腹から底辺に近いところにいるユーザーの市場だとは思うのですが、雑誌社の場合、その人たちに、あんたは中流ですよ!ということを再認識させる雑誌を作っても売れない。
 雑誌の場合は、中流の人が読んで、ちょっとハイレベル!っていう雰囲気を出せるほうが売れるのだ。

 ファッション雑誌でかんがえてみるとわかる。
 JJやCamCamを読んでいるお姉さま方は、みんな、エビちゃん似かっていうと。。。(^^;)
 でも、ふつーのオネーサンがでても、雑誌としては売れない。なので、ちょっとレベルたかめの、押切もえにしろ、エビちゃんにしろがでている。




 しかし、洋服で売れるのは、エビちゃんレベルも売れるけど、Tシャツも良く売れるわけで、メーカーとしては、エビちゃんレベルも意識しながら、Tシャツを手がける。ここで、メーカーが注意しないといけないのは、洋服を買っている人はエビちゃんレベルでは、かならずしもない(つーか、エビちゃんみたいなおねーさまは、そーそーいないって ^^;)、でも、売れる洋服は、エビちゃんレベルの場合もあるし、それより1段下の現実路線の場合もあるってことだ。

 ゲームメーカーも同じで、雑誌社は頂点を書かないと売れないが(JJに、ふつーのねーちゃんが出ても売れないが)メーカーは、エビちゃんレベル(頂点)も、ふつーのねーちゃんレベル(中腹)も、両方ださないといけない、どっちを出せば、今のタイミングでは売れるかは、まあ、メーカーの読みになってくるっていうことだ。




 っていうことで、雑誌とゲームはちがうんで、高橋名人の言っていることは、まあ、微妙ではアル。微妙ではあるのだが、この議論は、十分意味ある、考えなきゃいけないお話ではあるのだ。

 この話を読んで、ハドソンってことで、高橋名人は、ニンテンドーDSの数独を意識してるのかなあ?と思った。

 たしかに、あのゲームは、中腹レベルをねらったように見えるゲームである。

 しかし、この手のゲームばかりを出していた場合、問題がないかというと、そうではない。

 というのも、ニンテンドーDSの、ブラウザができてしまったことにより、ゲーム屋さんでない人たち、アマチュアや学生さんが趣味でゲーム市場に参入してくる可能性ができてしったからだ。

 つまり、ユーザーインターフェースがブラウザで、すんでしまうため、グラフィックがこったものでなければ、ゲームメーカーでなくても作れてしまう。




 具体的に言うと、数独をたしかに自動的につくるのは難しいだろう。

 しかし、100問問題を考えて、それを乱数で選んで出題するようにするのであれば、JavaScriptがかければ、ブラウザでできる可能性は大いにあるのだ。

 ってことで、ニンテンドーDSのブラウザが出てきてしまったので、グラフィックにこだわらないのであれば、いろんなゲームが、ゲームメーカー以外でも作れることになってきた。ここで、ニンテンドーは、ゲームメーカーは、どう動くか(グラフィックにこだわらず、アイデア勝負で素人と競い合うか、それとも、グラフックに力を入れるか)ってことは、戦略になってくるだろう




 てなわけで、メーカーよりの意見ではあるが、高橋名人のお話は、
 古川氏のブログのツッコミよりか、まっとうなツッコミだとは思う。。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする