yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/06 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
カテゴリ表示
 カテゴリ ゲーム開発 に当てはまるもののみを表示します。

 存在する記事 182 件の中から 6-10 件を表示しています。
全国共通低IQ生産
2006/02/26(Sun)21:26:37
 すでに今のアクティブ企画は「BlockBreaker」であるにもかかわらず、久々に作ってみたTactical Revolutionの新ステージ。以前から計画はしていたのですが、なかなか実装できずにいました。以前からネタを暖めていただけに、とにかくすさまじいです。
 ストーリーとしては、別に今さらネタバレも何もあったものではありませんから書いておきますが、なぜか追われている魔道士イリアスと騎士サーラ。ところが、おそらく体を張って魔道士イリアスを守ったのでしょう、騎士サーラは重傷を負ってしまい、戦えなくなってしまいます。そこへ追っ手が迫り、絶体絶命の大ピンチです。
 しかし、ここで魔道士イリアスは一計を案じます。なんと、騎士サーラに自分の体力を全部ささげる魔法を使うというのです。そして「サクリファイス」の魔法により、傷ついた騎士サーラは立ち上がり、魔道士イリアスの能力をも手に入れます。ところが、言うまでもなく魔道士イリアスは戦線離脱。騎士サーラ1人で戦わなくてはなりません。
 気になる相手は革命魔道士、デュアルナイト、剣聖、アークパラディンが2人ずつ。相手が1人ならともかくとして、8人もいっぺんに相手にしなければならないのでは、普段の騎士サーラ1人では、さすがに勝てない相手です。しかし今回は違います。騎士サーラは魔道士イリアスの魔法と能力を引き継いでいます。
 しかしながら、これはあくまで魔道士イリアスによる魔法であり、騎士サーラが根本的に魔法を使えるようになったわけではありません。この魔法が有効な時間は20ターン。これを過ぎると、普通の強さに戻ってしまいます。ご存知の通り、普段の強さでも相当強いのですが、今回は相手が相手です。
 さあ、騎士サーラは敵を殲滅し、魔道士イリアスを守り抜くことができるのでしょうか。とまあ、そういったステージです。
 特徴としては、今回の騎士サーラは非常に強いです。具体的には、まずステータスが極端に強くなっています。魔道士イリアス、騎士サーラのそれぞれのステータスのうち、どちらか高い方をベースとし、それに対して両者のステータスの平均の1割、及び相乗平均の1割を加算しています。つまり、ステータスが最大2割分強化されるのです。
 しかも今回の騎士サーラ、何と魔法が使えます。しかもMRは124もありますし、CONも24あります。魔力と気力は魔道士イリアスのものを引き継いでいますので、破壊力は抜群です。ちなみに他のステータスですが、相乗平均は両者の差が少ないほど大きな数値となりますから、VITが1200を超えます。MAG、CON、MRについては、相乗平均が0になってしまうためさほど高い増加は期待できませんが、元が強いので普通に強力です。
 特徴の3つ目としては、移動力が14、移動タイプが「水中 + 地形無視 + 敵無視」です。すさまじい移動力を持っています。この移動力で一気に敵に近づいたり、逃れたり(できるほどターンの余裕がありませんが)することができるのです。
 しかし最大の問題点は、何といっても「これらの能力が持つのは20ターン」という点に尽きます。魔法が切れて元のサーラに戻った場合、せっかくアビリティに魔法を持っているにもかかわらず、MRは0になって魔法が使えなくなり、移動力や移動タイプも元に戻ります。MAGは0、POWは1000の騎士サーラに戻ってしまうのです。
 いくら普段の騎士サーラも強いとはいっても、革命魔道士やデュアルナイトを何人もさばけるわけがありません。しかも相手は回復魔法を持っています。20ターン以内に殲滅できないのなら、少なくとも革命魔道士やデュアルナイトは20ターン以内に撃破し、他のキャラも粗方削っておかなければ、後で相当大変なことになります。
 それにしても、騎士サーラをこれほど強化できるなら、魔道士イリアスは他のステージでもこれを行うべきでは、というのは禁句です。普段のサクリファイスでも危ない(自分の最大LAの2倍を消費する)魔法なのに、能力まで分け与えているとなれば、負担は相当なものです。下手に使いすぎると肌が荒れてしまう死んでしまうかもしれないのです。
 テストプレイの感想としては、相手が回復を多用してくるせいで意外とてこずりました。MRをためておいて魔法を連発するのが効果的でしょうか。

 堀江被告ばかり扱っていてもワンパターンですから、今回はややインパクトのない記事ですが、重要な問題である「全国一斉テストの導入」について。文部科学省が「学力1等じゃないのは悔しいから導入するもんね」とか言い出した制度で、毎年小学6年生と中学3年生にテストが行われ、結果が場所ごとに公表されるとのこと。
 現在、日本でも小中学校を選ぶことは一応可能であり、今後はこの動きが進んでくるでしょう。となると、私はこのテスト導入に明確に反対しておきます。日本が学力1等などという幻想は捨て去った方が良いのです。背伸びして、ジャンプして、ハイヒールを履いて、そうして世界のトップを手に入れようなどとは、バカも休み休みにすべきです。
 学校選択制自体はとてもよい制度です。これからもどんどん拡大すべきでしょう。しかしながら、今後学校選択制が定着し、自由に選べる雰囲気になった場合、誰もが学力の高い方に入ろうとする可能性が高いです。本人が望んでいないのに、親が強引に学力の高い学校に連れ込むなどといった悲劇もあり得ます。
 さらに、このようなテストを行っている英国では、実際に子どもたちがプレッシャーを感じてストレス症状を出したり、学校が成績を偽造したり、時には成績の悪い生徒を無理に休ませるなどの問題が噴出しており、廃止が検討されています。ここに立派な前例があるのに、文部科学省もよくやります。「もんぶかがく事業機構」に鞍替えしては。
 そもそも、未だにテストの結果を重視しているとは、文部科学省は何十年前の組織なのやら。日本の学力が世界一だろうが何だろうが、それイコール技術力で世界をリードすることにはなりません。「教育を受けても足し算すらできない」ほど極端ならともかく、そうでもない限り両者に関係があるとは到底考えられません。
 実際、私は(学力テストを実施するらしい)小学校6年生の時には(何年前の話だか)学年で3指に入っていたものです。ところが、いまやアルゴリズムの1つすら書くのに手間取る開発者モドキ。小学校6年生の成績と後の人生、どういう相関関係があるのか私には理解できません。ただ単に成績データを取って記録するだけでは何の意味もないのです。
 確かに私は四則演算の暗算だけはやたら高速になりました。しかし、これは学校教育で培ったものでは全くありません。実際のところ、意味不明な学校教育で算数・数学嫌いになったり、苦手になったりする人が大多数で、そうならなかった人が計算能力を手に入れる、というだけの話なのでは。それなら最初から「試験に出る算数」なんてものはやらない方が良いのです。
 私は今では「堀江問題」やら何やらも取り上げて色々書いていますが、学校で「堀江被告は悪いヤツだ」などとは教えてくれませんでした。学校教育が自民党に支配されている以上、「堀江氏万歳、堀江氏は悪くない」と言い出す輩なら出てくるかもしれませんが、学校の知識はこうした事例を理解する上で全く役に立たないどころか、時として足かせになります。
 学校では作文などもありましたが、ご多分にもれず私も超のつく作文嫌い。作文や読書感想文などこの世から根絶したいと願ったものです。しかし今では作文用紙の5枚や10枚は(PCでなら。手書きでは自信ありませんが)普通に埋め尽くせます。学校で作文をやるのと、後々の文章能力との間には、因果関係は全くありません。言い切っても良いですが、完全なるゼロです。
 それを、全国共通テストによって「テストのための勉強」傾向に拍車をかけ、勉強以外の判断能力すら持ち合わせない国民総白痴化を進めようなどとは。自分らがもう1度小学校からやり直しては。それは確かに、そういうバカげた教育を進めれば、結果が出るころには低IQ層ペテンに引っかかってくれるバカも比例関数的に増加するでしょうが。
 最近の「ゆとり教育」については、私はかねてから「総合的学習の時間は大事だが、これは休みを増やした上にできるほど生易しいものではない。土曜日を今までどおりにしてこれを当てればよかった」と主張しています。しかし、これに対してさらに「テストのための勉強」を義務付けようとは。そんなくだらない勉強やるなら、家に帰ってゲームでもさせた方がよっぽど勉強になります。私が開発できるのも、もともとはゲームが存在したおかげですし。
 そういえば小学校の時点で半数は算数嫌いになっていました。算数や数学とは本来非常に面白いもので、子どもに数字を与えてしばらく寝かせておけば勝手に算数や数学で楽しむはずなのですが、バカバカしい難問やくだらない問題の羅列によってアレルギーにされ、数字を見ただけでげんなりする子どもが多いのです。私は昔も今も算数・数学好きですが、ドリルだけは今でも絶対にやりたくありません。その点、開発の良いところは、1つの問題に何通りもの答えを与えられるところでしょう。そもそも開発は理系分野ではないのです。
 しかし、ドリルなどは代わり映えしないくだらない問題を繰り返すばかり。これでは子どもが決まった反応を繰り返すことしかできなくなります。そのうち脳の同じ部分しか反応しなくなってしまうのでは。これをドリル脳とでも呼びましょうか。そして、テスト勉強というのは、「ドリル脳を作る行為」なのです。
 国の技術などにも影響する本当の学力を向上させ、さらに「ゆとり教育」の理念を満たすには、極端な話、算数の時間に「今日はこういう式によるこういう問題の解き方を学びましょう。やり方はこうです。では、皆さん自分で好きにやってみてください。分からないことは先生に聞いてください」とするだけで、(やりたらがない子へのフォローは必要になりますが)絶対に現状より良くなります。算数などという面白いオモチャが目の前にあるのですから、学校教育によって算数嫌いにさえなっていなければ、子どもがそれに飛びつかないわけがありません。
 以上、「真の」学力を低下させ、世界に通用する技術力を下げ、子どもや教師をストレスまみれにし、失敗の実例がある亡国策たる全国テストの導入に、私は強く反対します。計算や漢字の問題をひたすらやらせて、知識を与えずにテストの点のみを底上げするような行為は不要です。そんなもの、十分な知識と経験を積んだ大人が「頭を鍛える大人のドリル」をやるだけでたくさんです。
