Hatena::ブログ(Diary)

senzogawaのNな日々 このページをアンテナに追加 RSSフィード

2004 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2011 | 01 | 03 | 04 | 05 | 06 |
2012 | 01 | 08 | 09 |
2013 | 02 |

2006-09-30 しせん

デッドライン

| デッドラインを含むブックマーク デッドラインのブックマークコメント

 以前、職場で読んで気に入った「ピープルウエア」の著者ということを知って、「デッドライン」を買ってみた。

 微妙に小説形式なうえに、わりと細かく教訓めいたことが書かれており、大変読みやすい。

 ただ、きつい状況が生々しく描写されているため、少し胃が痛くなった。読むだけでもいやなもんだ。


 個人的には、以下の絶望的な項目がすごく印象に残ってしまった。

 「病んだ政治を下から治療することは出来ない。むだな努力で時間を浪費したり、自分の立場を危険にさらす必要は無い。」


 君子危うきに近寄らずってところだろうか。

 一開発者に出来ることは限られているけど、自分の周りの人を大事にできるかどうかが勝負どころだな。

トラックバック - http://d.hatena.ne.jp/senzogawa/20060930

2006-09-26 じゃま

GreenBrowserのアイコン

| GreenBrowserのアイコンを含むブックマーク GreenBrowserのアイコンのブックマークコメント

 隅っこに移動させても、GreenBrowserのアイコンが邪魔な人は、アイコンを右クリックして「モニター」のチェックをはずすべし。

 ちゃんと消えてくれるし、タスクトレイのアイコンから、同様の手順でチェックを入れると、また復活させることもできる。


 半透過だし、そんなに邪魔にならないと思っていたんで、特に調べなかったけど、検索されてたので試してみた。

 あのアイコンは「モニター」っていうんだなあ。

トラックバック - http://d.hatena.ne.jp/senzogawa/20060926

2006-09-21 とりあえず

Ver.2.80の新規命令の追加

| Ver.2.80の新規命令の追加を含むブックマーク Ver.2.80の新規命令の追加のブックマークコメント

 拡張スプライト関係の命令とrubyon2、nextcselについて追加。

 strsphが未記載なので、近日中にもう一回更新する予定。

 (追記)

 コメントで指摘いただいたdwaveplayloopの修正のついでに、strsphを追加。

はるはる 2006/09/24 10:09 リファレンス利用させて貰っています。
dwaveplayloopの説明が間違っているので報告しておきます。

>dwaveplayloop ロードしてあるwaveファイル一度だけ再生する

senzogawasenzogawa 2006/09/25 01:52 ご指摘ありがとうございます。
「ロードしてあるwaveファイルをループで再生する」
に修正しておきました。

トラックバック - http://d.hatena.ne.jp/senzogawa/20060921

2006-09-17 またきてた

NScripter Ver.2.82 リリースされる

| NScripter Ver.2.82 リリースされるを含むブックマーク NScripter Ver.2.82 リリースされるのブックマークコメント

 2.81と同日にリリースされたので、まとめてしまおう。

 新命令が1件、バグ修正が7件。

新規命令

 strsphという命令が追加された。

 要するにstrspのlsph版で、非表示状態での読み込みが可能。

バグ修正

 以下、公式掲示板からの引用。

・r_trapのバグ

・getenterで押しっぱなしにすると0が返る不具合

・縦書きモード時の改行不具合

・ログで改行が詰まる不具合

・長い文字列や一部記号に関するルビの不具合

・addnsadir、nsadirのバグ

nsadirは特に弄っていませんが、使えたようなので、バグが出る人はサンプルと共にご報告お願いします。addnsadirは修正しました。

デフォルトバックログ機能が妙に遅かったバグ

 縦書き時のバックログが修正予定になってるので、縦書きな人はもう少し待った方がいいかも。

 機能追加予定としては、主に立ち絵をスプライトで扱うことを主眼にしたものなので、立ち絵にこだわりがある人も待ちになるかな。

 個人的にはlsp2zが追加されれば、それでいいけど。


 あと、配列変数はリセット時に初期化されないのが仕様となった。

 確かに、座標テーブルとかで固定値として使うことはあるんで、悪い仕様ではないと思う。

トラックバック - http://d.hatena.ne.jp/senzogawa/20060917

2006-09-13 きた

