CF2.5 用エクステンション、GArR(ガー)正式公開 18


Clickteam Fusion 2.5 用エクステンション 「GArR」を正式公開します。

Windows PC 用で、動作確認済み OS は Windows XP および Windows Vista と Windows 7 (64bit)。

公開サイト:インターネットに強いエクステンション★GArR★

付属動作サンプルの内部ドキュメントは英語。詳細な機能説明とか仕様はウェブで、主に日本語で公開してます。

動作サンプルで「 Numeric Up-Down Control 」というサードパーティ製エクステを利用しています。エクステンション・マネージャからダウンロード可能です。

動作サンプルで使っている「リスト」オブジェクトにバグがあるため、一部動作に不具合を起こす場合があります。この問題の回避策は

GArR 既知のバグ:リストオブジェクトから値を取得した場合

にまとめた雑文で解説されています。

GArR について

カタカナでの読み方は「ガー」、「ゲール」どちらでもお好きな方を。

icons_GArR_01
本家のサポートしているエクステンションでもある 「GET Object」と「StringTokenizer」をリストペクトしながら機能を華麗にパクって合体 ( Fusion ) させオリジナル機能を追加した拡張機能です。

HTTP GET 及び POST 機能は UTF-8 デコード機能を備え、Shift_JIS に加えて EUC-JP のデコードにも対応しました。URL エンコード機能も UTF-8 と Shift_JIS に対応。UTF-8 が表現できる言語範囲内なら日本語以外であっても文字化け無く表示できます。

StringTokenize 機能は半年前、本家のエクステがまだユニコード対応してなかったため、GET をパクって作り直すついでにユニコード対応エクステとして「StringTokenzier」相当機能も一から作り直しました。これも完全にパクったので、使い勝手は本家版とまったく同じですが処理速度は本家版より高速。あと若干の追加機能と、HTTP GET との連携可能。

本家エクステとの互換性について

エクスプレッション (expression) レベルでは本家のエクステと完全な互換性があります。本家のエクステ機能はほぼ完全にパクったので、特に本家版が持っているエクスプレッション機能ならすべてカバーしています。

フレームエディタ内で利用されているオブジェクト名を変えるだけで各本家版と GArR で同じようにエクスプレッションを動作させることができます。

本家エクステとの相違点について

別オブジェクトなのでアクションとコンディションは互換性を持たせる事ができないので、アクションおよびコンディションはメニュー表記などちょっとずつ異なります。

GET Objct の 「Pending」については、以前から無駄だと思っていたので廃止して、代わりに「Connection Failed」という即時実行条件を付けました。「Pending」を使いたい場合は汎用の Flag などで管理できます。

HTTP 接続機能にはデコード設定とエンコード設定が追加されています。

デコード機能については取得したいページに使われている文字コードに合わせる必要があります。

エンコード機能については自分の使いたい文字コードとサーバ側の処理に依存するため、各人の環境や仕様によって設定は異なります。

Offset 機能は基本的に使わないけど、HTTP の応答ヘッダーに付属する改行扱いがサーバの処理系に依存しておりそれが複数種類あります。製品なら全部調べて全部対応すべきなのですがエクステは「作品扱い」なので、マイナーな処理系に対応したくないから手動で調整する機能を付けました。ごく稀にですがこの値の設定が必要な場合はあります。それ以外はヘッダー見たい場合とかヘッダーを逆に削りたい場合とかに使ってください。

本家 GET はリダイレクトを指定されている場合リダイレクトを追跡しますが、GArR ではリダイレクトは追跡せずサーバから受け取った 303 エラーなどを素直に表示します。

HTTPS には対応してません。また個人的にも必要としてないため付けませんでした。



Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