カテゴリ [開発魔法][社会問題][ゲーム開発] [トラックバック 0][コメント 0]

引我応報・果田因水
2006/02/23(Thu)20:22:31
 先日FTPについて取り扱いましたが、その時に「FTPのデータをSQL風に取り扱えたら便利」といった趣旨のことを書きました。本日はそれに触れようと考えていたのですが、ちょうどCGIに関してタイムリーなメールもいただきましたので、ここでパーミッションの概念について少々。
 パーミッションは通常、「QUOTE SITE CHMOD ??? filename」の命令を用いて指定します。この辺はコマンドプロンプト使いの私にとっては基本です。指定する数値は3桁ですが、ここで使われるのは0〜7まで、すなわち8進数、オクトなのです。8進数3桁であらゆるパーミッションを表せることになります。
 最低値は0(権限なし)、最高値は0777(全員に全権)なのですが、0777とは「01000 - 1」です。そして「01000」は「512」です。すなわち、パーミッションは0〜511の数値を用いてアクセス権限を設定していることになります。ここまで書けば鋭い人ならピンと来るでしょうが、これはまさにビット演算なのです。
 それでは少しばかり遊んでみるとしましょうか。まず以下のようなテーブルとデータを作ります。
CREATE TEMPORARY TABLE permition(permit INT);

INSERT INTO permition VALUES(CONV(755 , 8 , 10)) , 
(CONV(666 , 8 , 10)) , (CONV(644 , 8 , 10)) , (CONV(777 , 8 , 10)) , 
(CONV(700 , 8 , 10)) , (CONV(444, 8 , 10));
 CONV関数を使うと、数値を任意の進数に変換できます。今回は8進の数値を10進に変換して登録しています。ですから、SELECTを打つと493や438といった見覚えのない数値が出てきます。
 では、これの一体何がビット演算なのか。平たく表現すれば、こういうことです。
// オーナーが実行(Execute)権限を持っているもののみを表示
SELECT OCT(permit) FROM permition WHERE permit & 1 << 6;

// Result
755
777
700

// ユーザーが読み込みまたは書き込みできるもののみ表示
SELECT OCT(permit) FROM permition WHERE permit & (1 << 1 | 1 << 2);

// Result
755
666
644
777
444
 つまりはこういうことです。いちいち難しい計算をしなくても、「permit & 1」がtrueならユーザーに実行権があることが分かりますし、「permit & 1 << 7」がtrueならオーナーに書き込み権限があると分かります。この辺は2進数に置き換えれば良く分かるでしょう。
SELECT OCT(permit) AS '8進' , CONV(permit , 10 , 2) AS 'rwxrwxrwx' 
FROM permition;

// Result
8進	rwxrwxrwx
755	111101101
666	110110110
644	110100100
777	111111111
700	111000000
444	100100100

2進は最初の3つがオーナー、中3つがグループ、後3つがユーザー
r = 読み込み , w = 書き込み , x = 実行
 この通り、FTPがSQLのように操作できれば大変便利なのです。
 お遊びはこの程度にして、お次は先日の「JavaMail」。これを使えば日本語のメールも送信できますし、やろうとすればメールクライアントも作れるでしょう。ただ、これがやりづらいの何の。プロパティが出てくる時点で使いづらいクラスになっています。本当、できればプロパティは使いたくありません。コードが見づらくなりますし。
 ただ、送信自体はかなりあっけなく行うことができます。今回はJSPを用いましたが、実際問題としてJSPでメール送信機構が作れればかなり役に立つのでは。先日のコードも当然JSPで動かせますが、今回は日本語も平気で扱えますから、メールの題名や内容が「魔道士イリアス革命記」や「百鬼夜行〜管理者の千鬼」などでも平然と送れることになります。
 といっても、JavaMailがエンコードを自動認識して文字コードを設定、などといったことができるわけがないため、題名やメッセージを指定する際にはエンコード形式を指定してやる必要があります。メールなら「iso-2022-jp」でしょう。
 なお、メールで標準的に用いられるエンコードは7ビットであり、半角カナは無理やり8ビット目に数値を割り当てたものですから、化ける可能性が出てくるわけです。特にメールの場合は半角カナを使わないようにしましょう。以下のJavaMailのコードでも、半角カナのデータは用いないのが無難でしょう。
 JavaMailの流れとしては、まずプロパティでホストを指定し、そのホストが渡されたSessionを元にMimeMessageを作成、データをセットして送信、といったところです。
