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

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

ケータイの音声通話定額制に期待するよりSkype利用のほうが現実的?ならW-ZERO3有利?

2006-10-28 16:47:34 | Weblog

きのう取り上げた
ドコモ中村社長、「孫氏の発言には怒りすら覚える」
http://k-tai.impress.co.jp/cda/article/news_toppage/31710.html

の中で、ドコモの中村社長は、こんなことを言っている。
(以下斜体は上記ニュースより引用)


 一方、音声通話定額制の導入に関しては、「いまの55%というドコモのシェアの中では、はっきりいって自信がない。音声通話定額を導入すれば、トラフィックがミニマムで5倍以上に増えるのは明らかで、東京のど真ん中にいながらも音声の通話ができないという状況になりかねない。音声定額の導入はよく見極めてからやっていきたい」とした。


たしかに、通話定額制とかになったら、みんな、いっきにケータイをかけ出しちゃうよねえ。。
そしたら、つながんなくなるよねえ。。

やっぱ、現実的には、ケータイの通話定額制より、Skypeによる仲間内の通話代無料なんですかねえ。。。

 でも、そーすると、ケータイにSkypeを載せるという話は、どーなのどーなの??

 それより、W-ZERO3で、Skype載せて無線LANで通話がうまくいった
 っていう話も、以下などにあるから


W-ZERO3 使用レポート2 - Skypeでメッセンジャー
http://allabout.co.jp/computer/pda/closeup/CU20060128A/


 やっぱ、W-ZERO3のほうが、いいのかなあ??
 っていう結論になるんなら、MNPや、予想外割って、なんだったんだ(^^;)

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

東芝の最先端?フルフェイス型HMDって、周りからみたら、変。。。

2006-10-28 12:13:12 | Weblog

昨日のWBSのトレンドたまごで
東芝が開発した、フルフェイス・ヘルメット型のヘッドマウントディスプレイ(HMD)を紹介してました。

かぶればホームシアター
http://www.tv-tokyo.co.jp/wbs/2006/10/27/toretama/tt.html


普通ののフルフェイス用ヘルメットの何倍も大きい、
真っ黒いもんを、かぶってます。

たしかに、その中では、ホームシアターが上演され、
   見ている人は、感動ものなのかもしれませんが

外から見ている人にとっては、あきらかに、変です。
   かぶってる人は、変な人に見えちゃいます。

 これって、普通のフルフェイスのヘルメットの顔の部分だけとりはずして、そこを電子ペーパーにして(そこだけは、もっと出っ張らせないといけないかもしれないけど)画像を出すようにして、その画像制御なんかは、コードで繋いでいる端末でやる(全部やるんじゃなくって、無線で飛ばすという形になるかもしれないけど)とかいう形にできないんですかねえ。。

 それなら、ここまでは、違和感ないと思うんですけど。。。

(位置を示す赤外線を出すところを普通のヘルメットの上に仮に取り付けたとしても)

P.S レポーターが、松丸アナではなかったので、昨日本家に書いた「車椅子も、障害物があっても動くようになるのかなあ?キャタピラにして??」ほどには、マジメに見ていなかったのですが。




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

ドコモ中村社長、「孫氏の発言には怒りすら覚える」と、ソフトバンクの予想外割を批判

2006-10-27 23:17:56 | Weblog

ここのニュース

ドコモ中村社長、「孫氏の発言には怒りすら覚える」
http://k-tai.impress.co.jp/cda/article/news_toppage/31710.html


によると、Docomoの中村社長は、(以下斜体は、上記ニュースより引用)

「0円の表記と、孫社長の名前は大きく書いてあるが、大切な条件が小さく書いてある。ソフトバンクモバイルに移動したが、請求書を見て、こんなはずじゃなかったという人が増えることが心配。こういう出し方はフェアなのかどうか」などと語った。


そうな。で、

ドコモとauの料金体系が複雑であると指摘されたことや、日本の携帯電話料金が世界一高い料金体系としたことに対しても、「ソフトバンクは、時間帯を4つにも分割し、曜日ごとに料金を切り分けている。どっちの方が複雑なのか。トラフィックを分散させるためのプランだろうが、もしJRがラッシュ時だけ料金を高くしたら、どんな批判が集まるか。また、総務省の発表でも、日本の携帯電話料金は世界的に見ても、決して高くはない」などとした。


これ、おっしゃるとおり、複雑にしすぎちゃいましたよねー。
ソフトバンク。
時間帯によって違うって言うのはねえ。。。
で、さらに


、「固定発携帯電話料金は、3分120円だったものを、ドコモは3分70円、auは3分80円へと値下げしてきた。それに対して、ソフトバンクモバイルは3分120円のまま。これはかなり収益に作用する部分であり、こうした点を言わないことは疑問」などと語った。


って言っているけど、確かに、今回の予想外割、よーくよーくよーく検討しないと、
なんか、高くなっちゃうかもしんない。。
ほんとうに、今回の予想外割で、ケータイって、どこまで値段体系複雑にするんだよー
っていう感じになってきた。。。(>_<!)

そのうち、値段が高いか安いかでなく、
「料金体系が理解できるのが、ここしかない」
とかいう理由で、ケータイ選んだりして(^^;)


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

富士通のパソコンから発火!!ソニー製充電池で!!

2006-10-27 22:44:29 | Weblog

ここのニュース