18 thoughts on “CF2.5 用エクステンション、GArR(ガー)正式公開

  • Senda

    GArR、本家より処理速度が速いので愛用してます!

    先日、不具合らしき挙動を発見したのでメールにて報告させて頂きましたが届いておりますでしょうか?
    既に過去の産物ということで更新・修正を行うつもりがないだけなのかもしれませんが、不着である可能性もあるので念のため書き込みさせて頂きました。
    それでは、お目汚し失礼いたしました…

    • J0hn Post author

      コメントありがとうございます(汗

      ごめんなさいごめんなさいメールをサボって見てませんでした。いますぐ見ます。

    • J0hn Post author

      二通のメールがスパムに紛れていました。申し訳ありませんでした。エクステのご利用もありがとうございます。

      公開したのが二年以上前、ソースコードと当時のコンパイル環境等は archives で残してあるはずなのですがそれら復元して今直せるかは…ちょっと本人も自信無いです。主に時間が…。

      ざっくりとメールを拝見させていただきましたが、一般公開すると面白いのは自分が考えていた使い方とか以外にも想像を超えた使われ方があるということに気がつける点です。

      “test” + Newline$ + “test” + Newline$

      例えばこの辺りは、そういえばそんな使い方できるなと脳みそがちょっと喜びました。

      TABは区切りとして使えない,Y軸方向のゴミ,等については大変お手数ですがCF25のプロジェクトファイル一式を送っていただければそれを元に動作検証してみます(読んだけどちょっとよくわかりませんでした、仕様とかも全部忘れました…ゴメンナサイ…)。

      メールは公開アドレスにスパムが一日100通くらい飛んでくるため、今はブログのコメント欄をご利用いただければ確実です。現在は http://prester.org/static/obake/ で製作している作品が遅れまくっているためオンラインの情報(エロサイト巡り)をシャットダウンして作っていることが多く、wordpress + CF25 は更新の優先順位が低くなっています。

      • Senda

        J0hnさん

        返事いただけて何よりです。無償で公開して頂いているので、贅沢は言えませんが直して頂けるなら嬉しいです。
        無理でしたら、とりあえず現状回避策はある不具合ばかりなのでこちら側で何とかします。

        https://yahoo.jp/box/LCUql6

        一応、再現性のある現象を特定してmfaファイルを用意しました。必ず起こる不具合が多いと思っていましたが、文字の種類や位置によっては起きたり起きなかったりするようです。
        他にも不具合がありましたら報告させて頂きますね!
        お手隙の際にでもご確認頂いて、時間の工面が出来た時にでものんびり直して頂けたら幸いです。

      • Senda

        ごめんなさい、一点忘れていました。
        Tab文字が使えない、という情報はドキュメントファイルに
        「ただし制御文字である「タブ/ Tab-Separated」をデリミタには使えません」
        と記載されているので使えないかと思ったけど、指定したら問題なく使えた
        ということです。

        • J0hn Post author

          ファイルありがとうございます
          まだ受け取っただけなので見ていませんがこれから見てみます。

          制御文字である Tab について、制御文字の扱いが各エクステンションごとに異なった場合に検証やデバッグの難しさを考慮して一般向けの文章にはデリミタにタブを利用することを推奨しなかったようです。

          CF25 のエクステンションは数が多く、各エクステンションごとに文字列をどのように扱うか詳細な仕様がありません。不可視文字をホワイトスペースに変換したり除去したりするエクステがあってそれをユーザが中継として利用する可能性などを考慮しました。

          GArR の 1D/2D Split 機能にはデリミタに制御文字が使われた場合でもそれを暗黙的に変換する処理は行っていないため、タブ区切り形式でもデリミタとして判定はできます。しかし CF25本体 のエクスプレッションエディタには制御文字の入力サポートが Newline(改行) しか無かったので、タブスペースを入力するためにはコピペしか手段が無い。そういう点も含めて一般ユーザ向けにはタブ区切りには対応してないという簡潔な文章で纏めたようです。

          ただしエスケープ処理が含まれていないのでタブ区切りを使った場合、文章中に含まれる全てのタブをデリミタとして認識するはずです。

          しかし今思い出したのですが、カンマ「,」をデリミタに使った場合でもエスケープ処理を入れてないような?気がしてきました……oh

          • Senda

            はい、エスケープ処理が入っていないので、英文にはカンマが入りますからTabが使えるとありがたいのです。
            今はエクステンションでString ReplaceのUnicode版もありますからエスケープ文字から任意の記号に変換する機能も簡単に実装できますから、エスケープの処理はあれば便利ですが最早必須ではないでしょう。
            GArRは速度の速さが素晴らしいので、不具合なく動作が安定すれば非の付け所がないです。

          • J0hn Post author

            進捗報告
            「上」という漢字を利用するとバグが発生する件については原因がほぼ分かりました。現時点ではバグに由来したダメ文字が14文字あります。

            それらをリスト化して16進数で眺めていたら原因特定に至りました。詳細な報告は近日中にブログ記事として出します。

            http://prester.org/static/obake/categories/garr にて2日以内

            変更を反映させたビルドではダメ文字が無くなっていました。もし可能ならば動作確認等デバッグをお願いしたいです。

          • Senda

            ありがとうございます!
            もちろん、変更版を出して頂いたらテストさせて頂きます!
            急ぎでなくて構いませんので、よろしくお願いします!

          • Senda

            修正版ありがとうございます!
            まずは文字が欠ける不具合の方を直して頂けたようで、さっそく動作確認しましたが直っていることを確認できました!
            こちらさえ直ってくれれば、末尾ゴミは組み方次第でどうとでもなるので一安心です。
            末尾ゴミバグの方は時間が掛かるようでしたら、ゆっくりで構いません。よろしくお願いします!

            ※検証中、あるmfaでのテスト中だけGArRのYインデックス0番の文字データが化けることがありました。
            出力が「インデックス0=インデックス1」で、インデックス0だけが謎の半角英数に変わるといったものです。
            最初はアプリケーションプロパティの文字コード指定を間違ったのかと思いましたが、そうではありませんでした。
            リストじゃなくエディットボックスで試そうかとエディットボックスを配置したら、何故か配置しただけ(コード一切変更なし)で直ったので、
            単にmfaがおかしくなっていた可能性もありますが、もしまた同じ状況を再現出来てしまった場合は思い当たる操作を列挙した上で報告させて頂きます。

          • J0hn Post author

            動作確認ありがとうございます。
            もうひとつの不具合についてはまだ検証中ですが、これもたぶん単純な計算ミスだと思います。たぶん1byte分データがずれています。デリミタで調整できるけど仕様としてはおかしいので直します。たぶん一週間〜二週間ほどお時間いただきます。その間GMSの作業もしているのでそっちの進捗ばっかり別の場所に上がるはずですがどうぞご容赦ください。

      • Senda

        さっそく確認させて頂きました!
        私の報告した不具合は全て直して下さったようで、本当にありがとうございました!

        今回の紹介ページに追加された仕様の件で、アクション内のループ処理というものが挙げられていましたが、

        「Element2D$( “GArR”, ( ElementCountX( “GArR” ) – 1 ) – LoopIndex(“ループ名”), 0 )」
        ※「(全てのX要素数-1)-LoopIndex」で逆からデータを取得

        このような動作を行った場合、正しい結果を返してくれないのも、同じ仕様によるものと判断してよろしいでしょうか?
        紹介されている仕様の件もこの例も、一旦変数や文字列に保持させてそれを参照すれば問題なく動作するので特に不便は感じていませんが、
        これも同じ症例なのかな?!と気になったので報告させて頂きます。

        • J0hn Post author

          エクスプレッション内で GArR から値を二回呼び出すことになる処理は、どちらかの値が無効になります。

          「Element2D$( “GArR”, ( ElementCountX( “GArR” ) – 1 ) – LoopIndex(“ループ名”), 0 )」

          この場合変数の値を得るのと同じ感覚なのだけど、実際には関数内で関数が実行されています。

          先にElementCountX( “GArR” )が処理されて得られた値を使って Element2D$() が処理を実行する流れ。関数+関数の二重実行になるので値が狂うはず。変数値参照+関数だったら大丈夫です。

          この辺りどうしてもちょっと不便で申し訳ありません。

  • J0hn Post author

    rev 1.0.5 をアップロード、エクステ内部の計算方法を二点修正。

    rev 1.0.4 に含まれているバグを解消します(トリッキーな使い方をしない限り発生しないバグ)

    アップロードは明日以降となる予定。
    done