2 返信 最新の回答 日時: Nov 28, 2009 4:48 AM ユーザー:アリスタ002

    CS2のスクリプトでアンドゥを使わない方法

    アリスタ002

      はじめまして。

       

      よろしくお願いします。

       

      CS2のスクリプトの難題を調べてるうちに、このフォーラムにやってきました。

       

      スクリプトを使われる方々は、ご存じだと思いますが、スクリプトって、処理によっては、途中で信じられないくらい遅くなりますね。

       

      そんなときには、いろいろと書き方を変えてみて、その中で、最も早い方法を選択したりしていますが、

      時間のある作業のときには、それでもいいのですが、短納期のものだと、なかなか神経をすり減らします。

       

       

      なぜ、遅くなるか? って考えてみるのですが、いろいろな問題があると思いますが、もっとも大きい問題って

      たぶんInDesignが無制限UNDOで、環境設定などでUNDOの回数を制限できないところにあるのではないでしょうか?

       

      スクリプトで行っている処理のステップを、すべてUNDOする…などは、普通は考えないことですが、実際にアプリケーションが無制限UNDOで動いている以上、それだけシステムに負荷がかかっ ているのではないでしょうか?


      正確なことは、わからないのですが、CS4だとスクリプトからUNDOを使わなくすることができそうだ…と人づてに聞いたことはありますが…。
      CS2では、そのようなことはできるのでしょうか?

      調べてもUndo NameなどのReadOnlyの属性しかUNDO関係では見つかりませんでした。

       

      どなたか、もし、情報をご存じのかたがいましたら、アドバイスよろしくお願いいたします。

       

      もし、スクリプトでUNDOを使用不可にすることができたら、大量データの処理の場合は、劇的に処理速度の改善ができそうな気がするのです。

       


      OSはWindowsとMacのそれぞれで、アプリはInDesign CS2です。

       

       

        • 1. Re: CS2のスクリプトでアンドゥを使わない方法
          seuzo-oJiFme Level 1
          CS4だとスクリプトからUNDOを使わなくすることができそうだ…と人づてに聞いたことはありますが…。

          以前、InDesign CS4で検証したものをまとめてあります。

          http://d.hatena.ne.jp/seuzo/20090303/1236006398

          ここでは30%の高速化と言っていますが、それは最大値です。通常の処理ですとこれほどundo用にメモリを使うわけではないと思います。

          おそらく通常の処理ならば、ほとんど変わらないでしょう。

          この実装は、doScriptを使う時点でかなりダメな発想です。なんでアプリケーションのプロパティではないのか、理解に苦しみます。

           

          スクリプトって、処理によっては、途中で信じられないくらい遅くなりますね。

          これは多分、書き方にもよります。

          関数などに対して、参照を頻繁にやりとりするような書き方をすると、多ページのドキュメントで極端に遅くなることがあります。

          かといって、関数を使わないでダラダラ書けば、コードのメンテナンス性は悪くなります。

          ひとつのスクリプトでなんでもできるという発想を捨てて、

          多ページ用のスクリプトは、通常と違うアプローチをするようにしています。

           

          --

          せうぞー

          http://www.seuzo.jp/

          • 2. Re: CS2のスクリプトでアンドゥを使わない方法
            アリスタ002 Level 1

            せうぞー様

             

            アドバイス、どうもありがとうございました。

             

            CS4での検証結果など、大変参考になりました。

             

            UNDOを制限しても最大でも30%の効果なんですね…。

             

            ちょっとそれは残念でしたが、参照を多用することが速度低下に大きくかかわっているとは

            今まであまり考えていなかったため、とても参考になりました。

             

             

            今、自分の場合は、紙でみた仕上がりは同じでも、InDesignでそれをスクリプトで組む場合に、いくつかの手法を常に考えて作っています。(割と短納期のものも多いので、ひとつの手法しか 考えてないと、土壇場でトラブルがあったりした場合に対応できないためです)

             

            まず、ある手法で作ってみて、それが少量ページの場合には、とても高速に処理ができて、納得いく仕上がりだった場合でも、大量に流したときに、呆然とするくらいある処理量を超えると遅くなる場 合には、他の組み方(使うコマンドや、使用するオブジェクトなどを変えてみたり、最初はほとんどInDesign上でやっていた処理を、流し込む前に、できる範囲をタグ処理に置き換えて、高速 な前処理にまかせたり…。いろいろな手法を常に考えています。)

             

            ただ、参照を多用しないことで、大量データ処理の場合の処理速度低下になるということを、アドバイスいただきましたので、今後、大量データの処理の場合には、できるだけ参照のやりとりを控える ことを、まず第一にやってみます。

             

            たしかに、今までは、コードのメンテナンス性、無駄を省いた記述にポイントを置いていたため、参照はかなり多用しています。

             

            ここを改善することで、速度の改善ができることが知れたのは、とても嬉しかったです。

             

             

            どうもありがとうございました。

             

             

            今後とも、難題にぶつかりましたら、また、このサイトに訪れてみます。

             

             

            今後とも、よろしければ、また、何かの機会には、アドバイスよろしくお願いいたします。