NScripter Ver.2.80 リリースされる

| NScripter Ver.2.80 リリースされるを含むブックマーク NScripter Ver.2.80 リリースされるのブックマークコメント

 久々だ。新命令が12件、機能追加が1件。

新規命令

 ほとんどは拡張スプライト関連命令で、以下の通りだ。


lsp2 lsph2 lsp2add lsph2add : 生成

csp2 : 削除

msp2 amsp2 : 移動

vsp2 : 表示/非表示

allsp2hide allsp2resume : 全てについて表示/非表示


 結構ある。というか、既存のスプライト命令とほぼ同等の命令が用意されている。

 拡張スプライトは、今までdrawsp2を使う必要があったスプライトの拡大・縮小・回転に加え、加算合成、左右上下反転を可能にしたスプライトだ。


 個人的に気になった点をいくつか試してみた。

  1. 拡張スプライト番号の範囲はどうやら0〜255。
    256〜511の場合は無視され、512以上は強制終了する。
  2. 重なりについては、必ず通常のスプライト番号よりも上、手前側に表示される。
    つまり、拡張スプライト番号255の画像は、通常スプライト番号0の画像よりも上になる。
  3. spbtnに拡張スプライトの番号を渡すと、単に無視される。
    ボタン化する場合は拡張スプライトは全然関係ないので注意。

 用途だが、ボタンに利用できない以上、サムネイルには使いづらい。

 基本的に、演出上の使いどころを想定すべきだろう。

 ただ、必ず前面になることから、ダイアログに使うという手もある。


 その他は以下。個人的には使わないと思うが、nextcelはまだ試してないのでよくわからない。

rubyon2 : その行にルビがあるときだけルビ表示モードにする。

nextcsel : 次の命令がcselである場合、1を返す。

機能追加

 機能追加は、allsphide allspresume状態をセーブファイルに保存する、というものだ。

 今までセーブファイルに保存されてないということを実は知らなかった。

 allsphideは背景確認時に使うくらいなので、実行中にセーブされるケースはそれほど多くは無いと思う。


 その他、細かいバグ修正がなされているらしい。

 報告していない怪しい動作などがあれば、試してみるといいかも。

2006-09-12 かーる

Curlはもういいや

| Curlはもういいやを含むブックマーク Curlはもういいやのブックマークコメント

 Curlという言語を知っている人は、Web系の開発者を除けば、それほど多くは無いと思う。

 昔、とはいっても5年前くらいに見かけて、HTMLCSSJavaScriptの仕様混在にうんざりしていた自分にとっては、非常に期待のある言語だった。


 極端に簡単に言うと、'{'と'}'で囲う文法で、構造化とスタイルづけと動的生成をやってのけるという言語だ。

 この言語なら、HTMLCSSJavaScriptの3つの言語仕様が混ざったごちゃごちゃしたコードを書かなくてもよくなるとか、勝手に想像していた。


 当時、IDEは英語版しかなく、インストールが上手くいかなかったが、プラグインはインストールできたので、本を買い、手作業でいくつか試してみて、期待はなお膨らんだことを覚えている。

 これを習得していれば、今、Railsに手を出すようなこともなかったかもしれない。


 ただ、当時から日本語版のIDEは有償だったし、英語版の方の権利も日本のとある企業が買い取ってしまって、オープンな形にはならなくなったので、これでは習得に力を入れても使う機会が無いと、残念な思いで諦めた。


 しかし、最近、無償のPersonal版のIDEとサーバライセンスが出たらしい。

 商用はいかなる形でもダメなようだけど。

Curl(カール) - [SCSK株式会社]


 試そうと思ったけど、住所入力が必須という意味不明なログインページが表示されたのでやめた。

 個人情報欲しがる割には、プライバシーポリシーが見あたらないのは何でだろう。

 英語版の方はどうかと思ったが、ログインで住所入れなくていいんだけど、Japanと入れると日本のサイト行けってことになる。


 別にやましいことするわけじゃないから、住所くらい入れたって支障があるわけじゃないけど、もともと興味を失った経緯が経緯だけに、Curlはもう諦めることにした。

 どちらにしろ、自分の活動する領域では、使われることも、使えることもあるまい。


 なんとなく、「Joel on Software」で読んだ、顧客を持つ前にロックインするのはロックアウトするのと変わらないという話を思い出した。