ソニー製充電池搭載、富士通のパソコンから発火
http://headlines.yahoo.co.jp/hl?a=20061027-00000315-yom-soci


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

 富士通は27日、ソニー製充電池(リチウムイオン電池)を搭載したノート型パソコンから火花が出て、利用者がやけどをする事故が発生したと発表した。

 ソニー製充電池を巡る一連のリコール(自主回収・無償交換)問題で、国内のパソコンメーカーの発火事故は初めてだ。


そうだ。ただし


事故の起きたパソコンの充電池はリコールの対象だった。


だそうな。。

なお、

電源を切った状態で充電中に発熱し、火花が出た。においと音で気づいた使用者が火花を消そうとしてやけどを負ったという。


ということだけど、火花が出てるのに、消さないわけにもいかないしなあ。。。(^^;)



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

YOU TUBEの著作権違反動画を、ブログで紹介しても、違法!という記事

2006-10-27 20:28:41 | Weblog

ここの記事
「YouTube人気動画リンク集」は合法か (1/2)
http://www.itmedia.co.jp/news/articles/0610/27/news029.html

によると、

YOU TUBEで、著作権違反をしている(たとえば、テレビ番組をそのまま貼るとか)
違法動画を、

ブログなどで紹介して、リンクを貼った場合、「自動公衆送信権侵害のほう助」となり、
ブログで紹介した人も、違法となるらしい。

 ただし、私的利用ならOKで、少人数の間で言うのならOKらしい。
 また、引用もOKらしい(というので、ウィリアムのいたずらは、すべて、
 引用とブログに書いている)

 少人数の間ならOK...
 ってことは、SNSで、著作権違反しているサイトを紹介しても、
 友達にしか公開しない場合、
 「少人数の間でしか紹介してない、私的利用だ!」
 って主張すればOKってこと。。。??

 でも、ブログはだめってことなんですかね??
 (ほんとーなのかなあ、この話??)


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

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その4:マクロ説明)

2006-10-27 17:41:21 | ケータイ

シリーズ仕様書からプログラムソースを生成する方法のつづきです。

 前々回、マクロを公開し、前回、そのマクロをExcelに貼り付けて、生成させる方法について書きました。今回は、その前々回公開したマクロの説明です。




■マクロの関数の概要
 このマクロには、3つのサブルーチン(Sub)または、ファンクション(function)があります。

(1)ボタンから起動されるサブルーチン(shiyoToFile)
(2)雛形ファイルと仕様書を読み込んで、自動生成する(makefile)
(3)制御内容ごとの処理(chgTagToStr)

 (1)から、(2)が呼び出され、(2)から(3)が呼び出されます。
 (1)は、仕様書によっては、書き換わります。

 以下、それぞれの関数を説明します。



■(1)ボタンから起動されるサブルーチン(shiyoToFile)

 ここでは、以下の処理をします。

(1-1)前処理
     (2)のプログラムは、固定化するため、
     (2)で処理できるようにするため、
     前処理を行う

(1-2)(2)のプログラムを呼び出す

(1-3)後しまつ
     (1-1)でシートやファイルを作成したら、
     削除します。

 今回は、(1-1)、(1-3)が必要ないので、(1-2)だけ行います。
Call makefile(雛形ファイル名,シート名,出力ファイル名)

 です。



■(2)雛形ファイルと仕様書を読み込んで、自動生成する(makefile)
 makefile(雛形ファイル名,シート名,出力ファイル名)というカタチの
サブルーチンです。内容は、以下のとおり

(2-1)雛形ファイルを読み込みます
   indataに、ファイル内容を全部入れます。

(2-2)書き出し内容を作成します
   ・indataの開始ポイント(str_pos)を1、
    (VBAにおいて、文字列の先頭は0でなく、1)
    出力内容を(outdata)を空文字("")として
   ・制御内容のタグ$#$があるかないかチェックします **
   ・あったら、
      前回のタグの終わりから、今回のタグまでoutdataにセットし、
      制御内容部分を切り出し
      chgTagToStrで制御内容を処理します
       →この内部でoutdata(書き出し内容)をセットします
       →chgTagToStrは、次の開始ポイント(str_pos)を返します
      **に戻ります
   ・**のループが終わったら、残り部分をoutdataにセットします

(2-3)作成データを書き出します
  ・まず、書き出しファイルがあったら削除し
    ここが、変な風になっているのは、<>っていうのを書くと、
    変換しないといけないので、面倒だからというだけで深い意味はないです
  ・書き出します   
 


■(3)制御内容ごとの処理(chgTagToStr)
chgTagToStr(制御内容,次の開始ポイント候補,仕様書のシート名)というカタチの
ファンクションです。返り値は、次の開始ポイントです。

内容は、制御内容が、それぞれのタグだったら、それにあった内容をします。
こんなかんじ

(3-1)制御コードが"REPEND"だったら、
  仕様書チェック行(lpgyo)を次の行にして(1足す)
  そこの行の指定箇所が空白だったら
    ループ終わりなので、引数の次の開始ポイント候補を返す
  そうじゃない(まだ行続く場合)
    ループするため、ループ開始ポイント(lpstr_pos )を返す

(3-2)制御コードが"REP"だったら、
  仕様書チェック行(lpgyo)を取得
  ループするためのループ開始ポイント(lpstr_pos)を、セット
   →この制御コードの終わりの次の文字
        =次の開始ポイント候補にする
  引数の次の開始ポイント候補を返す

(3-3)制御コードが"CELL"だったら、
  指定箇所を、出力データ(outdata)に追加して
  引数の次の開始ポイント候補を返す

(3-4)制御コードが"KETA"だったら、
  現在行の指定桁を、出力データ(outdata)に追加して
  引数の次の開始ポイント候補を返す


