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-02-27 メモ三昧

続メモ、メモ。

| 続メモ、メモ。を含むブックマーク 続メモ、メモ。のブックマークコメント

 TODO、ブログの草稿や書籍の感想など、何でもXTMemoを使ってみている。

 少しずつ使い方を確立していくのが楽しい。


 先日(id:senzogawa:20060209#p2)、以下のように書いたが、バージョンアップにより、本文入力ウィンドウのクリックでタイトル入力を抜けても、入力内容が反映されるようになったため、入力したタイトルを吹っ飛ばしてしまうことが無くなった。

タイトル編集を枠外のマウスクリックで抜けると反映されなかったりして、

 タイトル入力後にマウスで抜けようとしてしまう癖がついている自分には大変ありがたい。

 また、ツールバーのおかげで、新規メモをクリック1回で作成することも可能になったのはマウス併用が多い自分としては助かる。


 XTMemoのおかげで、パソコンでもメモを沢山書くようになった。

 その分つまらないことばかり書いてたり、中途半端な文章が多いことが、より鮮明になってしまったが。

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

2006-02-20 サクラエディタでいこう

NScripterならサクラエディタ

| NScripterならサクラエディタを含むブックマーク NScripterならサクラエディタのブックマークコメント

 サクラエディタの機能の中で、キーワードヘルプ機能というのがある。

 これは、単語についてツールチップでヘルプを表示するものだが、実際には命令のヘルプとして使える。


 一応、以前(id:senzogawa:20041123#p2)、設定方法の紹介の時に言及したことがあり、その時にもキーワードヘルプの辞書を作ろうとしていたが、XSLTの使い方がうまく思いつかず、ずっと放置していた。


 先ほどWEBの方で公開中のサクラエディタの設定ファイルを更新し、ようやく「NScripter_kwdhelp.txt」というキーワードヘルプ用の辞書を追加したので、設定方法を説明する。


  1. http://senzogawa.s90.xrea.com/dl/nscr_sakuraedit.zipから設定ファイルをダウンロードする。
  2. ダウンロードした設定ファイルを任意の場所に展開。
  3. サクラエディタを開いた状態から、設定 > タイプ別一覧設定 > NScripterを選択し「設定変更」 > 支援 を開き、「キーワードヘルプ機能」にチェックを入れる。
  4. 辞書ファイルとして、【NScripter_kwdhelp.txt】を選択する。

 これで完了。

 NSripterの命令をダブルクリックなどで選択して、マウスを止めれば、説明が表示されるようになる。


 ちょっと自分でも使ってみたが、命令の名前さえわかっていれば、いちいちHTMLを確認する必要が無いので、setwindowとかstrspとかの引数の多い命令に関しては、かなり楽になりそう。


 去年あればもっと楽だったのに、早く作っておけばよかったと少し後悔している。

 ちなみに、XSLTで引っ掛かったところだが、HTML出力にこだわりすぎただけ。

 別にテキストとして出力してしまえば、そんなに難しくならないのに、何を思ったのか、HTMLで出力した後にブラウザで開いてコピーしようとしていた。

 馬鹿な考え方したもんだ。

NScripter微妙に更新

| NScripter微妙に更新を含むブックマーク NScripter微妙に更新のブックマークコメント

 bgm命令で再生した音響ファイルに音量設定が効いてなかったらしい。

 バージョンは2.70のままだが、バグが修正されたので、2/18以前にダウンロードした人は、新規に取得した方がいい。

2006-02-18 英語でしゃべれない

英語実力テスト

| 英語実力テストを含むブックマーク 英語実力テストのブックマークコメント

 NHKで、英語の実力を試す遊びをやってたので試してみた。

 エラー|NHKオンラインの左側にあるやつ。

 Firefoxだと設定によっては入れないかもしれない。


 単語当て(読み)、会話文当て(漫画)、単語当て(聞き)、単語当て(絵)

 といった構成で、五問ずつ、計二十問。


 結果は、恥ずかしながら三割いかなかった・・・駄目すぎ。

 海外に行く予定は無いので、できなくても別に支障は無いんだけど、やはり何か悔しいものがあるなあ。

Ver2.62〜2.70の新規命令の追加

| Ver2.62〜2.70の新規命令の追加を含むブックマーク Ver2.62〜2.70の新規命令の追加のブックマークコメント

 やっと終わったー。

 新しく、CSVファイルとテキストボタンのカテゴリを追加。

 あと、演算子も追加してみた。


 ただ、この書き方だと、どうしても別カテゴリとぶつかる。

 本当はもっと賢いやり方があると思うが、正直限界。

 書き方があまりよくないのと、ちょっとリファレンスでは足りない情報が多いので、色々改善を検討したい。


 細かい書式、定義とか、クイックスタートガイド、カスタマイズガイドなんかを書ければ・・・んー、時間的に無理かな。

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

2006-02-16 雨降って地固まる

NScripter Ver.2.70 リリースされる

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

 ついに、oggストリーム再生プラグイン付きのバージョンが。

 新命令は3つ、機能追加が1つ、バグ修正が2つ。

新命令

 以下の通り。詳細はマニュアルを。

  • setkinsoku : 禁則文字を設定する
  • addkinsoku : 禁則文字を追加する
  • getlogtext : strsp用のgetlog

 見ての通り、禁則文字設定について対応していただけた。

 嬉しい限り。早速使うつもりだ。


 命令の使いどころだが、デフォルトの禁則文字をそのままにしたければ、addkinsoku、逆にデフォルトの禁則文字が都合悪い時は、setkinsokuを使えばいい。


 あと、getlogtextについては、以降はこれとstrspの組み合わせがサポートされるようになるらしいので、これからはバックログカスタマイズする時は、getlogtextを使うようにした方がいいだろう。


機能追加

 パッケージに付属しているプラグイン「nsogg.dll」を使って、oggのストリーム再生ができるようになった。

 これで、もうmp3はいらないかな。


 使い方は「nsogg.dll」をexeと同フォルダ内に置いて、bgm命令かdwave命令でoggファイルを指定するだけ。

 dwaveload、dwaveplayでもエラーが起きないようになったが、ストリーム再生なので、そもそも使わないかも。


 ただ、某所で書かれていたが、loopbgm命令はoggに対応していないらしく、「oggdec.dllがありません」というエラーが発生する。


バグ修正

 logspで後方互換が取れてないというバグが修正されたとのこと。

 もう1件は掲示板から引用。

・addnsadirが正しく働いてない→修正しました。

 ん?書いてから気づいたのだが、こんな命令あったっけ・・・


 で、マニュアル見たけど載ってないようだ。旧の方にも無いなあ。nsadirはあるけど。

 名前から機能は推測できるから、リファレンスに載せておくか。



 これでようやく、落ち着いたのかな。

 ちなみに、texttype、strsptypeについては次の機会となるらしい。

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

2006-02-15 青いのも悪くない

自己診断

| 自己診断を含むブックマーク 自己診断のブックマークコメント

 こちら(セルフチェックをしてみますた。 -  ( ・ω・)ノ<しすてむ開発。)で紹介されていたno titleが面白そうだったので、やってみた。

 結果は以下の通り。

  • コントローラー:30点
  • アナライザー:36点
  • プロモーター:12点
  • サポーター:15点

 特徴を見た限りでは、外れてるとは言えないなあ。

 人間関係を重視しない方に片寄ってる・・・


 他にもテストがあったので、優位感覚チェックというのをやってみたところ、言語感覚が優位だったが、内容を見てみるとプログラマは大抵これになるような気がするけど、そんなこともないのかな。

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

2006-02-14 空転

気分転換

| 気分転換を含むブックマーク 気分転換のブックマークコメント

 気合入れすぎた・・・

 精神的に疲弊してしまったらしく、かえって効率が落ちて、予定の進捗があがらなかった。

 何をやってんだか。


 こういうときは気分転換だ。

 滝のテーマがあるか探してみたが、無かったので水のイメージ。

 流れに乗れそうな気がしてきた。


 表示が壊れてるところが無いかチェックは明日やろう。

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

2006-02-13 滝の流れのように

VS ウォーターフォール

| VS ウォーターフォールを含むブックマーク VS ウォーターフォールのブックマークコメント

 昨日、ウォータフォールが開発方式と呼ばれていることに疑問を呈してみたが、立場上、開発方式なんて、どうにかできるものではないので、より建設的に、今の立場でウォーターフォール的管理手法に合わせていく方法について考えることにする。

ウォーターフォール的管理手法

 ここで言う、ウォーターフォール的管理手法とは、それぞれの工程のフィードバックを許さないために、常に厳密な日程と成果を要求してくる管理手法を想定している。


 もちろん想定外など許されないし、どんな理由であっても遅延、品質リスクは禁句。

 唯一後戻り可能なのは、ユーザテストで致命的な品質問題が見つかった時のみ、という何ともわかりやすい手法だ。

現状分析

 では、まずは現状を分析。

 自分の場合をモデルにすると、問題点は以下のようになる。作業は改造。

  • 成果は厳密だが、要求仕様は曖昧
    関数単位、値単位の成果を求められているが、それぞれの関数・値が何の要望に使われるのかが詰められていない。
  • 日程は厳密だが、下位層の日程と合わない
    機能別のリリース日程は決まっているが、内部的な下位層の日程がそれより遅延することになっている。
  • コードが厳密ではなく、品質的に危ない
    元のコードの構造がイマイチで、しかも設計資料もコメントも少ないため、改造時の影響範囲がわからない。

対策

 現実に取れる対策は、以下のようになると思う。


成果は厳密だが、要求仕様は曖昧

 要求仕様が曖昧である、などと曖昧な言い方をせず、どこがどのように詰められて無いのかを明らかにする。


 具体的には、要求仕様のさらなる仕様化と担当範囲の明確化により、個別の未定箇所について確認を投げる。


 成果の報告に関しては、どの箇所が何の理由により完了してないのかを明確にし、確認を実施していない箇所が無いようにする。


日程は厳密だが、下位層の日程と合わない

 下位層の日程と合わない、などと下位層を攻撃せず、どの箇所にどの程度の差分があるのかを明確にする。


 具体的には、下位層を利用する箇所をまとめ、日程を照合し、実装日程を再スケジューリングすることにより、差分を割り出し、遅延に問題が無いか、優先度の高いものが無いかを確認する。


 日程的に優先のものを要求された場合は、下位層の実装担当者にその旨を通知し、対応が可能かどうかを確認する。


コードが厳密ではなく、品質的に危ない

 コードが厳密ではない、などというつまらない言いがかりを付けるのではなく、現在認識できている構造と影響範囲を明確にして、不足している部分を確認する。


 具体的には、静的構造図、相互作用図などでの分析結果を明示し、実際に不明確なモジュールの関連や処理の流れをマークしておき、品質的なリスクのある機能を一覧化し、重点的なレビューやテストを要請する。



 といったところだろうか。

 当然だが、できる範囲で実施したり、実施を試みたりはしてる。

 ただ、出向の身分では、こういう手法を拡大していくのは難しいので、もう少し深く、厳しくやってみようかと思う。


結局

 ウォーターフォールを擁護する人は結構いるけど、大抵は末端の作業者ではなく、ある程度の裁量権を持っている。

 そして、結局ウォータフォール的管理手法が採用され、厳密な成果と日程を末端に要求してくる。

 まさしく滝のごとく、容赦なく重圧を加えてくる。


 対抗する手段は哀しいほど限られているが、だからといって、単純に放棄するのは無責任だし、何の向上にも結びつかない。

 もちろん、やるだけやってダメなら仕方ない。我慢には限界ってものがある。


 大切なのは、自分の責任範囲を明確にし、その責任を全うしようと勤めることだと思う。

 管理者ではない以上、管理技能を磨くことは難しいのだから、そういう緊張感を持って、技術の向上に励むのみ。


 と、何だか妙な決意表明になってしまった。

 最近どうにも書いていることの方向性が定まらないな・・・

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

2006-02-12 もうちょっと

NScripter Ver.2.68 リリースされる

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

 基本的にバグ修正のみで、5件。

 oggストリーム再生まであと2バージョンらしい。

バグ修正

 以下、掲示板から収集して引用。

・改行をまたぐテキストボタンの表示に問題

・フォントサイズ42以上指定setwindow直後selectのバグ修正

・logsp strsp logsp2の影問題修正

 ・ふちが残る

 ・shadedistanceの不具合

 これらと、昨日書いたreturnの後にコメントがあるとエラーになる件が修正された。

 一応、テキストボタンとreturnのバグについては修正確認済みで、問題は無かった。

 これで、文字列スプライトだと難しいので止めておいた、改行をまたいだTIPSができるようになる。嬉しい限りだ。



 このペースなら来週中に収束するな、と思っていたが、図々しくも、禁則処理の指定について要望を出してしまった。


 strspの禁則処理の確認しようした際に、そういえば・・・と、以前禁則処理のことを書いた(id:senzogawa:20050815,id:senzogawa:20050818)のを思い出してしまい、人によっては、気になるのではないのかな、と考えたわけだが、収束してからの方が良かったかな・・・

ウォーターフォールは開発方式か?

| ウォーターフォールは開発方式か?を含むブックマーク ウォーターフォールは開発方式か?のブックマークコメント

 以前から疑問に思っていたが、ウォーターフォールは開発方式とは呼べないのではないだろうか。

 単に存在する工程を区切っただけで、開発を行うやり方、ではなく、開発の作業要素を大まかに示しているようにしか思えない。


 こちら(id:suikyojin:20050512)で書かれていたが、ウォーターフォール型開発ということ自体が虚構の産物らしい。

 元になった論文には、きちんとフィードバックの必要性が書いてあったというのは驚きだ。


 開発方式とは、開発における作業の流れをどう作るかを示すことであり、重力に任せればいいなどということは、単なる思考の放棄だと思う。


 防衛策として、テストを勝手に優先したりしてるが、実際にそういう時間をとってもらえるわけではないし、進捗報告の基準も違うので、かえって中途半端になりやすい・・・

 もう少し、うまい方法を考えなければ。

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

2006-02-10 まだまだ

NScripter Ver.2.67 リリースされる

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

 うーむ。安定バージョンは2.70になるとみた。

 それはともかく、今回は新命令が1件、機能追加が3件、バグ修正が2件、それとドキュメントの修正があった。

新命令

 これも解説が無いようだけど、多分次で付くのだろう。

font
  • 引数
    文字列 : フォント名
  • 機能
    テキストウィンドウで表示する文章のフォントを指定する

 定義節、実行節の両方で使える。


 フォントの変更自体は、テキストウィンドウがクリアされたタイミングで反映されるため、すぐに適用したい場合はtextclearなんかを呼ぶといいようだが、ちらつくかもしれないので、命令を書くのはtextoffされる直前がよさそうだ。


 キャラごとにフォントを変えるなんて妙なことを考えた場合、pretextgosubで呼ばれたルーチン内でtextclearするという手があるにはあるけど、これだとクリック待ちは使えないので1行表示限定かな。

機能追加

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

> ・spfont設定を削除する命令をつける。(spfont clear)→以前の通り、setwindow設定が使われるようになる。

> ・strspに、spfontのフォント設定が反映されるようにする(サイズ指定はstrspでしたもののほうが使われる)。

> ・returnの飛び先を指定可能にする

 このうち3つ目の機能追加の影響か、returnの後にコメントを書くとエラーが出るとのこと。

 これは個人的に影響あるので、できれば対応して欲しいが、まあコメントの書き方を変えればいいか。


バグ修正

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

> > 1.reset命令を実行するたびにスレッドが増えます。

> > 2.Pen3 500MHz メモリ256MB Windows2000Sp4の環境でキー入力待ちでCPU使用率が70%を超えます。

 表示に影響があるわけではないが、性能には影響があるものなので、直るに超したことは無い。


 ちなみに、昨日書いたテキストボタンの自動改行時の動作に関しては、認識していただけたようなのでよかった。


その他

 strsp、{}の補足説明と、実は以前から使えたが記述が無かった命令が、いくつか記述された。

 例によって、掲示板からの引用。

> ・strsp {} errorsave bgmfadein(mp3fadein) kidokumode automode_time bgmfadeout の記載修正

 上記のうち、errorsaveについては、実際には999番にセーブされるので、実装と相違がある記述となっているが、使うのが必須な命令ではないので、気にしなくてもいいと思う。



 色々できるようになったが、その分、使いこなすのも難しくなったし、リファレンスだけだと情報を管理しきれない・・・

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

2006-02-09 止まらない

NScripter Ver.2.66 リリースされる

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

 さて、どこまで続くのだろうか。

 新命令は特にない。機能追加が1件と、バグ修正が2件。その他にドキュメントの修正が1件。

機能追加

 ついに、文字列を'+'で連結できるようになった。

 これでかなり楽になるなあ。


 前に他の言語に移るか考えた時、defsubが追加されて留まったが、個人的には、この演算子での文字列連結も、それくらいインパクトがある。

 なんせ、書きやすくなるだけでなく、読みやすくなるんで。


バグ修正

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

・spfontの太字フラグのバグを修正

・テキストボタンでクリック待ちでナンバリングが巻き戻る問題の修正

 後者は昨日書いた、以下の件。

>自動指定の番号クリアが改ページ待ちの時のみとなってくれればいいが・・・

 これは問題なかった。


 ただ、もう一つの、テキストボタンの文字列の途中で自動改行がある場合に表示がおかしくなる件は再現する。


 再現方法自体は、単にサンプルの先頭に5文字前後の全角空白を入れるだけなんだけど、時間が取れてないので、再現条件を絞れてない。ちゃんと確認できたら、そのうち報告しようと思う。


その他

 新命令の解説が記述された。

 昨日書いたうち、相違があったものについて一応言及しておくが、多分解説見た方が早いと思う。

linkcolor

 黄色と水色はデフォルトということなので、問題なければ指定なしで良い。

gettextbtnstr

 文字列が無い場合は、""が返る。


 ちなみに、普段個人的にそう呼んでいるため、昨日のエントリでコマンド番号と書いてしまったが、これはボタン番号のこと。


 今回は前回との差分が少なかったようにも思えるけど、4回目であることを考えると、充分なボリュームだ。

 最近はある方が普通だと思うが、演算子での文字列連結は非常に大きい。

メモ、メモ。

| メモ、メモ。を含むブックマーク メモ、メモ。のブックマークコメント

 メモを書くのに、メモ帳だと整理が付かないので、このツール(XTMemo - リスト表示と検索で管理するテキストファイルベースのメモソフト)を使ってみている。

 軽いし、カテゴリ管理・色分け・キーアサインが充実してるし、外部エディタ連携もあって、なかなかいい。


 マウスのダブルクリックで新規メモを開いたり、タイトル編集を枠外のマウスクリックで抜けると反映されなかったりして、Outlookのメモ機能に慣れているとちょっと操作しづらい面もあるが、それでも充分書きやすいし、見やすい。


 ちなみに恥ずかしながら、このツールで初めてChangeLogという形式を知った。

 知らないままよりはマシだけど、もう少し周辺知識を固めないとなあ。

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

2006-02-08 案の定

NScripter Ver.2.65 リリースされる

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

 バグ修正だけかと思ったら、機能追加もあり。

 内訳は新命令が5件。全てテキストボタンという新機能関連。

 機能追加は2件で、バグ修正は2件。

 あと、新機能のためか、strspが仕様変更された。


 依然としてバグ修正の未確認が残っているのと、機能追加の影響が不明なことを考えると、もうちょっと待ちかな。

 セーブデータも以前のバージョンと互換性が無くなったらしいので、古い作品への適用は慎重になった方がいいと思う。


新命令

 詳細については・・・と言いたいところだけど、サンプルのみで説明文が存在しない模様。

 いつか書かれるかもしれないけど、とりあえずサンプルを見て判断出来る範囲で内容を記述する。用例はサンプルを参照。

erasetextbtn
  • 引数
    なし
  • 機能
    テキストボタンの色を元に戻す

 テキストボタンを押した場合、文字の色がカーソル時のものとなっているが、それを元に戻す際に使うようだ。

 実行節のみ。

linkcolor
  • 引数
    色値 : 通常時の文字色
    色値 : カーソル時の文字色
  • 機能
    テキストボタンの色を指定する

 erasetextbtnで戻る色は、この命令の第一引数で指定した色。

 色を指定しない場合は、今のところ黄色と水色になるが、仕様でそうなっているわけではないので、ちゃんと自分で指定した方がいいだろう。

 サンプルは実行節でしか使ってないが、現状は定義節でも使用可能。

textbtnstart
  • 引数
    数値 : テキストボタンのコマンド番号の開始値
  • 機能
    テキストボタンのコマンド番号の開始値を指定する

 テキストボタンのコマンド番号を自動で指定するようにしたい場合に使う。デフォルトは1。

 混乱するので手動指定とは混ぜない方がいいだろう。


 クリック待ちか改ページ待ちかは関係無く、textgosub指定ラベルが呼ばれる時点までのテキストボタンに対し、指定した開始値から順番にコマンド番号を割り当てていく。

 サンプルは定義節でしか使ってないが、現状は実行節でも使用可能。

gettextbtnstr
  • 引数
    文字変数 : テキストボタンの文字列を取得する変数
    数値 : テキストボタンのコマンド番号
  • 機能
    テキストボタンの文字列を取得する

 コマンド番号に対応したテキストボタンの文字列を取得する。

 当然、自動指定の場合はtextbtnstartで指定した開始値を意識する必要がある。

 定義節で使うことは無いな。試してないけど実行節のみ。

textexbtn
  • 引数
    数値 : テキストボタンのコマンド番号
    文字列 : exbtnに指定するような制御文字列
  • 機能
    テキストボタンを複合ボタンにする

 指定したコマンド番号のテキストボタンを複合ボタンにする。

 テキストボタンは、そのままだとスプライトボタン扱いだが、カーソルが当たった時に何やら表示したければ、この命令を使って複合ボタンにするということだろう。

 これも、おそらく実行節のみだろう。


仕様変更

 strspが、logsp2とは別名例となって、引数に表示文字数を指定できるようになった。

 X座標,Y座標の次に、文字数X,文字数Yが追加された形だ。


 これにより自動改行可能になったが、行数については、はみ出ると落ちるようなので大きめに設定した方がいいだろう。

 ちなみにスプライトのサイズは、スプライトにした文字列に関わらず固定だったので、指定した文字数に依存するのだと思う。


機能追加

 テキストボタンと、もう一つは変数代入支援とでも言えばいいだろうか。

 どちらも埋め込み式で、システムカスタマイズしないと機能としては無効。

テキストボタン

 テキストボタンは、その名の通りテキストで作るボタン。

 特にボタンとして定義する必要は無く、textbtnwaitした時に自動的にボタンになるので、スプライト管理でもボタン管理でも有用。


 TIPSなんかは文字列スプライトでも実現できるが、単に<>で囲むだけというシンプルな書き方ができるので、こちらを使う方が断然良い。


 ただし、コマンド番号を自動指定とした場合、クリック待ちを挟んで使うと同一ページ上で同じコマンド番号のテキストボタンができてしまうので、当該ケースがありうる場合は使わない方がいいかも。


 自動指定の番号クリアが改ページ待ちの時のみとなってくれればいいが・・・

 自動改行時のテキストボタンの表示もおかしいようだし、聞いてみようかな。


変数代入支援

 文中で変数に値を代入したい場合に使う機能。

 機能自体はmovと変わらないが、断然見通しがよくなる。


 {}内に変数と値を','区切りで書く。値にエイリアスは使えないらしいが、変数名としてエイリアスを使うのは問題無い模様。

以前のTIPS実装と比べると

 文字列スプライトを使った場合のTIPSの実装例を示す。

 文章は作中から持ってきただけで、他意は無い。

 まず一つ。/
addTipsItem 1004,"眼鏡"
をかけていない人間がいない。

 改行を避けるため、/を入れる必要があるし、スプライト生成時に位置と文字サイズを合わせる必要があったりして、面倒なことこの上なかった。

 せっかく実装したことを考えると残念な気もするが、格段に楽になるのだから、この機能追加は歓迎したい。


バグ修正

 以下。修正確認としては、spfont関連での太字指定が確認できてないようだ。

・透過度指定がセーブで残らない

・insertmenuがある場合のdefinereset



 しかし、だんだんリファレンスへの反映が大変になっていくなあ・・・

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

2006-02-07 間髪いれず

NScripter Ver.2.63 リリースされる

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

 うお。もう次のがリリースされた。

 新命令は、何と5件。すべてCSV関連だ。あとはバグ修正が1件。

新命令

 ちなみにCSVというのは、調べればすぐわかるけど、Comma Separated Valueの略。カンマ区切りの値という、そのまんまの意味。

 よく、バージョン管理システムCVSと言い間違うが、そんなことはどうでもいい。

 恐らく最もよく使われるテーブルデータ記述形式だと思う。


 厄介なのは、カンマ区切り以外の規約がないこと。

 ExcelFileMakerなど、作成に使ったアプリケーションによって複数行文字列やエスケープ文字の扱いが違うので、パースは意外に面倒だったり。

 ただ、NScripterの場合は複数行自体無いので、問題は無いだろう。


 詳細はパッケージ内の説明を見た方が早いので、説明を書く。

  • csvopen
    CSVファイルを開く。
    暗号化モードがあるので、普段はそっちを使い、ユーザに見せたい場合や、暗号化が面倒な場合に通常モードを使えばいいと思う。
  • csvwrite
    CSVファイルに値を書き出す。
    指定した値を、とにかくカンマ区切りで書き出す。列数が違っていても書き出せてしまうので注意が必要だろう。
  • csvread
    CSVファイルから値を読み込む。
    1行ずつ読み込む。splitと似たような感覚で使えばいいと思う。特定の行の読み込みはできない。
  • csvclose
    CSVファイルを閉じる
    書き込み、読み込みが終了したら呼ぶ。呼ばなくてもNScripter終了時には閉じられるが、追加書き込みでもしない限りは呼ばない方がいいだろう。
  • csveof
    CSVファイルの終端を判定する。
    ファイルの終端に達したら読み込みを終える。EOFはEnd Of Fileで、最近のテキストエディタでは明示されているから、大抵の人は知っていると思う。

 これで、設定のインポート/エクスポートも、プラグイン使わなくてよくなるし、マップを複数行の文字列で持たせることも面倒ではなくなる。

 無いのは行指定での読み込みと追加モードでのファイルオープンくらいだが、通常の用途には問題は無いだろう。

バグ修正

 修正は以下。掲示板からの引用。未検証。

>「ロードを挟むと画像タグmのスプライトの透過指定が無効になる現象」


 ちなみに2.62でのバグ修正は、掲示板での報告を見る限りでは2件ほど動作確認された模様だが、まだ更新がありそうな雰囲気。

 落ち着くまではリファレンスを更新しなくてもいいか・・・

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

2006-02-06 考えすぎなのか

NScripter Ver.2.62 リリースされる

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

 かねてから予告されていた、バグ修正版がようやっとリリースされた。

 内容は機能追加が2件、バグ修正が5件。

 ただし、機能追加のうち1件は新命令みたいなものなので、新命令として書いておくことにする。


新命令

 strspという命令だが、実体は機能拡張されたlogsp2のエイリアス

 早い話が、"\"を改行として扱ってくれ、複数行スプライトが可能になった。

 logsp2に渡す文字列がユーザ指定可能になったことによる模様。


 これで、スプライトダイアログ表示するのが楽になるなあ。

 ちなみにlogsp2の説明も詳しくなったので、見ておくとよいかもしれない。

 早速試してみたが、特に問題なかった。


 ちなみに、相変わらず色指定は可能。

 ただ、2色指定してprintしたら2セル目がデフォルトになっているのと、getspsizeすると何行表示でも同じサイズが返ってきてしまう模様。


 うーん、複数文字列スプライトはボタンとしては使えないな。マニュアルには載ってないままだから、仕方ないか・・・

 使えれば縦書き時のスプライトで結構楽になるんだけど。


機能追加

 shadedistance命令とspfont命令が実行節で使えるようになった。

 つまり、lsp前にフォントを切り替えられるようになったということになる。

 これでスプライト文字列の使い方の幅が広がったな。


 その代わり、リセットしても設定は元通りにならないらしい。

 要するに、*startの直後でデフォルトの設定を指定すれば良いのだと思う。試してないけど。


バグ修正

 以下5件。掲示板より引用。

> ・spfontが反映されない

> ・文字スプライトの太字、影、文字色のパラメータがsetwindowでのパラメータで反映される

> ・shadedistanceとlogsp2

> ・全画面でdefineresetするとメニューが一瞬表示される

> ・drawsp2 drawsp3 のバグ

 個人的には支障ないものばかりなので、特に確認はしてない。

 ただ、これだけ修正が入ったとなると、バグ報告者の確認を待ってから使った方がいいかもしれない。


 色々と書こうとして書けないことばかりなのに、こういう情報系はすんなり書けてしまう。

 と思っていたが、単に無責任だからかもしれない・・・

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

2006-02-02 喉は痛くない

シナリオ書きと分業する方法2

| シナリオ書きと分業する方法2を含むブックマーク シナリオ書きと分業する方法2のブックマークコメント

 シナリオ書きは、できればプログラマと分業した方がいい。

 シナリオ書きは台詞と地の文、それに演出指定を書き、プログラマはそれを要件として捉え、実装に落とし込む。


 そうすることで、並行作業ができるし、保守領域をお互いのわかりやすい部分、得意な部分に限定できる。

 そういった作業分担に問題があるわけではないが、具体的な方法となると、避けて通れない問題が生じる。

従来技術の問題点その1

物語作成のプロであるシナリオライターに複雑なスクリプト言語での記述を求める事は難しい。そのため、中間的な記述フォーマットで書いてもらって、あとでスクリプトプログラマーが頑張って編集するケースが一般的である。しかし、これでは後からシナリオに変更が発生した場合に、中間記述フォーマットと最終的なシナリオスクリプトとの同期が困難である。

従来技術の問題点その2

シナリオライターが実際に書く中間的な記述フォーマットは、言ってしまえばIF文とGOTO文の塊でしかない。これでは複雑な分岐構造を構築・管理することが困難である。

なぜシナリオスクリプト言語には2層構造が必要となるか - Game Scripting Memo

 実際に、自分にとって問題点その1は以前から重大な課題だったし、今回も結構きつかったが、工程を工夫することにより、同期の必要性自体を小さくして、問題が大きくならないようにした。


 問題点その2については、わかりにくいところは自然言語に近い形、もしくはそのものでシナリオ書きに指定してもらい、こっちで解釈して実装する、といった方法が多かったと思う。


 当然ながら、保守性はさらに悪化したが、あまりガチガチなフォーマットで記述してもらうことを要請するつもりは元々無かったし、実装言語に近い形も、避けられる部分は避けた。


 そういった、こちらが面倒になることをしたのは、分業のメリットが損なわれることを避けるためだ。

 ここで言う分業のメリットを明確に書くと、2つある。

  1. シナリオ書きは「何を実装すべきか」を意識して、「どのように実装されるか」を意識する必要が無いので、自由に演出を発想できる。
  2. 下手に実装に近い形だと、かえって何をしようとしたのかがわからなくなり、間違っててもフォローしにくいが、自然言語なら回避が可能。

 この辺りを踏まえて解決策をみる。引用元は上記と同様。

ひとつのスクリプトの実体を複数の視点から操作できるような IDE を作成する。フローチャートの自動同期機能や、典型的な分岐構造に関するテンプレートなどを用意することで、シナリオライターのマルチシナリオの作成をサポートする。

 同期が自動で行われれば、ある程度のものが出来た後からも、変更を躊躇する必要は無くなるし、テンプレートがあれば、選ぶだけで済む。


 また、シナリオ書きの視点で書くことができれば分業のメリットは確保できるし、分岐構造が明確になれば、プログラマとしても手を出しやすくなる。

 是非実現して欲しい。


 で、それはそれとして、個人的に、このようなIDEに欲しい機能を列挙してみる。

  1. とりあえず書ける
    全体の構成を気にせず、ひたすら書き続けられる。書いてから分けたり、まとめたりするのが楽だといいと思う。
  2. とにかく書きやすい
    プロット、シーン管理などの構成や、改行位置、禁則などの表示の仮設定、コメント付けなどができると書きやすいと思う。
  3. 埋め込みの分離
    変数内容表示やルビなどは埋め込みでなければ実現できないため、見づらい。実際、単語TIPSは見にくくなって、シナリオ書きに嫌がられた。
  4. 分岐の条件を後付けしやすい
    分岐があることのみを書いておき、後で条件を付けるというやり方。入力無しを弾くのはまずい。
  5. 分岐元を見ながら分岐先を書ける
    分岐先を書く時、分岐元を見るのはよくあると思う。
  6. 特定のルートを選んで、話の流れを確認できる
    全体の構造を視覚的に見られるなら、これは欲しい。
  7. エディタベースでの開発が可能
    一般的なIDEはプロジェクトベースなのでわかりにくい。書いたものをまとめて管理し、必要に応じてプロジェクトに登録する形が使えるといい。
  8. 演出の仮指定ができる
    実装可能かどうかわからない演出でも記述できるようにする。コメントでやると、演出指定なのか単なるコメントなのかの区別が付かなくて困った。
  9. XML形式でのエクスポート
    XSLTで置換できれば他の言語への移植が簡単だし、自由度が高いかな、と。
  10. 単なるテキストのインポート
    別途テキストエディタで書いたものをインポートできるようにして欲しい。
  11. 参照カウンタをデフォルト
    参照回数を使って分岐をすることは結構多い。カウンタの変数を一々作るのは手間なので、シーンと同時に生成されると楽になると思う。


 あまり分岐とは関係無いものもあるし、的外れなこともあると思うが、書きたいことを書いてみただけ。

 いくつかはRPGのシナリオにも共通すると思うが、ADVを想定している。


 なんにせよ、シナリオ書きに向けるなら、徹底的に書くことをサポートするようにした方がいいと思う。

 複雑なツールや、動かすまでに設定が多いものは避けられてしまうようなので。

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