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

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

線形回帰、非線形などのモデル間の関係

2012-01-24 16:15:52 | そのほか
こういうことらしい。

一般化線形モデルというのが、
 説明変数と目的変数が内積の和の形でかけるもの。

非線形モデルというのは、
 説明変数と目的変数が内積の和の形でかけないもの

らしい。




で、一般化線形モデルの場合、

単純に、説明変数と目的変数が内積の和の形で書くと、
線形回帰、つまり
単回帰(説明変数1つ)や重回帰(説明変数2つ以上)になるし、

ロジット変換して、指数の肩に説明変数と目的変数が内積の和の形で
かかれるようになると、ロジスティック回帰になる。

線形回帰は、マイナスの値になってしまったりする。
そういうことがないように、0~1の範囲に収めたのがロジスティック回帰で、
ロジスティック回帰の場合、0または1(YES、NO)の2値の場合にも使える
ただし、その場合、分布は、ベルヌーイ曲線になる。




で、これらの場合、個々のデータをもとに、回帰式をもとめられる。
→推定

求め方としては、最小2乗推定法や、最尤推定法があるが、
最尤推定法は分布を仮定している(正規分布)




Rにおいては、一般化線形モデルを行う場合は(例は「ロジスティック回帰」の場合)、

   glm(y~x1+x2,family=binomial)

のような形で、できる
y~x1+x2のように、説明変数をならべていく。

もし、これが面倒なら、data.frame(dat)で、データフレームを作ってしまって、
(このデータフレームがdatにはいっているとして)

   glm(y~.,family=binomial,data=dat)

としてしまえばいい

また、binomialは、ロジスティック回帰で、デフォルトは、線形回帰になる。

で、この結果をsummaryで出せば、回帰式がわかるし、
predictでやると、予測値が出る。

もっと一般的な式をやる場合は

   nlm(式,データ,初期値)

の形で書く。




って、先週ならった(いままで、書きそびれた)


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

node.jsでCassandraにアクセス その1 とりあえず、読んでくる

2012-01-24 11:11:57 | そのほか
流れとして、たぶん、node.js内で、Cassandraにアクセスするんだろうなあ~と思った、そこのあなた。
そうです。今日は、それをやります。

それをやりますが、ここ


Is there a Thrift or Cassandra client for Node.js/JavaScript
http://stackoverflow.com/questions/2947470/is-there-a-thrift-or-cassandra-client-for-node-js-javascript


をみると、2とおりのやり方があるらしい。

1つは、

node-thrift
https://github.com/wadey/node-thrift

を使う方法。

もうひとつは、

Rackspaceが出しているAPI

cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/

をつかうというもの。おお、Rackspace・・ということで、後者のほうで行きます。




■ダウンロード&インストール

さっきの、

cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/

をみると、npmでインストールしなさいと書いてある。

は~い!というので、node.jsのフォルダにいって、

npm install cassandra-client

と打ってみた。

いっぱいいろんなのも出て、警告も出たけど、なんかインストールできたみたい。





■ソースコード作成

さっきのサイトにソースコードのサンプルが書いてあるんだけど、
そのとおりやると、ぜんぜんうまく行かなかった。

結局、こんなかんじになった。

var http = require('http');
var Connection = require('cassandra-client/node-cassandra-client').Connection;

var server = http.createServer(
    function (request, response) {
	response.writeHead(200, {'Content-Type': 'text/plain'});
	var con = new Connection({host:'localhost', port:9160,keyspace:'Keyspace1'});
	con.connect(function(err) {
		if (err) {
			response.write("err1:"+err);
			response.end();
		} else {
			con.execute('SELECT * FROM Users ', [ ], function (err, rows) {
				if (err) {
					response.write("err2:"+err);
				} else {
	       				response.write(rows[0].cols[0].name+":");
	       				response.write(rows[0].cols[0].value+"¥n");
	       				response.write(rows[0].cols[1].name+":");
	       				response.write(rows[0].cols[1].value+"¥n");
    				}
				response.end();
			});
		}
	});
    }
).listen(8124);

 ¥は、全角でかいてあるけど、本来は半角なので、置換してください