*"REPEND"を先に聞き、"REP"をあとに聞く理由は、
 先に"REP"を聞いてしまうと、そこに"REPEND"も
 引っかかってしまうからです("REP "で聞けばいいんだけどね)

**今後、ここに条件文IFが追加される予定です




こんなかんじです。
人に、「同じプログラムを使えば枯れるから」とかいっておきながら、
実はこのプログラム、よく作るんだけど、いつも即興で作ってしまっていて、
今回も、即興でつくったので、バグとかもあるかも。。
あったらごめんなさい。

では、今回はここまで。



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

ソフトバンクとウィルコムでは、同じスマートフォンでも、システムの考え方を変えないと。。。

2006-10-27 15:47:16 | Weblog

 ソフトバンクモバイルのX01HTと、ウィルコムのW-ZERO3、同じスマートフォンだけど、予想外割をうまく使うには、システムの考え方を変えたほうがいいのかな?と思った。




■ウィルコムW-ZERO3の場合

 まず、話かんたんな、ウィルコムの場合。
 W-ZERO3を購入して、ウィルコム定額プランとデータ定額を使ったとする。
 この場合、ふつう、サーバーにデータを置くと思う。

 で、会社のデータにアクセスすると。。。
 このとき、会社のExcelなどを、できるだけ安く取得したいとすると、

 メールはただみたいなので、

   ・会社のあるメールサーバーにアクセスすると
   ・メールの内容を読み込んで
   ・必要なデータを送り返す

 というプログラムと


   ・会社のあるメールサーバーにアクセスすると
   ・添付ファイルの内容を
   ・メールに書かれた内容をもとにサーバに書き出す

 というプログラムを開発し、メールでやり取りすれば、よさそうである。

 そうすれば、届いたメールを、W-ZERO3のExcelやWordで編集し。。
 あるいは、手持ちのパソコンで編集したファイルをW-ZERO3に送って、
 それを送受信(無線LANが使えない場合)

 っていうアプローチが考えられる(作ってないので、考えられるというだけの話だけど)




■ソフトバンク X01HT+予想外割の場合

 予想外割をうまく利用するには、「ソフトバンク内のメール」にしないといけない。
 じゃないと無料にならない。
 つまり、サーバーに置く形だと、サーバーはソフトバンクのケータイではないので
 (ここでX01HTをサーバーに使う人はいないものとする)
 サーバーと直接やりとりする、上記の方法では、パケット代の問題が出る。

 なので、これを無理やりやらせようとすると。。。

1.サーバー側にX01HTをおく
2.サーバー側のX01HTに、以下のようなアプリを作成し、置く
  ・メールを受信すると、その内容をファイルにして、サーバーに赤外線、
   あるいは無線LANで書き出す
  ・サーバーのあるところから、ファイルを受け取って、そのファイル内容
   にもとづき、内容を添付ファイルにして、指定されたケータイへ送る
  ・適当な時間ごとに上記処理を行う

3.サーバー側で2のファイルが書かれたかどうかを監視するプログラムを
  作成、書かれたら、それに基づき処理して、送り返すファイルを作成する

 っていう、アプリとサーバー側ソフトを作ることになる。
 しかし、これは、ファイル入出力をメールで行うプログラムに比べて、書くのが大変だろう。




 っていうことで、おとしどころは、

1.ケータイに、みんなが、最新のデータを持ってしまう。
2.必要な人が居たら、みんなにケータイでCCで転送してしまう。
  →みんな、予想外割に入っていれば、ただなのでOK
3.会社のサーバーは暇なときに、無線LANとか、社内にきてとかで、更新する

 つまり、サーバー側に最新を置くのでなく、みんなのケータイに最新のファイルを置いて、必要な人みんなにメールするっていう形になる。まさに、サーバーレス、P2Pっぽい考え方。




うーん、でも、その考えはさすがに、ぶっとんでるかなあ。。

ただ、料金が無料になる箇所を見極めて、システム構成を考えないと、お金がかなり、かわってきちゃいそうですね。




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

Javaの画面表示-その14:AWT,Swing,SWTによる複数画面方法のまとめ

2006-10-27 14:53:06 | JavaとWeb

シリーズJavaの画面表示のつづきです。
Javaの画面作成方法として、AWT,Swing,SWTを今までやってきました。
そして、それを通して、これらは、大体同じ方法できるということを示しました。

今回は、それらの画面表示における、共通的な方法と相違点、さらにBREWまでも含めた共通点について、考えてみたいと思います。




■画面作成における共通の考え方
 JAVAアプリで行う画面出力、すなわちAWT,Swing,SWTを使って、とくに、複数画面を表示する場合は、大きく、

(1)アプリ全体のクラス
(2)各画面のクラス

の2つに分かれます(BREWでも、同様な区別をします)
 このとき、各画面間のデータを読み書きするため、

(3)(画面間)共通領域

を作成します(これを、このブログでは、カオル姫方式と呼んでいます)
共通領域はJavaでは、ハッシュマップを使います
(BREWは、IKHMapというものを作りました)




■アプリ全体について
 アプリ全体のクラスでは、以下のようなメソッドを作成しました。

(1-1)アプリを起動するメソッド
  ・共通領域を生成する
  ・初期画面を呼び出す
  →Javaでは、main,BREWではアプリ_initAppData

また、今回は作りませんでしたが、
場合によっては(BREWの場合は必須)

(1-2)アプリ終了メソッド
  →BREWではアプリ_freeAppData