final String encode = "iso-2022-jp";
final String host = "SMTPサーバー名";

Properties p = System.getProperties();
p.put("mail.smtp.host" , host);
Session ses = Session.getDefaultInstance(p);

MimeMessage mm = new MimeMessage(ses);
mm.setSubject("テスト" , encode);
mm.setText("メッセージ" , encode);
mm.setFrom(new InternetAddress("from@mailaddress"));
mm.setRecipient(Message.RecipientType.TO , 
new InternetAddress("to@mailaddress"));
Transport.send(mm);
 添付ファイルも使用できます。添付ファイルの場合はMultipartを使うことになりますが、さすがはマルチパートだけあって、複数のBodyPartを登録することになります。
final String encode = "iso-2022-jp";
final String host = "smtp.server";

Properties p = System.getProperties();
p.put("mail.smtp.host" , host);
Session ses = Session.getDefaultInstance(p);

// 送信先やサブジェクト記入
MimeMessage mm = new MimeMessage(ses);
mm.setSubject("テスト" , encode);
mm.setFrom(new InternetAddress("from@mailaddress"));
mm.setRecipient(Message.RecipientType.TO , 
new InternetAddress("to@mailaddress"));

// Body.1
MimeBodyPart msg = new MimeBodyPart();
msg.setText("このようにファイルを添付します。" , encode);

// Body.2
MimeBodyPart file = new MimeBodyPart();

// (送信するファイル)
file.setDataHandler(new DataHandler(
new FileDataSource("webapps\\ROOT\\face_2.gif")));

// (添付ファイル名)
file.setFileName("sara.gif");

// 送信データを登録
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(msg);
mp.addBodyPart(file);
mm.setContent(mp);

// 送信
Transport.send(mm);
 これでめでたくサーラさんが到着します。元のファイル名は「face_2.gif」なのですが(Tactical Revolutionでの「デュアルナイト」のクラス番号は2番ですので、騎士サーラのフェイスは2番になります)、ご丁寧にも名前が「sara.gif」に変更されて到着します。

 ついでにBlockBreaker企画を少々手直し、四苦八苦しつつブロックが光るエフェクト(地味ですが)を実装しました。とりあえず光ります。ランダムに光る以外に、ハードブロック及びメタルブロックにボールを当てると光ります。「魔道士イリアス並みにか弱いボールなどで我を破壊できるものか」と言わんばかりに光ります。
 Phantomラケットも調整し、ラケット分身の際に幻影ラケットが離れ離れになることがないように実装しました。これで「ラケットと幻影の間からボールが落ちた」といったことはなくなりますが、ラケットと幻影との間の距離が制限される分、以前よりもいくらか早く幻影が消えてしまいます。
 実際には目に見えて違うほどの大きな違いはありませんが、幻影が以前よりも早く消えてしまう以上、ファントムを使う場合はよりいっそう「とにかくラケットを動かして幻影を生じさせる」ことが重要になります。さほどラケットを動かさないのであれば、Twinラケットを使った方が効率が良いでしょう。
 Divideと相性が良いのは相変わらずで、ひたすら左右に動かすだけでもガンガン弾いてくれます。Divideの分割対象は全ボールであるため、ボールが多いと比例関数的に分割数も多くなります。そうして手に負えなくなった時に、幻影がかなりの効率を発揮します。

 ライブドアはこれまでムチャクチャな株式分割を繰り返し行い、それで株価操作をして時価総額を伸ばした上、そこで高騰した株を売り抜けて利益を得て、しかも本来この利益は決算で利益として計上してはいけないにもかかわらず、計上して粉飾決算を行っていましたが、まさかこれがあだになる日が来るとは。やはり世の中上手くできています。
 実際のところ、株式会社には株券を発行することが義務付けられているのですが、これを守っている会社は多くなく、通常はデータで株の所有権を管理しています。普通の株なら名義人を書き換え、ミニ株なら証券会社を名義人に置いた上で証券会社がそれを株所有者に分配している、といった具合です。これを追認する形で、株券発行義務も撤廃が近い状態です。当然、ライブドアもいちいち株券を全額分発行してはいませんでした。
 ところが、上場廃止となればデータでそれを管理することはできなくなります。ということは、株券を持っていない株主には株券を渡さなければなりません。ところが、ライブドアはムチャクチャな株式分割を繰り返してきた会社です。当初の1株は3万株になっており、株の発行総数は天文学的な数になっています。しかも、無知な個人投資家をカモにするために売買単位は1株であり、1株のみの所有者にも株券を用意しなければなりません。
 こうした株券を作るだけでも相当な金額が必要とのこと。上場廃止に伴って株券を作るわけですから、株式市場からの資金調達はできませんし、銀行も融資を渋っている状態です。この莫大な負担はライブドア再建の大きな足かせとなります。この分では、優良企業ながら赤字を出して足を引っ張りかねないセシールなども切らなければならないでしょうし。
 こちらも皮肉な話ですが、銀行の貸し渋りもまたライブドアの知名度ゆえです。ライブドアが無名であれば、1つや2つの融資先が現れてもおかしくなさそうなものですが(グループ内には優良企業も抱えていますし)、ライブドアはなまじっか有名になってしまったため、ここで下手に融資を決めるとどういう批判を浴びるか分かりません。大量の株主を集めた露出作戦が今になって完全に裏目に出ているわけです。
 つくづくライブドア問題とは皮肉な問題です。株式分割による株価操作のせいで今度は株価発行のコストに苦しむことになりますし、買収を繰り返してきたところで今度は買収の対象でさえあります。フジテレビを買収しようとしたのが、今度はフジの傘下に入る可能性すらあり、時価総額至上主義は粉飾決算で穴埋めされていました。
 著書で「法人税を払うのだから企業の社会的責任などいらない」と書いた堀江被告ですが、実はマネロンで脱税していましたし、「マネーゲームだ」と批判されたライブドアの株が今度は投機・マネーゲームの対象になっています。しかも低IQ層の人気取りのためにこれを実質公認した自民党は、火消しに躍起になっています。しかも、堀江被告のマスコミ露出作戦のせいで、今度は悪事千里を走っています。
 考えてみれば、これらのほとんどは誤った行動であるわけですから、今になって報いを受けていると考えることができるでしょう。良いことも悪いことも、結局は自分の身に降りかかってくるのです。後は、ライブドアを持ち上げて株に「お墨付き評価」を与えてしまい、にわか投資家に大量の損失を招いた、堀江被告の「兄貴」「親父」にも大きな災難が降りかかって欲しいものです。
 そういえば例の堀江メールの真相ですが、いよいよ分からなくなってきました。民主党は当初の勢いはどこへやら、永田議員は辞職を口にするほどですから、メールの信憑性は薄れています。ところが、自民党は国政調査権を頑なに拒んでいます。すなわち、何か発動できない理由があるのです。どちらが正しいのやら。
 自民党は自らを潔白と称するなら国政調査権を発動しなければなりません。それで何も問題が見つからなければ民主党のトップは総辞職です。発動を拒んでいる以上、自民党は発動を拒まざるを得ない事情があるのであり、メールの真相がどうあれ私は自民党を「送金があった」ものとみなして扱います。不具合がないなら国政調査権を使って潔白を証明し、民主党をギャフンと言わせれば良いのです。
 民主党はデマメールに踊らされた挙句、党首自らが「信憑性が高い」と称した以上、メールがニセモノであるならただでは済まされません。自民党も、国政調査権を発動できない理由がある以上、潔白などとはもってのほかです。結局どちらも信用ならないといったところに落ち着くことになるのでしょうか。
