JavaScriptの保守しやすいソースの書き方について

[7479]JavaScriptの保守しやすいソースの書き方について 投稿者:杜王町民 投稿日:2013/04/22 21:37:08
タイトルに書いた情報について、Web用では多く出回っていますが、InDesignですとなかなか見当たりません。

まず、私からみるとInDesignでの「オブジェクト」「メソッド」「プロパティ」の取り扱いが今ひとつわかりにくいという点があります。
それが原因で「目的の結果を得るのに決まったソースを書けず、あれこれいじっているうちに動くようになった」という極めて不安定な作業をしてしまっています。
結果、ソースはとても把握しづらいものになってしまいます。

先人の皆さんは独自にソース記述のスキルを身につけられたのか、なかなか決まったスタイルでソースを書けません。
どのような点に心がけてソースを書けばよいか、ご助言をいただければ幸いです。
>まず、私からみるとInDesignでの「オブジェクト」「メソッド」「プロパティ」の取り扱いが今ひとつわかりにくいという点があります。
>それが原因で「目的の結果を得るのに決まったソースを書けず、あれこれいじっているうちに動くようになった」という極めて不安定な作業をしてしまっています。

オブジェクト・メソッド・プロパティの取り扱いというのは、どういう意味でしょう?
違いが分からないということでしょうか?
違いが分からないのでしたら、各用語の意味を把握すれば宜しいのではないかと思います。

私の場合は、最初は、コピー&ペーストで
くっつけて目的の動作になるようにしてました。
1行単位で何をやっているのか分かりやすいように
//などでコメントを行末に記載しておきます。
行末に書くと横長に表示できる環境でないと見づらいので、
●コメント
■ソース
●コメント
■ソース
のように記載するスタイルも有りだなぁと思うようになりました。

書きためたScriptは、ソース毎にjsx保存されると思いますが、
あとで流用したりするための知恵は幾つかあると思いますが、
関数化するとか、jsxをテキストとして結合して残しておくとか、
まぁ、人それぞれだと思うですが、
そういうことでしょうか?
>Web用では多く出回っていますが、InDesignですと

OpenSpaceさんでしょうか。
まずはありがたく参考にします(した)

javaScriptinDesign特有の・・であれば、リファレンスpdfなどをじっくり見てとなるのじゃないでしょうか。
後は、流星さんの仰る様に、コメントを付ける事で、老いぼれた時見ても自分にも解りやすい様に。と、
関数化は有効で、関数呼び出しのオーバーヘッドなど考えなくて良いのではないでしょうかね。
ただ関数は、一つの仕事をさせる事に徹底すると後々楽です。解りやすいしバグ取りが楽になると思いますが。
また、ある結果を得るための道筋(プロパティ参照の仕方など)は、一通りではないと思うので、正解はこれ、というのもない様な。。。
トンチンカンな書き込みでしたら、ごめんなさい。
[7496]Re: JavaScriptの保守しやすいソースの書き方について 投稿者:(z-) 投稿日:2013/04/24 12:36:34
多方面からのあらゆる例文や公開物をいくつも参考にしてどうにかこうにかやっています、という方が自分をはじめ多いと思われ、この手合いの呼びかけには上から物を言わなければいけような趣を感じるため、なかなか首をつっこみにくいところがありますが。。

架空の(実用でもいいですけど)作業内容を挙げていただき、それについてのアプローチ方法を募る方が、より具体的に意見が集まる気がしますー。