を作成することもあります。

さらに、今回は触れませんでしたが、複数画面の場合は、

(1-3)複数画面間のリンク関係

を処理するメソッドも必要な場合があります(*注として、後述)

そして、これは、BREWだけなのですが
(1-4)アプリのイベント処理メソッド
  ・各画面のイベント処理メソッドを呼び出す
  →BREWではアプリ_HandleEvent
  →Javaでは、システムがやることなので「ない」
というのがあります。




■各画面について

各画面には、以下の4ないし5種類のクラスが必要です
(2-1)画面初期表示メソッド
   ・ウィンドウを作成する
   ・画面部品を作成し、ウィンドウに付ける
   ・再描画処理を呼ぶ

(2-2)イベント処理メソッド(群)
   ・各イベントごとに以下の処理
      (2-2-1)画面入力値をチェックして共通領域へ
      (2-2-2)モデルの処理を呼び出し
        →モデルは共通領域の値を元に処理
         共通領域に結果設定
      (2-2-3)再描画処理
        (2-2-3-1)現在画面の再描画
          ・再描画処理呼び出し
        (2-2-3-2)次画面へ
          ・現在画面を消す必要があれば
           現在画面の終了処理メソッド
          ・単一画面の場合は、次画面の初期化
          ・複数画面のとき、
             表示していたら、次画面の再表示
             表示してなければ次画面の初期化

     
(2-3)終了処理メソッド
   ・ウィンドウを終了
   ・メモリ解放など

(2-4)再描画処理
   ・共通領域から値をセット
   ・再表示して、フォーカス設定

(2-5)(フォーカス移動の必要があれば)
  次カーソル移動項目決定




今回の例では、Javaの場合、
(2-1)コンストラクタ&initAppData
(2-2)内部クラスの各メソッド
(2-3)freeAppData
(2-4)DispAppData
(2-5)カーソル移動はどーでもいいので「なし」

また、BREWの場合は
(2-1)各画面_initAppData
(2-2)各画面_HandleEvent
(2-3)各画面_freeAppData
(2-4)各画面_DispAppData
(2-5)各画面_NextCurItem
となります。




つまり、各クラス、メソッドについては、AWTでもSWTでもSwingでも同じようにして
作ることが可能で、違いは
・ウィンドウの作り方(フレームを呼ぶか、Display,Shellとくるかなど)
・部品とウィンドウの結びつき
・イベント処理の継承対象や、メソッド名
といった、細かい部分の書き方程度の違いということになります。

そして、BREWにおいてすら、この考え方は同じような感じです
→なので今やってる、BREWのソース自動生成をちょっといじると、
 Javaのソース自動生成ができます。

むしろ、これらと、サーブレット、Strutsのほうが、考え方は大きく違います。
といったかんじです。




*注:複数画面間のリンク関係
 ユーザーごとに、第一画面と第二画面を提供するという場合、
 この第一画面は、どの第二画面とつながっているか?
 といった判断が必要になります。

 これを処理するのが、「複数画面間のリンク関係」メソッドです。

 具体的には、全画面に、一意になるような、画面IDをふります。
 そして、画面生成や、画面間の関係を付け替えたいとき、上記関数を呼んで、
 共通領域とリンク元の画面ID,画面の種類、リンク先の画面ID,画面の種類
 を引数として渡すと、共通変数に

  キー:リンク元の画面ID_リンク先の画面の種類 
  値 :リンク先の画面ID

 と、

  キー:リンク先の画面ID_リンク元の画面の種類 
  値 :リンク元の画面ID

 の2種類のデータをいれます。
 これによって、共通領域で、自分の画面(の画面Dは分かるから)の、次の画面は
 すでに表示されているか、表示されているとすればそのIDは?というのは
  自分の画面ID_次の画面の種類

 を共通領域から探せば分かる
 (帰ってきたIDが、その対象画面、NULLなら、その画面はない)
 というものです。

 画面を消去するときは、関係がなくなるので、それらを削除するメソッドも必要に
 なり、ちとめんどうです。



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

予想外割に他社が対抗するとしたら、Skypeと無線LANでメール搭載ケータイかな?

2006-10-27 09:38:20 | Weblog

 ソフトバンクの予想外割で、ソフトバンク内無料になったわけですが、
 これに、他の会社が対抗するとしたら。。。

 ソフトバンク間が無料になるっていうのに対抗して、他社も無料にしたら、大変なことのなっちゃいます。だとえば、Docomo間無料とかにしたら、かなり多くの通話が無料になっちゃいます。つまり、ソフトバンクは、加入者が少ないから、いまのところ、こういう芸当ができるということになりますよね。。

 だとすると。。。他に対抗策は?

1.ケータイに無線LANを載せて
  →ここまでは、「E02SA」、「N900iL」などが、法人向けで出てるから
   技術的には問題ない

2.そして、それにSkypeを載せて、ケータイで、Skypeができるようにする
  →無線LANを経由して

3.その無線LANで、プロバイダからメールも取れるアプリを入れとく

とすると、Skype会員間は、通話料無料、無線LANを使えばメール無料。
で、公衆無線LANサービスとケータイ、同時に入るプランを用意しておけば。。
家の中なら、無線LANの装置さえ買えば無料になるし、
外に出ても、その公衆無線LANを使えるところなら、ただ。。。
そーすると、その無線LANのアンテナを電話ボックスとかにつければ。。。

っていう感じですかねえ。。。「ようざん」あたりにがんばってもらう?



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

ソフトバンクの予想外割のまとめ(26日)