カテゴリ [開発魔法][社会問題][経済・知的財産][ゲーム開発] [トラックバック 0][コメント 0]

堀江メールサーバー
2006/02/19(Sun)20:26:30
 自民党VS民主党、「堀江被告の資金せびり」メールの真相は果たして。
 この問題、私の中では最初は「民主党も勇み足ながらこれも仕方ない」程度の認識でしたが、最近は「これは民主党が正しいな」に変わりつつあります。これまでの自民党の態度などから判断した経験則の他、あの武部氏の入れ込みようといい、つじつまは合います。
 ではなぜ民主党が正しいと判断するのか。答えは簡単、自民党が国政調査権行使を拒否するからです。もし自民党に全くやましいところがないなら、調査権を行使するなり何なりして徹底的に調べ上げ、それでも何も出てこなければ「ほら見ろ、無実だ」と胸を張って言うことができますし、民主党は一転窮地に陥ります。
 しかし、自民党は潔白の証明に役立つはずの調査権を行使しません。理由は1つ、徹底的に調べられると決定的証拠が出てくる恐れがあるためです。そうでなければ堂々と調査すれば良いのです。自民党の行動はヒューザーの「訴追の恐れがありますので証言拒否します」と同じであり、「民主党のメールの通りのことがありました」と自ら認めているも同じです。
 安倍氏のヒューザー疑惑についても同様で、秘書官及び伊藤氏の証人喚問をしないのも、安倍氏にスキャンダルが起こると困るからです。明らかに安倍氏と伊藤氏はヒューザーと密接に絡んでおり、国民の命を売り渡した張本人です。それが本人と自民党には痛いほど分かっているから、証人喚問を拒否するのです。さすがに安倍氏秘書が「訴追の恐れがあるので証言拒否します」などと言おうものなら大騒動決定ですから。
 今回の問題も、調査権を発動するとマズいから自民党はそれを拒否しているのです。しかし、国民が望むのは懲罰動議ではなく調査権発動による徹底的な調査に他なりません。徹底的に調べて、民主党が追求できなくなるまで洗いざらい証拠を出して潔白を証明すれば、それだけで自民党の信頼は上がり、民主党の信頼は地に落ちます。自民党にとって、無実ならば調査権を発動した方が適切なのです。
 おそらく武部氏の子息と堀江氏の間には、民主党の言う通り、またはもっとすさまじい関係があったのでしょう。だからこそ調査権を発動せず言い訳に終始するのです。これはすなわち、調査権を発動すれば何かが出てくる可能性がある証拠です。ここは調査権を発動させるよう、国民が圧力をかけ続けるしかありません。これなしに問題を終息させてはいけません。
 しかし、仮に調査権が発動されても問題はここからです。自民党お得意の隠ぺい工作でうやむやにされる恐れがあるのです。ともかくうやむやに終わらせてはいけません。メール疑惑に関しては「メールが送られた」「送られていない」の2通りしかありません。どちらかはっきりさせなければなりません。
 調査権の発動がなされなければ、私は「自民党は事実を黙認した」とみなします。その後は密約メールがあったという前提でブログを書き進め、政党を判断し、論を述べることになります。逆に調査権を発動して徹底的に調べ、自民党の潔白が完全に証明されたなら、永田議員は「情報には信頼性がある」と称した民主党執行部もろとも責任を問われることになります。
 自民党が今行っているのは「黙秘」と同じです。黙秘とは、すなわちしゃべるとボロが出るから証言を拒否する行為です。民主党の証言がデマであると決定するには、調査権を使って潔白を証明しなければなりません。
 しかし、このメールについては不確定情報がやたら多いですが、まさか自民党が民主党をはめて揺さぶるために間者を使ったのでは、とも邪推してしまいます。仮にそうだとしても、徹底的に調べれば分かることでしょうが。ともかく自民党の逃げ口上はもう結構です。挙証責任は民主党にある。だから民主党は調査権行使を求める。自民党はそれを受け入れて身の潔白を証明する。それだけの話です。できないとは言わせません。

 とりあえずAlpha Release版を作ってみたブロック崩し企画。説明も何もないですが、こちらからどうぞ。今のところごく普通のブロック崩しです。反射角やサイン・コサイン、慣性などの計算で、作るのにはかなり難儀しましたが。
 現在の実装では、ブロックを崩すとたまにアイテムが出てきます(そのうち魔法システムに振り替えるかもしれません)。それらについて少しばかり解説をしておきます。

1.操作
マウス移動 : ラケットの移動
Pキー : ポーズ
Rキー : リセット

2.アイテム
・Phantom
 動かすと幻影が出る、ラケットを忙しく動かすあなたに最適なラケットです。当然ながら幻影でもボールやアイテムをキャッチできます。ボールが多い時や横方向移動が速い時に使うと特に役立ちます。Leadingボールに対しても有効ですが、ラケットの下のブロックを破壊したボールを幻影にぶつけて下に弾き返してしまわないよう気をつけましょう。

・Twin
 ラケットが2つ出現する、なかなかお得なラケットです。どちらのラケットでもボールを反射することはできますが、ラケットの間からボールが落ちることは日常茶飯事。ということで、私はあまり使っていませんが、上手に扱える方はどうぞ。

・Divide
 ボールが突然1:3の株式分割を引き起こします。しかし、株式分割と違ってボールが薄まることはありません。全部リーディングボールなどになっては冗談にならないので、ボールステータスは分割後のボールには引き継がれません。その点には注意しましょう。

・Blaster
 ボールがブロックを貫通します。破壊効率が大幅アップ、強力なボールです。ただし、ラケットの下にあるブロックを破壊するとそのまま突き破って落ちてしまいます。Divideで分割した普通のボールを使うなり、下のブロックを破壊する前に他のボールアイテムを取ってBlasterを無効にするなり、工夫しましょう。

・Leading
 誘導ボールです。ラケットの方向にボールが誘導されます。角度が変わるだけでスピードは変わらないので、下方向に調整すると高速で下に落ちてきます。ご注意ください。慣性がかなり強いので慣れるまでは使いづらいですが、実際には強力なボールです。ツインラケットの場合は1つ目のラケットに沿います。

3.ブロック
・カラーブロック
 色のついたブロックです。ボールをぶつけると壊れます。現在の実装では、1/20の確率でアイテムが出てきます(壊すたびにランダムに出るのではなくゲーム開始時にランダムに仕込んでいる)。