個人的には、
書き捨て物、永続使用物、大物、の3つでけっこう書き方がちがっています。
書き捨て物は、短時間での書き上げを最重要視、
永続使用物は、使い続けながら少しずつ改良していったり、過去の類似品から部分的に貸し借りする傾向にあるので、なるべく関数多めでまとめています。
大物は、あまりコンパクトにまとめようとすると途中で意味がわからなくなる事があるので(笑)わかりやすさ重視で、比較的おおらかに書いています。
3つの垣根は曖昧ですけどね。ちょっと手すさびで作った物が思いのほか便利で、つい作り込んでしまったり、などの場合もありますし。
[7498]Re: JavaScriptの保守しやすいソースの書き方について 投稿者:こに 投稿日:2013/04/24 14:30:44
>まず、私からみるとInDesignでの「オブジェクト」「メソッド」「プロパティ」の取り扱いが今ひとつわかりにくいという点があります。
お~まちさんが作成された 「InDesign Object Modelについて」を見てみてはどうでしょう?(ほかにもあるけど 日本語の説明があるのはここだけ)
http://www15.ocn.ne.jp/~preopen/dom_about.html
(リンク先ここで問題あったら指摘してください>お~まちさん)

良いコードを書く技術は、たとえば他人の書いたコードを見比べて読みやすいと思ったのを真似するとか、その手の書籍で紹介されている書き方を身につけるとかかなぁ?
>(リンク先ここで問題あったら指摘してください>お~まちさん)
あってます(苦笑)。
折角なので書きますが、私がプログラミングを始めたときは
オブジェクト=何らかの物(対象)
コレクションオブジェクト=同じオブジェクトの集合体
プロパティ=オブジェクトの属性
メソッド=オブジェクトに対する操作
てな具合に覚えました。当時は「プロパティ」と書かずに「属性」と書いてあったアプリケーションもちゃんとあったんですが。

個人的にはとにかくコメントを入れるのがいいと思います。私はオブジェクトモデルを作成していることもあるので、よく使うものは覚えてしまっているのですが、滅多に使わないものなどは、やはりコメントが頼りになります。コメントを記述することで、どこが分かっていて、どこが分からないのかもはっきりすると思います。

コメントの例としては(手前味噌ですが)、
http://www15.ocn.ne.jp/~preopen/idjs/idjscover.html
からダウンロードするjsxファイルを見てください。初めて使用するところは1行ごとにコメントが入ってますし、分からないところは分からないと書いてあります。(これを公開している自分はとんだ恥さらし)特に最初の頃はコード部分よりコメント部分が多い方が上達すると思います。
[7500]Re: JavaScriptの保守しやすいソースの書き方について 投稿者:オメガ 投稿日:2013/04/25 01:09:42
オブジェクト、プロパティ、メソッド、これらはInDesignのインターフェイスに結びつければ、
テキストフレームなど、マウスで選択するなどして操作対象にする“モノ”→オブジェクト
主にパネルやダイアログ上で行う“設定”(これには何らかの数値(値)がある)→プロパティ
作成、複製、変形、プリントなど、主にメニューから実行する“操作”→メソッド
(厳密には違うかも知れませんが、感覚的にはそういう解釈で問題はないと思っています)
結局、スクリプトはInDesign上で行う操作を順番に箇条書きにしているだけとも言えますね。

私もスクリプトを書きますが、他の方もおっしゃるようにネット上で公開されている方々から学ぶことは多いです。処理の仕方だけでなく、スペースやタブ、改行、コメントの入れ方、変数名の付け方など書き方の面でも、他の方のソースを見ることは非常に参考になります。
良いコードの書き方というのは、InDesignのスクリプトに限らず、その他の全てのプログラムに共通して言えるものなので、そういった情報や書籍を参照されるのも良いかと思います。

スクリプトをこれから勉強する方には、古籏一浩さんの「組版時間を半減する! InDesign自動処理実例集」はお勧めです。InDesignのスクリプトに関する本としては唯一ですし、とてもわかりやすく入門書としても最適だと思います。(この本の巻末に「プログラムに汎用性を持たせるには」という項目があり、これはそのまま答になるのでは…Amazonでその一部を読むことができます)

どこまで汎用性を持たせるかというのは、そのスクリプトの重要度や使用頻度にもよりますね。まずはエラーなくきちんと動くことが重要で、きれいなソースを書くことが本来の目的ではありませんから。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)