2006-10-26 23:58:41 | Weblog

 きのうのソフトバンクの予想外割のまとめのつづきです。

 今日は、新スーパーボーナスは発表になり、端末頭金が0円と言うのが発表になったことですね。
 あと、開始早々、好調のようです。




では、以下23日から現在までのまとめ

 昨日の段階では、こんなかんじ

<23日>
 2880円で、ゴールドプランに入ると、通話とショートメールがソフトバンク同士だと無料になると発表。

 この時点では、ゴールドプランは
(1)データ通信定額サービス「パケットし放題」
(2)「スーパー安心パック」
(3)留守番電話などの付加機能をパックにした「スーパー便利パック」
の3つに入らないといけない。かつ、上記3つは、解約できないといっていた。
なので、3つのサービス期間が終わると、2025円を追加した4905円(最低、これに
YAHOO!ケータイをつけるともっと高くなる)といっていた




<24日>
 本家に書いたとおり、ITPROによると、上記3つのサービスは、解約できる。
 つまり、解約して、2880円のままでもOKと、発表を変える。
 この変更になった理由は、ITPROの記事によると、ソフトバンクモバイル本社で、情報が錯綜していたため。。

・それにくわえ、S!メールも無料化になった(ソフトバンク間だと思うけど。当然)

・ケータイWatchに
ソフトバンクの「予想外割」は本当に安いのか
http://k-tai.impress.co.jp/cda/article/news_toppage/31660.html

という記事が出る。他社にかける場合は、高い




<25日>

ソフトバンク・ゴールドプランの落とし穴
http://e.willcomnews.com/

などというサイトが、Gooブログランキングに入ってくる。
ここでは、予想外割と、ウィルコムを比較している。




<26日>
・オープニングベルの中のコーナー、「日経でOK」(だったと思う)で、「ソフトバンク、
 大人だった」という記事が紹介される
 →ボーダフォン時代と比べると、実質値上げ
 →同様の記事、日本証券新聞10月27日号、(26日夜に出る)3ページ目、
  フィスコ相場情報の2段目<9984>ソフトバンクにも
  「今回の料金体系は、実質値上げ、割高などの見方は多い」と書かれる

・予想外割の「ゴールドプラン」になるためには、必須の「新スーパーボーナス」
 の内容発表、端末の頭金0円、特別割引により、解約しなければ、機種によっては
 結局、ただになるというプランであることを発表
 ここに詳しく書きました。

ソフトバンクの新料金プラン初日、量販店も予想外な大盛況
 だそうです。

いまここ




<27日(予定)>
ソフトバンク、東芝「810T」、サムスン「706SC」を発売




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

Javaの画面表示-その13:SWTによる画面表示(その3:複数画面を表示する場合)

2006-10-26 18:46:48 | JavaとWeb

 シリーズJavaの画面表示のつづきです。
 現在は、SWTについてやっています。

 前回、1画面用のソースを書いたのですが、これを使って、第二画面を出そうとすると、エラーになります。

 SWTとAWTを混在させ、SWT画面に対して、AWTの画面のプログラムから、何かさせるのは、いけなさそう。。。は、まだしも、
 SWTの第一画面とSWTの第二画面を同時にだしてもだめでした。

 どうも、Displayは、アプリで1個のようです。

 ということで、
  ・アプリ開始時にDisplayを取得して、
   それを共通領域のハッシュマップにいれます。
  ・各画面では、Displayをnewで生成するかわりに、共通領域からとってくる
  ・ウィンドウ(シェル)が破棄されたとき、ディスプレイも破棄していましたが、
   それを中止、そのかわり、アプリを抜ける(System.exit)ときにする。

 それと、いままで、画面を1つしか出さないとき、
  次の画面が出てから消していましたが、
  そうすると、同時に2つの画面がでて、おかしくなることがあるので、
 画面を消してから、次の画面を出すようにしました。

 以上の修正をすると、以下のようなソースになります。




■ソース

●まず、アプリ起動のプログラムは、こちら(test.java)
import java.util.*;
import org.eclipse.swt.widgets.*;

public class test{

	/*
	 * 	メイン処理
	 */
	public static void main(String[] args) 
	{
		HashMap map= new HashMap();

		//	モデルクラスの生成
		Shori shori = new Shori(map);

		//	共通領域への値設定
		map.put("username","ウィリアムのいたずら");

		//	フレームを作成する		
		Display ff	=new Display();
		map.put("display",ff);

		//	削除する		
//		map.put("dispose","yes");
		
		//	第一画面作成
		gamen1 g = new gamen1(map);
	}

}

(上記、< > ¥は、本当は半角です)

赤字は、複数画面出力のためのポイントです

以下の行
   map.put("dispose","yes");
をコメントにすると(上記の例)2つ(以上)の画面が同時に出せます。

もし、コメントをはずすと、画面は1つしか出ません
(次の画面を出すとき、前の画面を削除します)




●第一画面は、こんなかんじ(gamen1.java)
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

import java.util.*;

public class gamen1 {
	
	//	共通領域
	public HashMap	map = null;

	//	モデル
	public Shori	shori = null;	
	//	画面項目項目
	Display		ff;
	Shell		f;
	Button		b1;
	Button		b2;
	Text		t1;
	
	int		seikai 	=	0;
	int		phaseNo	=	0;
	int		curno	=	0;

	/*
	 * 	生成
	 */
	public gamen1(HashMap map)
	{
		this.map = map;
		map.put("gamen1",this);

		this.shori = (Shori)map.get("shori");

		initAppData();
	}