(まあ、しなくても、変な感じになるだけで、動くけどね(^^;)

上記のサイトと変えたのは、

1.var Connectionのrequireを、cassandra-client/node-cassandra-clientと、
  cassandra-clientを指定したこと。置き場の問題?

2.con.connectが終わってから、その中の関数で、con.executeを呼んだ。
  いや、こうしないとだめでしょ。とってこない前に動いてしまう。

3.SQLと結果表示
  中身を出してみました。




■動かし方

1.まず、cassandraを起動します。
  いつものとおり、コマンドプロンプトから、cassandra.batを起動するわけです。

2.node.jsを起動します。
  コマンドプロンプトから「node 上記に書いたファイル」で起動するわけです。

The "sys" module is now called "util". It should have a similar interface.

  って表示されるけど、ま、気にしないことにしよう

3.ブラウザで、アクセス。

   http://127.0.0.1:8124/

  をブラウザで見る。
  2で起動した、コマンドプロンプトに

node-cassandra-client.driver: connecting localhost:9160 {}

  とでる。そしてブラウザは

なかんじで、アクセスできる。

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

JavaでCassandraにアクセス その1 とりあえず、読んでくる

2012-01-23 16:47:12 | そのほか
今までで、Cassandraにデータを入れたり、見たり出来たので、
今度は、Javaで操作することを考えます。

1.eclipseで新しくプロジェクトを作ります。

2.そのプロジェクトに、必要なjarを入れていきます。

ここ

http://www.ne.jp/asahi/hishidama/home/tech/apache/cassandra/java.html

の「ライブラリー」に書かれているjarを入れました。

eclipseで、左側のパッケージエクスプローラーから1で作ったプロジェクトを右クリック、
プロパティを選択。
プロパティダイアログが出たら、左側でJavaのビルドパスを選択
ライブラリータブをクリックして、「外部Jarの選択」ボタンをクリックして、
こんなかんじで入れました。

ちなみにこれらのjarは、cassandraの下のlibにあるものを指定してあります


3.プログラムを作成する
 上記サイトにあるプログラムは、うまくコンパイルできなかった。
 そこで、

Cassandra0.7.0のJava APIサンプル
http://blog.ik.am/entry/view/id/52/title/Cassandra0.7.0%E3%81%AEJava+API%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/




「1列から特定のカラムのみ取得」をコピーし、
  クラス名を自分の作ったクラスに変えて、
// キースペース名
String ksName = "Keyspace1";
// カラムファミリ名
String cfName = "Users";
// キー名
String keyName = "jsmith";
// カラム名
String cName = "first";
 に書き換えた(下の例では、importも若干まとめてある)
 
4.Cassandraのサーバー側を立ち上げる
  いつものようにcassandra.batで

5.このプロジェクトを実行すると・・
 どれを動かすか聞いてくるので、このプロジェクトで作っているクラス名のものを選ぶと
 こんなかんじ

 で動きました。
 (なんか、瞬間なにかがでてるんだよなあ~・・・早くて見えん。
  何か間違ってるのかも??)



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

JUnitからJPFへ-というより、数十年に1度のパラダイムシフトについて

2012-01-23 12:31:55 | そのほか
 最近のソーシャルブームにより、分散による、並行処理的な問題を考えざるを得なくなってきた。

 Javascriptやスマートフォンは、同時に複数のプログラムを並列処理し、それらが関係している状態になっている。

 たとえば、スマートフォンのAndroidでいえば、サービスを起動し、裏で処理、ブロードキャストレシーバーによって、表の処理に通知するというのは簡単に出来るし、たぶん、いろんなアプリで多用されていることだろう。

 Javascriptにおいては、処理が終わったら、この関数を実行してね!という形のプログラミングが出来る、というより多用されている。これにクロージャを合わせると、並列化している処理が、クロージャの変数を共用することになる。

 組み込みの世界では、このような事態は当たり前だったのだろうが、それが、ソーシャルアプリの世界まで入ってくる。そのうち、業務アプリにも、入ってくるだろう。スパートフォンとJavascriptは。




 ここで問題になるのは、JUnitなどのテストだ。

 JUnitは、メイヤーさんのDbCの考えに基づいている。
 この事前条件、事後条件とかいう概念は、Hoare論理までさかのぼれると思うが、
 この論理は、あくまで副作用なしの話だ。

 つまり、

  ・事前条件を調べたときは、OKだった。
  ・アプリAが動いていないときは
  ・事後条件をみたす。→緑

 でも、

  ・事前条件を調べたときは、OKだった。
  ・アプリAが動き、クロージャー変数Xを変更すると、そのXを使っているため
  ・事後条件をみたさなくなった。→赤

 というケースがJUnitではありえる。環境によって、緑になったり赤になったりということだ。
 この場合、いまAが悪さしているとわかっているので、簡単そうに見えるが、
 これが、判らなかったとしたら・・・
 JUnitで調べるのは、たいへんそうだ・・・





 Hoareさんは、そのため?かどうかわからないが、もうひとつ、重大な方向性を示してくれた。
 それが、プロセス代数だ。
 CSPとかだけど、こういう感じのチェック(つまり、並列に動くもののチェック)ができるのが、
モデル検査であり、様々出ている。

 Javaだと、Java Path Finder(JPF)などなど。




 この、手続き型から、そうでないものへの変化は、すごい大きな変化であって、
数十年に1度の変化といえる。
 まさに、パラダイムシフトだが、このシフトはおきるだろうか

 ・・・という話をいつかまた、書いてみたい
 (ちなみに、起きる!と思っている)

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

Cassandraで cannot parse '何とか' as hex bytes の対処法2

2012-01-20 16:49:32 | そのほか
昨日の話

Cassandraで cannot parse '何とか' as hex bytes の対処法1
http://blog.goo.ne.jp/xmldtp/e/df3e920452d6c088ee94c833ec95c099

のつづき。

Cassandraにデータを入れるには、

1.キースペースを作成する(スキーマに相当するらしい)
2.カラムファミリーを作成する(テーブルに相当するらしい)
3.データをセットする

なので、これをやってみたら、

org.apache.cassandra.db.marshal.MarshalException: cannot parse 'first' as hex bytes

というエラー表示が出る。

これに対する対処法は2つあって、1つは

set Standard2[jsmith][ascii('first')] =ascii('John');

とascii指定すればいいけど、これだと、

get Standard2[jsmith];

としたとき、カラム名が16進で出るのでX

ということだった。


今日は、対処法2




■対処法2:カラムファミリーを作成するときに、指定をいれる。

 前回は、カラムファミリーを作成するときに

create column family Standard2;

 と、何も指定せずに作成した。でも、これ、UTF8指定とか出来る。

 つまり、

create column family Users with comparator=UTF8Type and
default_validation_class=UTF8Type and key_validation_class=UTF8Type;

と指定してから、

set Users[jsmith][first]='John';

とすると、データが入るし、

get Users[jsmith];

とすると、

(column=first, value=John, timestamp=1326938881921000)

と、カラム名も16進にならずに表示される。





■参考サイト


Cassandra-0.8.7 (2) README.txt
http://privnotes.blog.fc2.com/blog-category-7.html



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

ペルソナマーケティングの検証として、ライフログを使えば、ビッグデータ大儲け?

2012-01-20 10:29:52 | トピックス
 コンピューター・ネットワーク屋さんは、ビッグデータというと、そのデータを「ごにょごにょして・・」という、データ(テキスト)マイニング的アプローチをすぐに思い浮かべるのではないだろうか?
 日経コンピューター2012年1月19日号(創刊800号なんだって!)も、海外マーケティングとM2Mの文脈でビッグデータを取り上げているが(P16)

 しかし、マーケティングは、データマイニング、テキストマイニング以外に、まったく違った流れが、今おこっている。それが、ペルソナマーケティングだ。

「ペルソナ」マーケティングを知っていますか?
http://itpro.nikkeibp.co.jp/article/COLUMN/20071029/285663/

(以下太字は、上記サイトより引用)

 記事自体、2007年だし、ペルソナ分析とかは、もう昔の言葉なので、もはやなじみのマーケティングかもしれないけど、要するに、この分析は、

 定量的なデータから、会社にとって重要な顧客セグメントを見つけ出し、
 その中から数人の定性的なデータを、
    インタビューしたり商品の利用状況を観察したりといった方法で取得する。
 定量・定性の両方のデータを組み合わせてペルソナを作り、
 彼(もしくは彼女)が満足するように商品を設計する。

といった手法で、とくに、ペルソナに関して、

ペルソナを記述するシートには、名前や趣味、価値観を示すエピソードが書き込まれ、ペルソナのイメージに近い写真も張られる。このシートを見てマーケティング担当者が、ペルソナに感情移入することが狙いとなる。

感情移入して、こういう人は、こういう商品が欲しいんじゃないかって考えるわけ。

 いままでのデータは、過去のデータ”こういう人は、この商品を買っています"という過去ないしは現在の商品分析しか出来ない。それに対して、このペルソナ分析だと、マーケティング担当者が、「いや、この人なら、こういう商品が、欲しくなるんじゃないか?」っていう未来の予測が出来る点が魅力になる。

 もちろん、本人に聞いちゃえばいいじゃん!と考えるかもしれないが、「商品企画の段階では、次の商品のコンセプトなんて、企業機密なんで言えない」って考えるのが、従来のおりこうさんの考え方。
 今は、「いや実は、客自体も、自分が欲しいかどうかは判ってないんだよ、その商品が出てきて使ってみるまで!」というのが、答えになりつつあるんじゃないかな?




 このペルソナマーケティングにおいて重要なことは、

間違えたペルソナを作ってしまったらマーケティング戦略は破綻するかもしれない。

 ってことだ。間違ったペルソナには、2種類ある

 1つは、主要顧客でないペルソナを作ってしまう危険性。
 これは従来の多変量解析などを駆使した統計手法で確認できる。

 もう1つは、ペルソナの属性や、価値観を示す部分の間違い。
 これは、マーケティング担当者が作るので、間違いが入りやすい。
 なので、このマーケティング手法の応用として、日記をつけてもらい、それで解析する方法もある。

 ・・・日記、大変でしょ(^^;)

 この問題を解決する技術が、「ライフログ」だと思う。





GPSログこそ最強のライフログ!GPS Recorder Xにお任せあれ
http://punksteady.com/2012/01/20/gps-recorder-x/


 とあるように、その人が、どこにいたか?情報を集めたGPSログこそ、ライフログといえよう。
 GPSから、どこにいたか(六本木ヒルズとか、ディズニーランドとか)を推測すれば、日記の出来上がり!本人に確認を取れば、精度もあがるけど、まあ、予測はつきますよね。
(スケジュールとリンクさせるといいんだけどね・・・)

 また、

筑波大学、学生が開発したAndroid向けライフログアプリ「REAL10」をリリース
http://news.ameba.jp/20120120-105/

は、たぶん、おあそびアプリだろうけど、ペルソナ分析用に項目を変えてしまえば、
集めたい情報が入れられたライフログになる。




 で、問題は、この情報をどこにおくか・・・だ。
 大量データなので、クラウド上において、ビッグデータとして処理することになる。

 おらおら、大儲けできそうでしょ。コンピューター屋さんが・・・

 SIerさんが、アップしはじめそうです。

※って、まじめに考えたSIerさん、売りに行くんなら、調査会社じゃないです。
調査会社、いま忙しくて、お金ないです。
リクルートとか、電通、博報堂とか、お金もっていそうで、マーケティング強そうなところに、
売りに行ってくださいね!


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

Cassandraで cannot parse '何とか' as hex bytes の対処法1

2012-01-19 11:40:40 | そのほか
きのうのCassandraをたちあげてみるのつづき。

データをいれるためには、

1.キースペースを作成する(スキーマに相当するらしい)
2.カラムファミリーを作成する(テーブルに相当するらしい)
3.データをセットする

という3段階でできるようです。
やってみましょう。




■やってみると、cannot parse '何とか' as hex bytes

・まず、コマンドプロンプトを立ち上げ、
cd "C:¥Program Files¥Apache Software Foundation¥apache-cassandra-1.0.7¥bin"
cassandra.bat

(¥は、本当は半角 cdのあとのパスは、cassandraのbinがあるところ)
で、サーバー側を起動。



・別のコマンドプロンプトを立ち上げ

cd "C:¥Program Files¥Apache Software Foundation¥apache-cassandra-1.0.7¥bin"
cassandra-cli.bat

(¥は、本当は半角 cdのあとのパスは、cassandraのbinがあるところ)
で、クライアント側を起動。

[default@unknown]

と出てくるので、

connect localhost/9160;
create keyspace Keyspace1;
use Keyspace1;
create column family Standard2;
set Standard2['jsmith']['first'] = 'John';

(入力する内容だけを書いています。;を打つたびに、それなりの出力が表示されます)


と入力すると、


org.apache.cassandra.db.marshal.MarshalException: cannot parse 'first' as hex bytes

とエラー表示されます。

はじめに、コネクトして、
つぎに、Keyspace1というキースペースを作成
useでそのキースペースに入り(このへんMySQLと同じ)
さらに、Standard2という、カラムスペースを作って
値をセットしただけなのに、怒られました。

どうしましょう・・・




■対処法は2つ。

ここ

High Performance Cassandra Blog
Errata
http://www.jointhegrid.com/highperfcassandra/?page_id=34


に対処法が2つ書いてあります。

対処法1:ascii()でいれろ
対処法2:Create column familiesでUTF8Typeを指定する
     (リンク先は、アメリカなのでAsciiTypeになっている)

まず、対処法1でやってみましょう。




■対処法1:ascii()でいれろ→確かに入る・・・けどお・・

まあ、すなおに、対処法1をやってみましょう。


set Standard2[jsmith][ascii('first')] =ascii('John');


と入力すると、たしかに


Value inserted.
Elapsed time: 110 msec(s).


とか、表示されますが、このとき、


get Standard2[jsmith];


と入力すると、


=> (column=6669727374, value=John, timestamp=1326875173953000)
Returned 1 results.


と表示され、columnのfirstが、見えなくなって(16進になって)しまいます。
だめじゃん・・・

(対処法2につづく)

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

Cassandraをたちあげてみる

2012-01-18 17:31:34 | そのほか
このサイト

Apache Cassandra
http://www.ne.jp/asahi/hishidama/home/tech/apache/cassandra/index.html

を参考にして、Cassandraを立ち上げるところまでやってみた。
そのメモメモ。
(ちなみに、WindowsXPで、Javaは1.6が入っている)




■ダウンロード

ここ

http://cassandra.apache.org/

にいくと、右側に、おおきな「Download」と緑色に書いてあるところがあったので、
そこをクリック

Apache Download Mirrors

と書いたページに来た。そこにミラー一覧があったので、とりあえず

http://ftp.riken.jp/net/apache//cassandra/1.0.7/apache-cassandra-1.0.7-bin.tar.gz

をクリック。保存するよう聞いてきたので、保存。

ダブルクリックしたら、解凍出来た。

その解凍出来たフォルダ「apache-cassandra-1.0.7」を、
C:¥Program Files¥Apache Software Foundation
の下にいれた。べつに、ここでなくても、どこでも良いんだと思う。




■環境設定

 コントロールパネルを開き、「システム」を選択して
 詳細設定→環境変数ボタンをクリックして、
 環境設定ダイアログを出したら、ユーザー環境設定で、
   CASSANDRA_HOME
 と、
   JAVA_HOME
 を設定する。CASSANDRA_HOMEは、今入れたところ、例で言うと、
   C:¥Program Files¥Apache Software Foundation¥apache-cassandra-1.0.7
     (¥は本当は半角)
 JAVA_HOMEは、Javaがはいっているところ。私の場合は、
   C:\Program Files\Java\jdk1.6.0_21
 を設定する。




■cassandra立ち上げ

 コマンドプロンプトを立ち上げ、
 パスが貼ってあれば、どこからでもいいけど、今パスが貼っていないとして、

 cd C:¥Program Files¥Apache Software Foundation¥apache-cassandra-1.0.7¥bin

 でCassandraのbinのフォルダまでいく。そうしたら、

cassandra.bat

 とうつと、立ち上がる。上記(一番上)の「Apache Cassandra」のサイトでは、8080云々とかいてあるが、今、そのポート(8080)を(たぶん)使っていないので(って、自分のパソコンなのに、把握していない ^^;)、なにもしなくても立ち上がった。

 たちあがると、ログファイルが
  C:¥var¥log¥cassandra¥system.log
 にできている。




■クライアント側の立ち上げ

やはり、

 cd C:¥Program Files¥Apache Software Foundation¥apache-cassandra-1.0.7¥bin

 でCassandraのbinのフォルダまでいく。そうしたら、

cassandra-cli.bat --host localhost --port 9160

とうつと、

[default@unknown]

とでてくる。そこで、

show keyspaces;

とうつと、いろいろでてくる。

※注意
最後に;を必ず入れること(上記サイトでは明示していないが)
でないと、

......

と表示され、何も帰ってこなくなる

quit;

でぬける




きょうは、ここまで。



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

みんな、瞬電、大丈夫だった?

2012-01-18 13:04:11 | Weblog
きのう、瞬電あったでしょ・・・

東電 広範囲で瞬間的な停電
http://www3.nhk.or.jp/news/html/20120117/t10015342931000.html

大丈夫だった?

下手に瞬電→シャットダウンされると、
立ちあげなおしたとき、
おかしくなったりして・・・


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

テストとしてのシミュレーション→モデル検査?

2012-01-18 11:05:47 | Weblog
 プログラムがコピペなどで作られると、かならずしも、境界値などでテストするだけでは
十分ではなくなる。コピーしたとき、消し忘れて、コピー元の数字が残っているとかも、
あるかもしれない。

 そこまで考えてしまうと、テストは、境界値の値だけで判断するわけには行かなくなる。全ての値(といっても、ある程度限定されるが)を連続的に調べるっていうことになる。


 たとえば、
   20歳以上、65歳未満は、200円
   その他半額
 という場合、
いままでだと、19,20,21、65くらい(場合によっては64,66も)を調べていたが、
そうなってくると、0~120くらいまでを調べることになる。(100才なんて、エラーが起こりそうだ・・)

 むかしは、それができなかったが、テストの自動化と、パソコン等の処理スピードの速さでそれが可能になった。
 で、そうなってくると、もう、テストとはいえず、シミュレーションになる。

 そのうち、変数を指定し、範囲、ステップ数を指定すると、すべていっぺんに調べてくれて(項目数が多い場合、直交表を自動的に作成し)、結果を出してくれるといった、シミュレーションに近い形になるのかもしれない。

 モデル検査なんていうのは、その方向ですよね。

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

クラウド市場は、思ったほど伸びていないってこと・・・?

2012-01-17 13:38:55 | Weblog
まず、この記事を見てください。

クラウド市場、年平均25.2%の急成長 企業の現状認識は「不要不急」
http://www.itmedia.co.jp/enterprise/articles/0907/22/news035.html

2009年の記事なのですが、その記事で、2011年の投資額を見てください。
800億をこえ、1000億円近くですよね。


次に、ここ

国内クラウド市場、2015年には2557億円の規模に IDC
http://www.itmedia.co.jp/enterprise/articles/1106/28/news046.html

によると、記事中に、2011年は、660億円って書いてありますよね。

投資額と売上額の違い・・・?
というより、これクラウド市場は、2009年に予想したときほど、2011年では伸びなかったってことではなくて?


クラウド市場は、思ったほど伸びていないってこと・・・?

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

シングルサインオン(SSO)のほうが、よくね?

2012-01-16 10:01:14 | Weblog
中央線のトレインチャンネル(ドアの上にある液晶の番組)をみていたら、

IPAの広告で

  ・簡単なパスワードはやめましょう
  ・同じパスワードを使うのは厳禁

とありました。

ってことは、「アプリごとに複雑なパスワードを降りましょう」ってことになりますよね。
でも、これって、できますか?忘れちゃいません?
そのために、パスワードを保管するファイルとか、紙とかもっていたら、
そのファイルや紙をなくしたらアウトだし、それらがどこかに漏れても、アウト。

そのファイルや紙を電子的に一元管理したものが、シングルサインオン(SSO)なわけで、
SSOなら、1つのアカウントさえ覚えておけば、いいわけで・・・
でも、SSOって、あんまり利用されてない気がする・・・

IPAは、SSOを推進したほうが、よくね?


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

1月13日(金)のつぶやき→「astah*を使って、ICONIXで要求からPGまで一気通貫す...」

2012-01-14 03:02:42 | Twitter
17:02 from gooBlog production
astah*を使って、ICONIXで要求からPGまで一気通貫する方法を、思い出してみる goo.gl/By23P

by xmldtp on Twitter

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

astah*を使って、ICONIXで要求からPGまで一気通貫する方法を、思い出してみる

2012-01-13 17:00:51 | そのほか
 まえに、早稲田の理工では、astah*教えるみたいよ・・・みたいなことをつぶやいたら、
結構ウケたので、早稲田の理工とは違うんだけど、前に、TOPSEで教わった、

astah*を使って、ICONIXで要求からPGまで一気通貫する方法

を思い出して書いてみる。ただ、その方法だと、問題があるので、
その問題のケースと対応策についても書いてみる。




■どこで教わったのか

 NIIのTOPSEの、コンポーネント設計の2

回目と3回目くらいか・・な?

 講師は、鷲崎先生(早稲田の理工でも教えてますよね)と、鄭先生。
 正直、どっちだったか、両方だったか、覚えていない。




■たしか、こんな流れ・・私の記憶だと・・

1.ユースケース図を書いてみる

2.ユースケース図から、コミュニケーション図に落とす
    →ロバストネス分析

  ・ユースケース図に対応するバウンダリがあるとせよ

  ・そのバウンダリに対応するコントロールがあるとせよ。
     なまえをユースケース名+”管理”とする

  ・そのユースケースを実現するためのエンティティを考え、
   書き入れよ

  ・バウンダリから、コントロールにいって、そのコントロール内で
    追加したエンティティへの操作手順を書け

  できあがり

  ※astah*だと、クラスに「バウンダリ」、「コントロール」「エンティティ」
   のステレオタイプをつけて、アイコン化すると、ロバストネス分析の図になる

3.コミュニケーションから、クラス図を作れ
   ※のところのように、それぞれのバウンダリ、コントロール、エンティティは
    クラス図になる。
   バウンダリクラスの属性に画面入出力項目を、
   エンティティにDB項目を
  いれてしまう

4.フレームワークを決定する
   たとえば、「画面はStruts」とか


5.PGの(半)自動生成
   そうすると、バウンダリの画面項目から、ActionFormが決まって
   コントローラーはActionになって、
   エンティティ部分のテーブルの構造が決まるから、テーブル作成SQLが作れて
    DAOとかも自動生成できて
    ActionからDAOを呼ぶところも、あとで修正はいるけど、多少作れる





<<これ以降は私の意見&考え、教わったことではない>>

■問題点

・ユースケースとバウンダリは一致するとは限らない
   →むしろ、粒度が一致しないほうが多い

 バウンダリは、画面単位なんだけど、ユースケースは画面よりももう少し大きい単位の場合が多い。
 たとえば、受注とか、発注とか。

 そして、このユースケースは、ユースケースシナリオにて詳細に書かれるけど、このユースケースシナリ

オで記述する1アクティビティが1画面に相当することが多い。

 事実、astah*ではないけど、Enterprise Architectのユースケースシナリオでは、明確に、1アクション

(=アクティビティ)が、1つの画面になっている。


ユースケースシナリオの書き方
http://www.sparxsystems.jp/products/EA/tech/tech_12.htm


このアクションが、バウンダリに対応する


・バウンダリが自動生成する画面と、対応しにくい
 バウンダリが1アクションだと、たとえば受注っていうバウンダリは1個になる。
 だけど、実際には、受注画面は、一覧表示して、確認画面出して・・・など1画面ではない。




■問題点を解決した、対応図

  1と2の間、3と4の間が私の考えたところ

1.ユースケース図を書いてみる

1と2の間:
  ユースケースに対応する、ユースケースシナリオを考え、
  それをアクティビティ図に落とす
  1アクティビティが一連の画面になる程度の粒度
    →「受注」とかいうレベル。その中で、一覧出して、入力して、確認してとか
     あると思うけど、そこまで細かくなくてよい。

2.アクティビティ図のアクティビティから、コミュニケーション図に落とす
    →ロバストネス分析

  ・アクティビティ図に対応するバウンダリがあるはず
    →だって、一連の画面に対応するレベルにしたんだもん

  ・そのバウンダリに対応するコントロールがあるとせよ。
     なまえをアクティビティ名+”管理”とする

  ・そのアクティビティを実現するためのエンティティを考え、
   書き入れよ
     →むかしの業務流れ図だと、アクティビティに対して、
      画面とDBテーブル書いていた。あのDBテーブルのレベル。

  ・バウンダリから、コントロールにいって、そのコントロール内で
    追加したエンティティへの操作手順を書け

  できあがり

  ※astah*だと、クラスに「バウンダリ」、「コントロール」「エンティティ」
   のステレオタイプをつけて、アイコン化すると、ロバストネス分析の図になる

3.コミュニケーションから、クラス図を作れ
   ※のところのように、それぞれのバウンダリ、コントロール、エンティティは
    クラス図になる。
   バウンダリクラスの属性に画面入出力項目を、
   エンティティにDB項目を
  いれてしまう

3と4の間
   バウンダリは「受注」とかいう一連の画面になっているので、1画面1画面に
   なるようにクラスを作り、画面項目をいれる
     1画面1クラス
     属性は、画面項目
     メソッドは、ボタンなど、コントロールを呼び出すイベント

   コントロールを詳細化する
     画面の「コントロールを呼び出すイベント」のメソッドに
     対応する(受け手の)コントロールクラスを作成する

4.フレームワークを決定する
   たとえば、「画面はStruts」とか


5.PGの(半)自動生成
   そうすると、「3と4の間」で書いた画面クラス属性、ActionFormが決まって
   コントローラーはActionになって、
   エンティティ部分のテーブルの構造が決まるから、テーブル作成SQLが作れて
    DAOとかも自動生成できて
    ActionからDAOを呼ぶところも、あとで修正はいるけど、多少作れる




 アクティビティ図=ユースケースシナリオを、昔の業務流れ図(WFD)で書くとうまくいく。
 また、バウンダリと実際の画面を対応付けるため、クラスを書くと、うまく対応つけやすい

 ただ、私の解釈もまちがってるかもしれない。

 そのうち、edubaseで公開されるんじゃないかなあ・

・・

 そうすると、確認できるのにね・・・


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

ピーク電力削減としての電気自動車利用

2012-01-13 15:31:01 | Weblog
ピーク時の電力消費を下げるという話は、


業界初!スマートシティへの展開に向けたピーク電力削減技術を開発
オフィスのノートPC内蔵バッテリーを使った実験により、ピーク電力を約10%削減することを実証
http://pr.fujitsu.com/jp/news/2011/12/14-2.html


もあるけど、もっと、効果的?な話をちょっと聞いたので、メモメモ



    って、いや、実は、表題のとおりなんだけどね、



電気自動車を夜中充電しておいて、ピーク時に放電するという話。

まあ、会社レベルでも、出来るんだけど、

たとえば、個人レベルで考えると、人工呼吸器とか、在宅で使っている人は、こまるよねえ。
電気が止まっても困るし、止まらなくても、ピーク時に値段が高いと困る。
そーいったとき、電気自動車で、ピーク時の電気を補うと・・
まあ、その電気自動車を利用者が買うのか、市で買って、ピーク時に職員が行くのか?って
いう部分があるんだけど・・・

これだと、会社には電車に乗って、平日は、おうちの車庫で車が寝ているっていう人も
いるかと思うんだけど、その場合、電気自動車を夜充電して、昼間家族が利用するとか
いう話もアリだと・・・

・・・なるほどお~

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