トラックバック - http://d.hatena.ne.jp/senzogawa/20060912

2006-09-09 むなし

「上流工程」は100%にならない

| 「上流工程」は100%にならないを含むブックマーク 「上流工程」は100%にならないのブックマークコメント

 「上流工程」は、あまりにも空虚な言葉だ。

 決して100%にならない、つまりは、いわゆる「下流工程」に先んじて完了することが無いからだ。

 「下流工程」においても、「上流工程」の範疇に入る作業が必要になるのならば、「上流工程」は、上流であるとは言えない。

上流工程という名の開発フェーズから流れてくる作業内容を引き継ぎ、

プログラムを組む際に、必ず不一致は出る。

開発効率を求めること。 -  ( ・ω・)ノ<しすてむ開発。



 このような、ある意味極論を言い切るのは、「上流工程」が元にしているものは何か、ということにある。

 工程が100%になったというためには、何らかの評価尺度が必要だ。

 例えば、要件定義、外部設計、という流れだとすると、外部設計なら、要件定義を網羅できているかどうか、という観点で見れば、100%にどの程度近いか、ということが判明する可能性はあるだろう。


 しかし、要件定義はどうか。

 要件定義は、当然のことながらユーザに判断してもらう他は無い。

 そして、ここに最大の問題がある。


 果たして、ユーザは、どの程度要件定義を理解できるだろうか。

 おそらくユーザにわかりやすく書かれる工夫はなされているだろうが、決して見慣れた人ばかりがユーザになるわけではない。

 まずは、このコミュニケーションの難しさがある。

「プログラムは、意図した通りに動くのではなく、書いた通りに動く」というように書いた内容と意図した内容とを厳密に一致させることは極めて困難である。書いた内容と意図した内容とが仮に一致したとしても、その仕様書を正しく読み取ることもまた同じくらい困難である。

ウォーターフォール型開発が失敗する理由 - 酔狂人の異説



 次に、要件定義を理解できたとして、「利用したことも無い」ソフトウェアについて、要求を100%網羅できているかどうかなどということを、完全に判定できるのか、という問題がある。

 ここで、利用したことも無い、と言っているのは、利用したことがあるようなソフトウェアなら、それは同時に、作成する価値があまり無いものだからだ。

工場であれば、昨日作ったものと区別できないものを今日作るのは、ごく当然のことである。しかし、ソフトウェア開発において、昨日開発したもののと区別できないものを今日開発すれば、正気を疑われるだろう。

ソフトウェア開発を理解していない人々 - 酔狂人の異説



 最後に、そもそもユーザは、自らの要求を完全には把握していない。

 コミュニケーションや認識の細かな差異に気づくのは、動かせる何かが出来上がってからだ。

 もし、そういった細かな差異を要件定義の段階で解消するために、プロトタイプを作るというなら、それは実際に開発しようとしているソフトウェアと同等の機能、性能でなくてはならない。

 それでは本末転倒だ。


 そして、100%でない要件定義を元に評価した外部設計は、当然、100%になるはずがない。

 結局のところ、ユーザに100%を望むことになるが、それは無理がある、ということだ。

 ユーザが神でもない限り、「上流工程」は100%にならない。


 もちろん、要件定義や外部設計の作業内容を否定するわけではない。

 また、100%にならないにしろ、作業の精度を向上することは、開発日程の短縮や品質の向上にとって意義のあることだと思う。

 ただ、それらは開発完了まで継続的に作業が為される必要があり、決して「上流」で完了するものではない、ということだ。

トラックバック - http://d.hatena.ne.jp/senzogawa/20060909

2006-09-08

一文字ずつエフェクト処理

| 一文字ずつエフェクト処理を含むブックマーク 一文字ずつエフェクト処理のブックマークコメント

 某所で文章と画像の並列処理として、一文字ずつ表示して処理する方法が挙げられていた。

 面白そうだったので、単純なもので試してみて、以下に置いておいた。