	/*
	 * 	表示
	 */
	public void initAppData()
	{
		
		//	フレームを作成する		
		ff	=(Display)map.get("display");
		f = new Shell(ff);
		f.setText("test");
		f.setSize(240,320);
		f.setLayout(null);

		//	アクションを作成する
		gamen1_HandleEvent al = new gamen1_HandleEvent();

		//	ラベル
		Label l1 = new Label(f,SWT.NULL);
		l1.setLocation(10,30);
		l1.setSize(100,30);
		l1.setText("早うちの練習");

		Label l2 = new Label(f,SWT.NULL);
		l2.setLocation(10,120);
		l2.setSize(150,30);
		l2.setText("これは、練習文です。");

		Label l3 = new Label(f,SWT.NULL);
		l3.setLocation(10,70);
		l3.setSize(100,30);
		l3.setText("以下の文を打とう!");
	
		//	テキスト
		t1 = new Text(f,SWT.NULL);
		t1.setLocation(10,160);
		t1.setSize(150,80);
		
		//	ボタン作成		
		b1 = new Button(f,SWT.NULL);
		b1.setLocation(120,70);
		b1.setSize(100,30);
		b1.addSelectionListener(al);
		b1.setText("挑戦する");

		//	ボタン作成		
		b2 = new Button(f,SWT.NULL);
		b2.setLocation(10,250);
		b2.setSize(100,30);
		b2.addSelectionListener(al);
		b2.setText("打ち終わった!");

		//	表示
		f.open();
		DispAppData();

	   	// ウィンドウが破棄されるまでループ
    	         while (f.isDisposed() == false)
    	         {
      		    if (ff.readAndDispatch() == false)
      		    {
        		       ff.sleep();
      		    }
	          }
//    	          ff.dispose();

	}

	/*
	 * 	再描画
	 */
	public void DispAppData()
	{
		//	画面間引数を受け取る		
		String rensyu = "";
		if ( map	!=	null )
		{
			rensyu	= (String)map.get("rensyu");
			if (rensyu	==	null )
				rensyu = "";
		}

		//	画面表示
		if ( t1 != null )
		{
			t1.setText(rensyu);
		}

	}
	
	/*
	 * 	終了
	 */
	public void freeAppData()
	{
		//	2度目にもとってきたときのため、初期化
		map.remove("rensyu");
		phaseNo	=	0;
		curno	=	0;

		String dis = (String)map.get("dispose");
		if ( dis == null )
			return;
		if ( dis.equals("yes")	==	true )
		{
			f.dispose();
			map.remove("gamen1");
		}
	}
	
		
	/*
	 * 	イベントリスナー
	 */
	private class gamen1_HandleEvent 
			extends SelectionAdapter
	{

		/*
		 * 	ボタンが押されたときの処理
		 */
		public void widgetSelected(SelectionEvent e) 
		{

			Object o = e.getSource();

			if ( o.equals(b1)== true)
			{	//	挑戦する
				System.out.println("挑戦する");
				
				//======================//
				//	内容の取得     //
				//======================//
				map.put("rensyu",t1.getText());
				
				//======================//
				//	処理  	      //
				//======================//
				if ( shori	==	null )
					return;
				shori.shori1();

				//======================//
				//	次の画面処理   //
				//======================//
				phaseNo	=	1;
				curno	=	1;
				DispAppData();
				return;
			}

			if ( o.equals(b2)== true)	
			{	//	打ち終わった!

				//======================//
				//	内容の取得     //
				//======================//
				map.put("rensyu",t1.getText());

				//======================//
				//	処理	      //
				//======================//
				if ( shori	==	null )
					return;
				shori.shori2();
				
				//======================//
				//	次の画面処理   //
				//======================//
				//	先に消す
				freeAppData();

				//	第二画面表示
				gamen2 g2 = (gamen2)map.get("gamen2");
				if ( g2 == null )
				{
					g2 = new gamen2(map);
				}
				else
				{
					//	再描画
					g2.DispAppData();
				}
			}
		}
	}
}

(上記、< > ¥は、本当は半角です)
前回の1つの画面表示のケースと違うところは、赤色にしてあります。



●第二画面は、こんなかんじ(gamen2.java)

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

import java.util.*;


public class gamen2 {

	//	共通領域
	public HashMap	map = null;

	//	モデル
	public	Shori	shori=null;
		
	//	画面項目項目
	Display		ff;
	Shell		f;
	Label 		l1;
	Label 		l2;
	Button		b1;
	Button		b2;

	/*
	 * 	生成
	 */
	public gamen2(HashMap map)
	{
		this.map = map;
		map.put("gamen2",this);

		this.shori = (Shori)map.get("shori");

		initAppData();
	}

	/*
	 * 	表示
	 */
	public void initAppData()
	{

		//	フレームを作成する		
		ff	=(Display)map.get("display");
		f = new Shell(ff);
		f.setText("test");
		f.setSize(240,320);
		f.setLayout(null);

		//	アクションを作成する
		gamen2_HandleEvent al = new gamen2_HandleEvent();

		//	ラベル
		l1 = new Label(f,SWT.NULL);
		l1.setLocation(10,30);
		l1.setSize(220,30);

		l2 = new Label(f,SWT.NULL);
		l2.setLocation(10,120);
		l2.setSize(220,30);

		//	ボタン作成		
		b1 = new Button(f,SWT.NULL);
		b1.setText("再挑戦する");
		b1.setLocation(10,250);
		b1.setSize(100,30);
		b1.addSelectionListener(al);

		//	ボタン作成		
		b2 = new Button(f,SWT.NULL);
		b2.setText("終了");
		b2.setLocation(130,250);
		b2.setSize(100,30);
		b2.addSelectionListener(al);

		//	表示
		f.open();
		DispAppData();

	   	// ウィンドウが破棄されるまでループ
    	         while (f.isDisposed() == false)
    	         {
      		        if (ff.readAndDispatch()	==	false)
      		        {
        		             ff.sleep();
      		        }
	          }
 //   	          ff.dispose();
	}