・ハードブロック
 頑丈なブロックです。数字が書いてあり、その回数ぶつけなければ壊れません。Blasterボールなら一発で破壊してくれます。破壊した時にアイテムが出ることがあります。

・メタルブロック
 壊れないブロックです。何をしても壊れません。このブロックが残っていても、他の消せるブロックさえ全部消せばクリアになります。

 今のところこの通りです。1秒に40フレーム、500x500(うち一部は今のところ何も描画なし)ですので、PCによっては辛いかもしれません。何を隠そう私のPCでも辛いです。これにブロック破壊エフェクトなど導入したらどうなることか。
 ただ、Tactical Revolutionレベルの20/secにするとボールの動きが今の1/2になり、だからといってボールの動きを2倍にすると描画が少ないせいでボールの動きが飛び飛びになり、軌道が読めなくなります。
 今はエフェクトなどありませんので、古いPCでもそこそこ動きます。試してみては。

 さて、またしても意味もなくFTPデーモンを導入しました。これでポート21をFTPとして使えるようになりました。ちまたのFTPソフトやブラウザのFTP機能でファイルをアップロードすることもできます。
 まずはFTPデーモン探しですが、世の中には「FTPといったらコレ」というソフトが存在しないらしいのです。サーバーといえばApacheなのですが、FTPは色々転がっています。純日本産のFTPデーモンなどもあるらしいのですが、色々検討した末に今回持ってきたのは「War FTP」という物騒な名前のFTPデーモンです。
 ポートは21でいいとして、まずデフォルトディレクトリの設定です。私の場合は「C:\Apache\htdocs」をデフォルトに設定しなければなりません。まずはアップロード・ダウンロード・ディレクトリ作成などの権限を持つユーザーの作成からです。
 色々調べつつユーザー「yamicha」を作成、ルートディレクトリ(C:\)に対する権限は全部封じ、代わりにディレクトリ「htdocs」に様々な権限を与えます。さらに、このディレクトリをサーバーのルートにしておきます。これで読み書きができるようになりました。ログインするとこのディレクトリから始まります。
 しかし、FTPを開くとディレクトリ階層に「C:\Apache\htdocs」が表示されてしまうのです。htdocsより上位のディレクトリにはアクセス権がないため、実際に見られることはないのですが、どうしたものでしょう。そこで「Mapping」にチェックを入れることで、htdocsをルートにマップしてくれるようになりました。
 ついでに匿名ユーザーも作成しましたが、「htdocsにはアクセスできず、その配下の特定の(私が許可した)ディレクトリにのみ読み取りアクセス」という形態にしたかったため、htdocsをルート及びマッピングした上で全アクセス権を封鎖、配下のディレクトリを作ってそちらにアクセス権を与える、という変則的な方法を用いました。
 一応これでFTP環境構築は完成です。DOSのFTPコマンドでもFTP Explorerでも、ブラウザでも問題なく表示されるようになりました(ただし、FTP Explorerはディレクトリの区切りに / ではなく \ を使うようにすると何のエラーメッセージもなしに落っこちます。UNIXのパス区切りを使いましょう)。
 それで何のためにFTPを構築したかといいますと、PHPのFTP関数が使ってみたくなったというこれまたいかがなものかという理由によります。こちらも近々扱ってみるとしましょう。
 専用ディレクトリのみに書き込みアクセス権を持つパスワードなしユーザーも作りましたので、これでファイルの受け渡しにいちいちメールなどを使う必要もなくなりました。送ってもらう時はそこにポストしてもらい、渡す時は自サーバーのHTTPもしくはFTPアドレスを渡すだけです。ファイルサイズを気にする必要もありません。試しにサーラさんを転送してみたところ、しっかり動作してくれました。
 ついでにメールサーバーも作ろうとしたのですが、DNSがなくこちらは失敗。ただ、DNSさえあれば送受信できる状態まで構築しましたので、習得という点では全く問題ないでしょう。何が何でも構築したければ、localhost内でDNSを構築するソフトも転がっています。
 しかし、いつ飛んでもおかしくない晩年のPCがApache + Tomcat + MySQL + PHP + FTP + Mail Serverとは。遅咲きといいましょうか、大丈夫なのやら。

 そういえばこれが301回目のブログです。この時点で開発魔法285、社会問題275ということは、90%以上の頻度で登場していることになります。2週間に1度あるかないか。魔道士イリアス217、こちらは3/4の登場ですか。お知らせ9、バトン4は頻度こそ低いですが、消せないカテゴリです。ゲーム開発175とは、半分はゲーム開発していたわけですか。経済は49、大体1週間に1度は取り扱っている状態です。
 「経済・知的財産」は今回作ったカテゴリですが、堀江問題、楽天などの知られた問題の他、ニレコ、日本技開、アルゼ、一太郎特許、FRBなども一応含まれています。
カテゴリ [開発魔法][社会問題][ゲーム開発] [トラックバック 0][コメント 0]

ずさんなのは視察連中
2006/02/15(Wed)18:19:28
 本日はアノテーションやJ2EEのせいでしばらく手付かずになっていた企画アプレットを手直ししてみたり。企画内容としては、いわゆる単純なブロック崩しであり、これといって特筆すべき点などはありませんが、「どうやって魔道士イリアスを絡ませるか」の1点について明確な答えが出せずに停滞中です。
 描画こそ適当ですが、これもそろそろバグが見当たらなくなっていますので、アルファとして出すべきでしょうか。ちなみに私の中では、メイン機構を開発中なら非公開版、あらかたバグが取れて基本機構が動くようになったらアルファ、とりあえず使える・遊べるようになったらベータ、ごく普通に使う・遊ぶことができるものの正式版ではないものはガンマ、最後が正式版という5分類を想定しており、Tactical Revolutionはガンマです(Typing Windは正式版)。
 現在のところ、基本機構としてブロックの反射処理と消失処理、ボールのリフレクト、ラケットへの命中処理などが実装済みであり、本日実装したのがアイテムです。ボールは複数持つことができ、ブロックは頑丈なものや破壊できないものを作ることができます。「魔法」としてアイテムの効果を出させようかとも考えましたので、アイテムの実装は迷いましたが、どちらにせよ実装して悪いことはないでしょう。
 なお、ボールやラケットは今のところ次のようなものを実装しているのですが、Javaのクラスは多重継承できないため、ボール・ラケットともに持てるステータスは1つずつになります。すなわち「オブジェクト指向ブロック崩し」です。

1.ボールステータス
・ファントムボール(飛行している軌道を表示するタイプ。デフォルト)
・ノーマルボール(あらゆるボールの基底。軌道を表示しない点を除けば、当たり判定なども含めてファントムボールと同じ)
・ブラスターボール(貫通弾。破壊できるブロックは必ず破壊してリフレクトしない)
・リーディングボール(飛行角度をラケットの位置で制御できるボール)

2.ラケットステータス
・ノーマルラケット(普通のラケット。デフォルト)
・ツインラケット(ラケットが2つになる。ボールがラケットとラケットの間に落ちると泣けてくる)
・ファントムラケット(見たところノーマルラケットだが、素早く動かすと幻影が生じる。幻影でもボールを反射したりアイテムを取得できる)

 現在の実装状況はこんなところです。従って、今後の実装計画(といっても最初の難題が解決できない限り実装に入れませんが)としては