http://senzogawa.s90.xrea.com/dl/paralleleffect.zip


 動作としては、一文字ずつ出力しながら、徐々に背景の特定箇所をズームアップしていくだけ。

 一応、なんとなくうまくいっているようには見える。


 ただ、非力なPCではdraw処理が重いせいか、waitなしでも充分にウェイトがかかる。

 非力と言っても、CPUは1GHzで、512MB以上のメモリは積んでいるから、このままなら低スペックマシン向けにはよろしくない処理だ。


 また、イベントを受け取る隙間がほとんど無いのか、処理の仕方がまずいのかわからないが、処理中は右クリックに反応してくれない。

 一応、以下にもソースをさらしておくので、何か分かる方は、性能の改善点だけでも教えていただけるとありがたい。

0001: ; 文章表示と並列にズームエフェクトをかけるテスト
0002: ; 分岐処理を外すため、コールバックにしてみた。
0003: *define
0004: textgosub *ontext
0005: defsub setontexec
0006: defsub clearontexec
0007: defsub callontexec
0008: defsub putbychar
0009: defsub setmode
0010: numalias arg,0
0011: numalias btn,1
0012: numalias efcount,2
0013: numalias elapse,3
0014: numalias onbtndef,4
0015: numalias mode,5
0016: numalias ontexec,6
0017: numalias putcount,7
0018: numalias text,8
0019: numalias pos,9
0020: game
0021: 
0022: *start
0023: setmode *normal
0024: erasetextwindow 0 ; これが無いとちらつきが酷い。
0025: mov %elapse,1 ; setwindowとかに使ってる値をそのまま使うと非力なPCで遅いかも。
0026: bg "screen.bmp",1
0027: クリックで開始
0028: \
0029: setontexec *dozoom,"0,16" ; 左ズームなので、右方向にずらす
0030: putbychar "「今は俺が話しているところだろうが!」 "
0031: setontexec *dozoom,"0,-16" ; 右ズームなので、左方向にずらす
0032: putbychar "「いえ、私と話しているところです。」  "
0033: clearontexec
0034: \
0035: 通常表示に戻る。\
0036: end
0037: 
0038: ; ズーム
0039: ; 前提:20文字、640x480
0040: *dozoom
0041: getparam s%arg
0042: split $%arg,",",%efcount,%pos
0043: drawclear
0044: drawbg2 320+%pos(%efcount+1),240,100+10(%efcount+1),100+10(%efcount+1),0
0045: drawtext
0046: draw
0047: itoa $efcount,%efcount+1
0048: itoa $pos,%pos
0049: mov $%arg,$efcount+","+$pos
0050: return
0051: 
0052: ; textgosubのコールバック
0053: *ontext
0054: btndef clear
0055: gosub $onbtndef
0056: textbtnwait %btn
0057: if %btn==-1 systemcall rmenu:goto *ontext ; 隙間が無いらしく、イベントが入ってこない・・・
0058: *ontextend
0059: callontexec $arg ; コールバックがあれば呼び出す。
0060: saveon
0061: texec
0062: return
0063: 
0064: ; モード指定
0065: *setmode
0066: getparam $mode
0067: if $mode=="*putbychar" mov $onbtndef,"*btntimer":return
0068: ; 通常モード時はコールバックを初期化しておく。
0069: mov $onbtndef,"*nop"
0070: clearontexec
0071: return
0072: 
0073: ; 面倒なので動的コールバックしない
0074: *btntimer
0075: btntime %elapse
0076: return
0077: 
0078: ; コールバック登録
0079: ; コールバックにはここで登録した引数が渡される。
0080: *setontexec
0081: getparam $ontexec,$arg
0082: return
0083: 
0084: ; コールバック呼び出し
0085: *callontexec
0086: goto $ontexec
0087: 
0088: ; コールバック解除
0089: *clearontexec
0090: setontexec *nopontexec,""
0091: return
0092: 
0093: ; 1文字ずつ表示してコールバック
0094: *putbychar
0095: getparam $text
0096: setmode *putbychar
0097: len %text,$text
0098: mov %putcount,0
0099: *putbychar_loop
0100: mid $putcount,$text,%putcount2,2
0101: puttext $putcount+"/" ; @/と書くと何故か改行されてしまうので別々に。
0102: @/
0103: inc %putcount
0104: if %putcount*2>=%text puttext "":setmode *normal:return
0105: goto *putbychar_loop
0106: 
0107: ; 何もしない
0108: *nop
0109: return
0110: 
0111: ; 何もしないontexec
0112: *nopontexec
0113: getparam s%arg
0114: return

トラックバック - http://d.hatena.ne.jp/senzogawa/20060908