	/*
	 * 	終了
	 */
	public void freeAppData()
	{
		String dis = (String)map.get("dispose");
		if ( dis == null )
			return;
		if ( dis.equals("yes")	==	true )
		{
			f.dispose();
			map.remove("gamen2");
		}
	}
		
	/*
	 * 	再描画
	 */
	public void DispAppData()
	{
		//	画面間引数を受け取る		
		String username = "";
		String sei_ritu = "";
		String byo = "";
		if ( map	!=	null )
		{
			username	= (String)map.get("username");
			if ( username	==	null )
				username	=	"";

			sei_ritu	= (String)map.get("sei_ritu");
			if ( sei_ritu ==	null )
				sei_ritu 	=	"";
				
			byo	= (String)map.get("byo");
			if ( byo ==	null )
				byo 	=	"";
		}

		//	画面表示		
		if ( l1	!=	null )
		{
			l1.setText(username + "さんの結果");
		}
		if ( l2	!=	null )
		{
		   l2.setText("正解率"+sei_ritu+"%"+"時間"+byo+"秒");
		}
	}
	
	/*
	 * 	イベントリスナー
	 */
	private class gamen2_HandleEvent 
			extends SelectionAdapter
	{

		/*
		 * 	ボタンが押されたときの処理
		 */
		public void widgetSelected(SelectionEvent e) 
		{

			Object o = e.getSource();

			if ( o.equals(b1)== true)
			{	//	挑戦する
				System.out.println("再挑戦する");

				//	消す
				freeAppData();

				//	第一画面表示
				gamen1 g1 = (gamen1)map.get("gamen1");
				if ( g1 == null )
				{
					g1 = new gamen1(map);
				}
				else
				{
					g1.DispAppData();
				}
				return;
			}

			if ( o.equals(b2)== true)	
			{	//	打ち終わった!
		    	         ff.dispose();
				System.exit(0);
			}
		}
	}
}

(上記、< > ¥は、本当は半角です)
赤字は、複数画面のためのポイントです。



これで、SWTも複数画面が出ました。
めでたしめでたし。
ということで、SWTのお話もここでおしまいです。

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

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その3:使い方)。

2006-10-26 16:50:48 | ケータイ

 シリーズ仕様書からプログラムソースを生成する方法のつづきです。
 前回はExcel仕様書からプログラムソースを生成するマクロを、公開してみると題して、マクロを公開したので、今日は、そのマクロをどのようにExcelに貼りこんで使うかについて、書きたいと思います。




●雛形ファイルについて
 前回の「仕様」で、以下の雛形ファイルと書かれている内容をコピーし、
 自分の、「マイドキュメント」の下に、hina1.txtという名前で保存してください
 (それ以外だと、場合によっては、雛形が見つからないことがあるので)




●Excelファイルの作成

1.Excelを立ち上げます。

2.下図のようにツール→マクロ→Visual Basic Editorを選択し、
  マクロのエディタ(VBE)を表示させます。


3.VBEの左にあるプロジェクトのウィンドウで、VBA Projectを選択
  クリックして(普通のクリックでは出ない)、挿入、
  標準モジュールを選択する


  そうすると、プロジェクトのウィンドウに、「標準モジュール」
  Module1というのができて、右側に、真っ白いウィンドウができる

4.その真っ白いウィンドウに、昨日の「マクロのソースコード」の
  枠内のマクロをコピーして、
  VBEへ「編集」→「貼り付け」する

  正しければ、ちゃんとプログラムがはり付く。
  おかしいと、赤字で表示される。そしたら、ちゃんとコピーされてない

5.ここで、一回保存しましょう。
    ファイル→Book1の上書き保存
  または、
    フロッピーのアイコン
  をクリックすると、ファイルダイアログが出るから、
  「マイドキュメント」フォルダの下に、適当な名前をつけて
  (めんどくさかったらBook1.xlsでもいいけど)保存します。

6.そしたら、
    ファイル→終了してMicrosoft Excelに戻る
  を選択し、VBEを終了させます。

7.Excelが出てきたら、Sheet1と書いてあるタブを右クリック
  して、「名前の変更」と出てきたら、それを選択、シート名を

     画面一覧

  に変更します。

8.下図のように、昨日のExcelデータと同じように、ボタンの
  ところ以外を編集します。
  行と、桁を間違えないでくださいね(間違うと、ちゃんとできません)


9.表示→ツールバー→フォームを確認してください
  下図のように、フォームにチェックが入っていなかったら、フォームを選択します。

  そうすると、チェックされて、フォーム(ボタン等)のメニューが出ます

10.下図のように、フォームのメニュー(こことは限りません。横になって、上に
  あるケースもあります)から、ボタンをクリックします。


11.そうすると、十字カーソルが出ますので、適当なところでクリックし、その後
  適当な大きさのところまでドラッグして離します。

  そうすると、下図のような、ボタンができて、ダイアログが開きます。

  はじめ、ボタン1_Clickのように書かれているのですが、
  下のリストから、shiyoToFileをクリックします。
  そうすると、上も、ボタン1_ClickからshiyoToFileと書き直されますので
  そしたらOKボタンをクリックします(するとダイアログが消えます)