どのように魔道士イリアス及び戦略性を絡ませるかの答えを出す
・必要ならラケットとボールのバリエーションを増加
・エフェクトの実装
・ステージの実装

 といったところです。何にしても、「魔道士イリアスをどう絡めるか」がキーワードになりそうです。SLGがやたら難しくなりすぎたので、「単純路線への回帰」を目標としたのがEpisode 4の位置づけですから。まだアルファの段階でクラス20個、いたるところにMathメソッド、といった具合に、ソースは全然単純ではありませんが。

 まず民主党が米国の牛肉処理を視察し、次に自民党が同じ企業を視察しました。ところが、出された結論は正反対。民主党が「ずさん」「混入もうなずける」と評する反面、自民党は「処理はしっかりやっている」「食肉処理ではなく米国側の対応の問題だ」。
 自民党が「民主党の評価はおかしいのではないか」と言えば、民主党は「我が党は専門家ばかりを派遣した。そちらの評価こそおかしい」。バレンタインデーにちなみ、食の安全を訴える団体が、食の安全を守るようPRするチョコレートを当該相に送ったとの記事もありました。見解の相違というのはありえますが、ここまで正反対に分かれることは考えられません。少なくとも、どちらか片方の政党が(嘘とはいえないまでも)誇張をしていることになります。
 それでは、どちらの言い分を信用すべきでしょう。言うまでもなく私は民主党の言い分をより信用します。自民党はこれ以上の追及を避けたいと考えており、民主党は追求材料を探していますから、どちらも嘘をつく土壌は十分にあることになりますが、実際問題として除去することが決められた危険部位が混入されていたのです。これは動かぬ事実です。
 また、自民党が米国牛を輸入再開したのは、まがりなりにも「安全確保できたから」であるはずです。ところが、実際はあっという間に背骨付き肉が見つかってしまったのです。結局こうなるであろうことは私ですら予想できました(少しばかり早すぎましたが)。すなわち、自民党にはBSE問題で国民を欺いた前科があります。
 国民に嘘を教えた挙句に身の安全を脅かした前科があり、違法行為と脱税でなりあがった成金をひたすら持ち上げて選挙に利用したり、今も耐震偽装などで関係者の証人喚問を拒み続けたり、やましいことのある人間のスキャンダルを隠蔽して首相に持ち上げようとしている政党の言うことをどうやって信じろというのか、そちらの方が私には分かりません。あらゆる状況証拠が自民党の調査の信頼性をかき消しています
 無論、民主党が絶対に嘘を言っていないとは考えていません。私は自民党と同じように民主党も疑いますし、仮に民主党が政権を取ったら批判すべきは徹底的に批判するでしょう。しかし、今回の場合は明らかに民主党の情報の方が信頼性があるのです。そもそも、米国牛の処理業者がずさんな処理をしているといった程度のことは、誰もがうすうす想像しているのでは。
 このような場合に私が望むのは、とにかく問題点を隠さず全部さらけ出すことです。これはBSEに限らず原発でも住基ネットでも同じです。「絶対安全」「しっかりやっている」などと称するのは何も言わないのと同じです。「このような危険がある」「こうした種類の危険はこのようにすれば最小限に抑制できる」と説明されれば、少なくとも「何も言わない」よりも何倍も安全性が高いことを確信できます。
 これまでの様々な事例と民主党の調査などを踏まえて考えると、米国牛はおよそ安全なものとはいえません。あちらでは牛の月齢を計算する方法がないため、検査から除外される若い牛を見分ける方法は何と「肉質」です。肉質を見て「これは検査対象外」と判断されればスルーです。検査するしない以前の問題でしょう。
 しかも、そういうゲテモノを輸入するために日本の検査基準まで引き下げてしまうこの愚かさといったら。21ヶ月の牛からBSEが検出された例があるのですから、18ヶ月や19ヶ月の牛から出ても何らおかしくありません。ちなみに、気になる全頭検査の費用は大体1グラム0.02円といったところです。少なくとも消費税よりは何倍も安いです。
 外交で米国べったりなのはまだやむを得ないとしても、牛肉問題ですら「日本は全頭検査。米国もこれと同じ条件を飲まないのなら輸入しない」と宣言できない情けなさ。つくづくあきれさせられます。
 ついでに自民党の視察報告にもあきれさせられます。ただ単に危ないものを危ないと言うだけで、政府への信頼は増大するというのに。

 このPCにはC#やMSSQLが入りません。マルチプラットフォームのJavaと比べれば、確かに「違いは明らか」です。といっても、それではどうにも悔しいので、MSSQLやPostgreSQLの仕様を少しばかり眺めてみました。
 まずMSSQLのあれこれより。例によって以前のはくひさんとの会話で「PRIMARYとINDEXはどう違うのか」と問われたのですが、MSSQLにはINDEXとUNIQUEの区別がないらしいのです。ですから使えるのは「PRIMARY KEY」「UNIQUE」の2つだけであり、UNIQUEを使うと自動的にINDEXも設定されます。その点MySQLの場合、UNIQUEとINDEXを別々に定めることができ、INDEXは必ずしもUNIQUEである必要はありません。同じ値を取るかもしれないカラムが頻繁に検索されることもあるわけですから、かなり合理的な仕様です。
 ですから、MySQLではUNIQUEだけではINDEXは作られませんし、INDEXだけでは同じ値を取ることができます。UNIQUEなカラムはFOREIGN KEYに使うことはできませんし、INDEXカラムはFOREIGN KEYに使うことができます(が、同じデータを2つ登録し、そのうちの1つを変更または削除するだけでFOREIGN KEY規則が呼び出され、CASCADE、RESTRICT、SET NULL、NO ACTIONのいずれにしても予想外の動作をしてしまうことがあるので、UNIQUEにしておく方が無難)。
// MSSQLの複合UNIQUEと同じ動作をするテーブル
CREATE TABLE unique_sample(num1 INT , num2 INT , 
INDEX(num1 , num2) , UNIQUE(num1 , num2));
 他に残念な点として、MSSQLではテーブル作成時にCHECKを使うことでテーブルの値に条件をつけることができるらしいのですが、MySQLではCHECK自体は通るのですが、互換性のために「何もしない」と定義してあるらしく、値をチェックしてはくれません。
CREATE TABLE check_sample(number INT , CHECK number > 100);
 この際、2度手間ながら手軽な方法が良いなら、ビューを使う手があります。
CREATE VIEW check_view AS SELECT * FROM check_sample 
WHERE number > 100 WITH CHECK OPTION;
Query OK, 0 rows affected (0.09 sec)

INSERT INTO check_view VALUES(120);
Query OK, 1 row affected (0.07 sec)

INSERT INTO check_view VALUES(70);
ERROR 1369 (HY000): CHECK OPTION failed 'yamicha.check_view'
 MySQLに限らずMSSQLでも定番の方法としては、トリガを使う手もあります。
DELIMITER //

CREATE TRIGGER checked_sample BEFORE INSERT 
ON check_sample FOR EACH ROW 
BEGIN 
 IF (!(NEW.number > 100)) THEN 
  SET NEW = NULL; 
 END IF; 
END; //

DELIMITER ;

INSERT INTO check_sample VALUES(120);
Query OK, 1 row affected (0.08 sec)

INSERT INTO check_sample VALUES(70);
ERROR 1231 (42000): Variable 'new' can't be set to the value of 'NULL'
 2度手間にはなりますが、前者の方が楽ではあります。MSSQLでCHECKを使う場面ではビュー、トリガを使う場合にはMySQLでもトリガを用いるなど、色々やりようはあるのでは。
 次にPostgreSQL。いまやデータベース製品はどれを使ってもさほどの違いがなくなっているのですが(GoogleもMySQLを使っていますし)、PostgreSQLの説明文で以下のような見慣れない構文を見つけました。
CREATE TABLE fk(number INT REFERENCES ref_table(column_name));
 CREATE TABLE内で外部キーを作っているわけですが、この構文は使ったことがありません。そこでMySQLに打ち込んでみたのですが、一応通ります。しかし、クエリは通りはするのですが、外部キーとして認識されません。ハナっから認識を行っていないらしく、インデックス以外の値を参照先に指定した場合すらエラーになりません。もちろん SHOW CREATE TABLE しても構造の中に外部キーは含まれていません。
 私はバリバリのコマンド使いということで、PRIMARY KEYやINDEXも後で指定する習慣があります(一応カラムと同時に指定する方法も覚えてはいますが)。この方がクエリが見やすく合理的ですし、複合キーなどを使う場合には後で指定する方法でなければなりません。それどころか、MySQLでは後で指定する方法でなければ外部キーが使えないわけですから、何でも後で指定した方が記述に一貫性も得られることになります。
// カラムと同時に指定する方法
CREATE TABLE tablename(number INT PRIMARY KEY , message VARCHAR(32));

// 後で指定する方法
CREATE TABLE tablename(number INT , message VARCHAR(32) , PRIMARY KEY(number));
 PostgreSQLで面白そうな機能が「テーブルの継承」です。クラスのごとくテーブルを継承できてしまうのだとか。MySQLの場合、読み込みに関しては同じことがビューで実現できるのですが、ビューにデータを追加する場合に更新できるテーブルは1つだけですから、書き込みで同様のことは困難です。
 どういう状況で使うかといいますと、例えばここにキャラクターを登録したテーブルがあるとします。キャラに関してはキャラ名とクラスを登録すれば良いのですが、チームリーダー格の人間のみチーム系統名をも明記しなければならないとします。このような場合のスマートなテーブルの作り方として、PostgreSQLの例題では以下のようなものが示されています。
CREATE TABLE characters(name VARCHAR(32) , class VARCHAR(32));
CREATE TABLE teams(team VARCHAR(32)) INHERITS(characters);
 これで継承ができるとのことですが、色々制約もあるようです。とりあえず私なら
CREATE TABLE characters(team VARCHAR(32) , name VARCHAR(32) , class VARCHAR(32));

INSERT INTO characters VALUES('魔法戦争解放師団' , 'イリアス' , '革命魔道士') , 
('騎士団' , 'サーラ' , 'デュアルナイト') , (NULL , 'ハードゥン' , '剣聖') , 
(NULL , 'シェイン' , 'パラディン') , (NULL , 'シェリー' , 'ワリキュール');

// チームリーダー格のキャラのみ表示
SELECT * FROM characters WHERE team IS NOT NULL;

// Result
team	name	class
魔法戦争解放師団	イリアス	革命魔道士
騎士団	サーラ	デュアルナイト
 とするか、もしくは
CREATE TABLE characters(name VARCHAR(32) , class VARCHAR(32) , 
PRIMARY KEY(name));

CREATE TABLE teams(name VARCHAR(32) , team VARCHAR(32) , 
FOREIGN KEY(name) REFERENCES characters(name));

INSERT INTO characters VALUES('イリアス' , '革命魔道士') , 
('サーラ' , 'デュアルナイト') , ('ハードゥン' , '剣聖') , 
('シェイン' , 'パラディン') , ('シェリー' , 'ワリキュール');

INSERT INTO teams VALUES('イリアス' , '魔法戦争解放師団') , ('サーラ' , '騎士団');

// チームリーダー格のキャラのみ表示
SELECT teams.team , characters.name , characters.class 
FROM teams INNER JOIN characters USING(name);

// Result
team	name	class
魔法戦争解放師団	イリアス	革命魔道士
騎士団	サーラ	デュアルナイト
 と記述することで、継承することなく問題を解消するでしょう。
 データベースには個性があって面白いのですが、他のデータベースでも同じようなことをしようとすれば何とかなってしまうものです。
カテゴリ [開発魔法][社会問題][ゲーム開発] [トラックバック 0][コメント 0]

不正の総合グループ企業
2006/01/23(Mon)23:43:38
 一言で表現するなら、古い時代が終わりました。
 旧時代の寵児、堀江氏が逮捕となりました。予想していた結末ではありますが、予想より少しばかり早い逮捕でした。東証も「逮捕となれば上場廃止を考えなければならない」と明言していましたから、おそらくライブドアは上場廃止となるでしょう。あれだけもてはやしていたマスコミの手のひらの返し方にはあきれますが、私としては当然の結末と定義しています。
 まず、ライブドア自体が砂上の楼閣や偽装マンションよりもろい構造の上に成り立った会社です。株式分割を用いて株価を不正に急騰させ、それを売り抜けたり買収に使って規模を拡大する。本社は赤字なのに、そうして買収した企業(主に金融)が利益を上げる。こんな構造、不正ができなくなればモロ崩れします。
 そして何より、このやり口の汚さといったら。マネーライフなど不正の対象となった会社については、赤字経営で一刻も早く買収先を見つけたかった状態で、そこに目をつけたのがライブドアでした。つまり、買収先の事業内容などとは無関係に、不正を行って資金を自社に還流するためだけに買収を行っていたのです。
 虚偽の取引から粉飾決算までの一連の不正さえできれば、どの企業を「媒体」にしても構わなかったわけです。所詮、買収する企業は不正に使う媒体であり、早い話が媒体になりさえすればそこらの石や棒切れでも構わなかったわけです。しかも、不正がバレたらマズいからとわざわざ海外で売り抜け。予想以上に卑怯なやり口です。
 このような不正の媒体として使われるのでは、買収された方もたまったものではありません。堀江氏への捜査容疑にしても、単に「風説の流布」だけならさほど問題にならない可能性もあると考えていましたが、1回の買収行為でまとめて何回もの違法もしくは不正行為を行っていたのですから、ブタ箱送りになっても文句は言えません。
 この問題に絡んで、エイチ・エス証券の副社長が自殺しましたが、今回はあえて「マスコミが殺した」とは言いません。これだけ狡猾な不正なのですから、報道しない方がバランス感覚を欠いていると考えられるためです。浅田農産の時とはわけが違います。しかし、気の毒なことに変わりはありません。
 伝わっている情報によれば、この人は一連の不正の首謀者の1人であった可能性もあるとのこと。こういう人は元来不正など行うようなタイプではなく、不正のたびにビクビクして心労がたまっていたのではと考えられます。死んだからといって罪が消えるわけではありませんが、第一の首謀者であろう人間がのうのうと「身に覚えがない。ねつ造ばかり」と書いている裏での犠牲です。とにかく気の毒です。
 それにしても、「最初から不正のために買収を持ちかけ」「投資組合を自社とは関係ないと偽って相手者から株を買い取り」「投資組合との間で不正な率で株式交換を行い」「前から事実上買収していたのに、その公表を遅らせて株価を上げる材料に使い」「ライブドアお得意の株式分割不正で株価をつり上げ」「一連の不正がバレないように海外に売り抜け」「手に入れた資金を本社に還流して粉飾決算」。不正のフルコースです。きっと仕組みを考え出した人はなかなかのキレ者なのでしょうが、この思考能力、もう少しマトモに使えなかったのでしょうか。
 とにかく、これで不正と虚像にまみれた旧時代が終焉を迎えました。不正をしたペテン師は必ずこうなるのです。堀江氏が選挙に担ぎ出された際、広島6区ではそこそこの票を得ていましたが、これで支持者も少しは自分の愚かさが分かったでしょう。しかし、堀江氏の得票はせいぜい1/3程度ですから、少なくとも広島6区には2/3も良識が残っていてくれたことになります。それが救いです。
 後は村上ファンド。こちらは全く法に触れていないだけに、立件はほぼ無理でしょうが、とにかく法改正でファンドのうまみを残らず消し去ることです。そうすれば、まっとうな企業やファンドが痛い目を見ることがなくなり、こういう不正な連中がのさばることはできなくなります。

 PHPでは画像を取り扱うことができます。Perlで言うところのImage::Magickが最初から入っているわけです。せっかくですから習得してみるとしましょう。
 リファレンスマニュアル曰く、PHP5の画像処理は「php_gd2.dll」によって行うとのこと。そういえば、PHP5ではMySQLサポートもデフォルトでは無効で、php.iniを編集して有効にしてやらなければならないのでした。ということで、MySQLの時と同じ要領で「;extension=php_gd2.dll」の先頭のセミコロンを除去し、gd2ライブラリを有効化。
 次に、これが正しく有効になっているかのテストです。同ディレクトリにおなじみの騎士サーラのフェイス(face_2.gif)を設置し、読み込んで表示してみます。