12.ボタン1とか、ボタンに書かれている文字のところをクリックすると
   ボタンの中にカーソルがいきますので、そこを

      ドキュメント作成

   に書き直します(この12の作業はしなくても問題ないです)。

13.ここで、「ファイル」→「上書き保存」を選択し
   (または、フロッピーアイコンをクリックし)
   いったん、保存させましょう。

14.一度、どこでもいいですから、セルをクリックしてください。
   その後、ボタンの上にマウスポインタを持っていき、クリックします。

15.そうすると、「終わりました」というダイアログが出るので、
   それをクリックすると
   マイドキュメントの下に、out1.txtというファイルができてると思います。




 そうならなかったら、どこかおかしいです。
 雛形とExcelファイルがマイドキュメントの下にないと、おかしいときがあります
 その場合、Sub shiyoToFile()の以下の行、

   Call makefile("hina1.txt", "画面一覧", "out1.txt")

  のところのhina1.txtをフルパスにすれば、大丈夫だと思います。
  同様に、out1.txtが見つからないときは、書き出したいパスを、
  out1.txtのところに、フルパスで指定してください。




 このシリーズの次回は、マクロの内容説明です。




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

ソフトバンク、26日のサプライズは、端末が0円ってこと?

2006-10-26 14:25:55 | Weblog

結局、事実上、端末が0円になるということなのだろうか?
で、それが、今日のサプライズなんだろうか。。。

ここのニュース
ソフトバンク、「新スーパーボーナス」は頭金0円の分割払い
http://k-tai.impress.co.jp/cda/article/news_toppage/31686.html



によると、昨日書いた、「新スーパーボーナス」、結局、間違いで、
(わかっていなかった ^^;)
詳細は、こうなるようだ。




まず、昨日書いた話。

現在のスーパーボーナスでは、

・購入時に頭金を払う
・残りを24分割し
・継続なら、割引で事実上0円、ただし、解約時には、分割した、お金を払う

というものだった。これは、正しい。




で、今回の新ボーナスプランは、

(1)頭金0円、要りません

(2)残りを分割払い、ただし、特別割引はあって、割り引いてくれる
   →注意!ハイエンド機の場合、分割払い-特別割引>0
    つまり、負担金がでる機種もある(出ない機種もあるみたい)
   →さらに注意:ただし、ポイントが活用できて、それを活用すると
    やっぱり、ユーザー負担は事実上0になるそーな
    (と、上記記事に書いてある)

(3)解約の場合は、残りの分割金を一括返済する。
   なので、お金を払うけど、その場で、清算するので、後は関係ない
   一方機種変更は、負担金がいろいろ変わって、よくわかんない、
   複雑だ。。。




 というわけで、頭金が0円ですぐに持ち帰れて、ずーっと使い続ければ、
結局端末は0円っていうことになる。。。

 ちょっとまてよ、頭金0円なら、街中で、配ってもOKってことに
ならないか(^^;)

。。。それはないって(^^;)!


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

類似ブログを自動検索 KDDI研

2006-10-26 12:39:53 | Weblog

ここのニュース
類似ブログを自動検索 KDDI研、2年以内に実用化
http://headlines.yahoo.co.jp/hl?a=20061026-00000002-fsi-bus_all


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

 インターネット上に個人が開設しているブログ(日記風の簡易型サイト)などを総合的に分析し、類似するブログ開設者を自動検索する技術を開発した。この技術を使えば、興味や趣向、性格的に似たブログをネット上から検索、抽出でき、ブログ開設者同士の交流促進や閲覧数拡大につながりそうだ。


だそうな。しくみは


 新技術は、ブログに記された文章の娯楽度や芸術度、教育度、科学度、政治度、感情度といった14の項目から全体を分析、それぞれの要素を数値化し、その数値の分布が類似しているブログを抽出する。

 さまざまな分類辞書を活用し、文章自体の内容を総合的に判断することで、文章中のキーワードなどに左右されず、全体像が類似したブログを探すことが可能になったという。


なんだって(^^)

ほー。これができれば、おもしろそう。。。
こーいうのを、情報大航海でやれば、よかったのに。。

P.S この方法なら、そのうち、ネカマ度、アレゲ度とか、さらに違った、いろんな項目を総合判定するっていう方法もでてきそう。。いろいろ、応用、多そうですね!


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

予想外割のソフトバンク間のメール無料って、ケータイアドレスポータビリティ使ってもOK?

2006-10-26 09:18:39 | Weblog

 ソフトバンクモバイルの予想外割って、ソフトバンク間のメールも無料っていってるじゃないですか?

 そこで、疑問なんですけど、最近ケータイアドレスポータビリティってありますよね。

 MNPを単純にやるとケータイアドレスが変わってしまうけど、このケータイアドレスポータビリティをすると、キャリアを変えてもメールアドレスが変わらないというもの。

 で、そーすると、たぶん、それを利用して、DocomoやauからMNPで来た人は、メールアドレス、YAHOO!ケータイの標準的なカタチとは違ってくると思うんだけど、その人から送られてきても、ソフトバンクは、ちゃんと「うん、これは、アドレス違うけど、ソフトバンクから来た人だ!」って認識して、通話料無料にしてくれるんだよねえ。。

 きっと。。。そーなのかなあ。。どーなのかなあ。。
 

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