$img = imagecreatefromgif("face_2.gif");

header("Content-type: image/gif");
imagegif($img);
imagedestroy($img);
 以前のJDBCデータソースの際は「感動のご対面」でしたが、今回はさほど感動もありません。普通にサーラさんです。それにしても、最近のサンプルは騎士サーラばかりです。
 さて、ここまでならfopenでデータを読んでprintで書き出すのと変わりません。PHPのすごいところは(Image::Magickでもほとんど同じことができますが)、スケール変更、フィルタリング、形式の変更などが自在に行える点でしょう。特にファイル転送掲示板などは、PHPで書くとすさまじいまでに楽そうです。cgi-lib.plなどのライブラリを用意しなくても、転送されたファイルは勝手に$_FILES[]配列に格納してくれる上、画像の加工も楽なのですから。
 ではまず基本から試してみます。透過GIFを生成する方法は以下のようになります。
$img = imagecreatefromgif("face_2.gif");

$width = imagesx($img);
$height = imagesy($img);
// 幅と高さは配列として取得する関数もある
$trans = imagecolortransparent($img);	// 透明色

$nimg = imagecreate($width , $height);	// カンバスを作成

// 背景色をセット
$back = imagecolorallocate($nimg , ($trans >> 16) & 0xFF , 
	($trans >> 8) & 0xFF , $trans & 0xFF);
// イメージをコピー
imagecopy($nimg , $img , 0 , 0 , 0 , 0 , $width , $height);
// セットした背景色を透過
imagecolortransparent($nimg , $back);

header("Content-type: image/gif");
imagegif($nimg);
imagedestroy($img);
imagedestroy($nimg);
 少しばかり面倒な気もしますが、基本形ということで。これを踏まえて、イメージのスケールを変更してみます。まず切り抜きから。
$img = imagecreatefromgif("face_2.gif");
$nimg = imagecreate(50 , 50);

$back = imagecolorallocate($nimg , ($trans >> 16) & 0xFF , 
	($trans >> 8) & 0xFF , $trans & 0xFF);
imagecopy($nimg , $img , 0 , 0 , 20 , 20 , 50 , 50);
imagecolortransparent($nimg , $back);

header("Content-type: image/gif");
imagegif($nimg);
imagedestroy($img);
imagedestroy($nimg);
 上のコードの場合、切り取られるのは、左上からの座標20,20を起点として幅・高さともに50ずつです。では拡大・縮小の場合は。
$img = imagecreatefromgif("face_2.gif");

$width = imagesx($img);
$height = imagesy($img);
$trans = imagecolortransparent($img);

$nimg = imagecreate(50 , 50);

$back = imagecolorallocate($nimg , ($trans >> 16) & 0xFF , 
	($trans >> 8) & 0xFF , $trans & 0xFF);
imagecopyresampled($nimg , $img , 0 , 0 , 0 , 0 , 50 , 50 , $width , $height);
imagecolortransparent($nimg , $back);

header("Content-type: image/gif");
imagegif($nimg);
imagedestroy($img);
imagedestroy($nimg);
 これでリサイズができます。
 その他、フィルタを使えば色々なことが可能です。エンボスやぼかしなど色々できるようですが、ここではグレースケールのPNGにしてみます。
$img = imagecreatefromgif("face_2.gif");

$width = imagesx($img);
$height = imagesy($img);

// イメージ作成
$nimg = imagecreate($width , $height);
// 前のイメージをコピー
imagecopy($nimg , $img , 0 , 0 , 0 , 0 , $width , $height);
// フィルタをかける
imagefilter($nimg , IMG_FILTER_GRAYSCALE);

header("Content-type: image/png");
imagepng($nimg);
imagedestroy($img);
imagedestroy($nimg);
 ちなみに、結果をファイルに書き出すことも可能です。その場合は
imagepng($image_resource , "filename");
 のように指定するだけのお手軽仕様。引数を省略すれば標準出力に書き出されるわけです。グレースケールでもサーラさんの格好良さは変わりませんでした。

 ついでにTactical Revolutionの気になる動作を少しばかり手直し。ディスパッチウィンドの移動地点指定をキャンセルすると、なぜか発動キャラ指定ではなくアビリティリスト画面まで処理が戻っていたのですが、これを修正してキャラ指定まで戻るようにしました。
 リザレクトライフが「自分指定」のアビリティとして動作しているため、アビリティ発動後に何かの指定が必要な処理がキャンセルされた場合はアビリティリストまで戻るようにプログラムを組んでいたのですが、その後にディスパッチウィンドの特殊処理が導入されたため、ここで不整合が起こっていました。
 といっても、ディスパッチウィンドをキャンセルする人は少ないでしょうし、仮にキャンセルしても動作をそこまで追求する人はいないでしょうが、見えないところにこだわるのが開発魔道士というものです。
カテゴリ [開発魔法][社会問題][経済・知的財産][ゲーム開発] [トラックバック 0][コメント 0]

<-前のページ [1] [2] [3] [4] [5] [6] 次のページ->
- Blog by yamicha.com -