イマドキのプラグイン記述法

標準的な書き方、という基準そのものが進化する概念なのが難しいですね。
コアスクリプトに関しては、公式から一切の情報がないままほっぽり出されたので、
みんなが解明に時間をかけてしまうせいで、情報の変化が早まってしまった経緯もあると思いますね。
コアスクリプトも最初の発売から何度もアップデートされていますから、それも原因の一つかなと。

発売から5年以上経った今では標準的な書き方と呼べない代物になっていた、というような?
個人的には、「標準的」なんてほぼ存在しないと思いますね。どちらかというと、「慣習」に近い気がします。
元々足跡ひとつなかった芝生に、Yanfly氏やトリアコンタンさん等のような大量にプラグインを作っている人たちの手法によって、
獣道が出来上がっていった・・・といったイメージだと思ってます。

RPGツクールのプラグイン開発の手引きは、大抵どこの記事を読んでも
コアスクリプトのココを見てみましょう、から始まる一方で、ソレはいまいちなコードです、という裏がある…と思うとちょっと怖い。
JavaScriptに限って言うなら、僕は経験上、
「ヘタに入門ページや参考書を読むよりも、MDN公式チュートリアルをGoogle翻訳を使って読んだ方がマシ」だと思っています。
なぜなら、MDNや公式リファレンスは常に最新のことが書いてあるからです。

そういうわけではない、技術ブログや参考書は、時代が変わるにつれどんどん情報が古くなっていきますから、
それらを「標準」とか「教科書的」だと思って読んでしまうと、後々になって最新の情報とのギャップで困ってしまうことも多いです。

MDNや公式リファレンスを読んでもわからないことがある場合には、技術ブログの記事も便利なんですけどね。
 
  • Like
Reactions: WTR

fspace

ユーザー
コメントありがとうございます。

加えて、簡潔であるかどうかは読み手の知識や技量にも依存する、と伝えておきたい。
なるほど簡潔だな、と今なら思いますけど
少なくとも1年前の私には、このコードの意図がサッパリ読み取れなかったはず。
配列をループで操作しようというときに for 以外の選択肢があることを知らなかったんです。
JavaにStreamが追加されたときにfor文の方がわかりやすいと主張していた過去の自分を思い出しました。「こう書いたほうがいい」系の話はたいてい昔の自分に刺さりますね。新しい書き方に変えてそれがいいと感じたからそう主張しているパターンが多いので、当然と言えば当然ですが。わかりやすさが読み手の知識や技量、もっと言えば慣れに依存するというのはその通りだと思いますが、知ればきっと同意がとれるはずという感覚があるので、知識がない人にもわかるように書くべきとはあまり思いませんね。もちろん文脈にもよりますが(入門用記事とか)。

そこからようやく世界を広げようと一歩踏み出してみたのに
ループといえば for だろう、と思って書いたらお前の書き方は稚拙だと馬鹿にされ
コアスクリプトにもそう書いてあるし、おまじないだと思って真似して var って書いたら邪悪だと罵られ
いやそこまでは言ってない、と思われるかもしれませんが
この手の議論を見かけるたびにそれに近い間口の狭さを感じなくもない。
基本的にプログラミングや、もっと広く学問の世界では、技術と人は分離して議論する傾向があると思ってます。何かやり方を否定したとしても、それはそのやり方をしている人を非難しているわけではなく、読み手にしても、自分のやり方が否定されたとしても、それは自分が馬鹿にされているわけではないと受け取ります。技術に関する意見が合わないからといって、相手を嫌うことはありませんし、もちろんその逆もありません。そうしないのが半ばルールとなっています。そうでないと、まともに技術の良し悪しを議論できないからです。

一方で、一般には「○○すべきだ」という主張はそうしていない人への当てつけのようにとられることがあります。プログラミングの世界に足を踏み入れたばかりの人もそう感じることが多いようで、初心者に対して厳しい指摘をすべきかどうかというのはよく問題になります。結局はどこかでルールに適応するしかないんですが、その前に嫌になってしまう人も多いようなので難しい問題ですね。

もっとも、私にわからないからレガシーな書き方にしろとは言えないんでただの愚痴なんですけども。
万人向けに書くことはできないので、このあたりは「わからなければ調べて」と言うしかありません。

ところで、ここで聞いていいものか微妙な気はするんですが
Graphics.frameCount の話、実はコレ違うんじゃないかとうすうす感じながらも
書いたらそれっぽく動いちゃったんで使ってるん箇所があるんですけど何を使うのが正解なんでしょう。
はどはど さんの言う通り、多少カウントが変化しなかったり飛んだりしても大きな問題がないのであればそのまま使っていいと思います。ツクール的にはスプライトに専用のカウンタを用意して独自にカウントするのを想定している感じがします。

まあこの場でJSの話で白熱してしまうと、いろんな人を置いてけぼりにしてしまうので ;^^)
ちょっと僕の返信も少々場違いだったかなーと少し反省してます。
続きはプライベートメッセージ(DM)でやりましょう!(こちらからは送れないようなので、許可するかそちらから送信お願いします。)
記事に関する議論なのでこのスレッド内でいいんじゃないでしょうか。読みたい人は読みますし、読みたくない人は読まないと思います。もしかしたら他にも参加する人がいるかもしれませんので。

fspaceさんの主張を全体的に拝見する限り、極力「外部参照性を減らしたい」派なんでしょうね。
そういった考え方がベースにあるから、記事のようにされているのだろうなあ、と思いました。
その点は僕は正反対で、「便利なものがあるならそれを優先的に使えばいい」派なので、これまでの発言もその考え方がベースです。
これは確かにそうですね。自分が管理できないレベルになってしまうのを嫌ってツールの導入には慎重派です。

僕は本業でNode.jsを使ったWEBフロントエンド開発を生業にしていて、OSSプロジェクトにも触れたりしますが、
fspaceさんの言う「一般的」とか「教科書的」というのは、僕の経験上ではちょっと違うなと思う事が多かったのは確かです。
なんとなくすれ違いの原因がわかったような気がします。

そもそも私は今のOSSプロジェクトで書かれるようなプログラムを純粋なオブジェクト指向だとは思っていなくて、オブジェクト指向と関数型を組み合わせた名前のない何かだと思っています(例えば、「継承よりコンポジション」やイミュータブル型はオブジェクト指向を否定する概念です)。私がオブジェクト指向として「一般的」「教科書的」と書いた場合には、純粋なオブジェクト指向を指しているため、今のOSSプロジェクトで「一般的」な記述とは限りません。

おそらく現代的JavaScriptに関する基本的な認識は一致しているのだと思います。

もしかしたら、僕もfspaceさんと似たような記事を書いてみるのが一番なのかもしれませんね。やってみようかな?
私では書けないような部分の話も聞けそうなので、時間を割けるようでしたらぜひ書いてみてください。

標準的な書き方、という基準そのものが進化する概念なのが難しいですね。
初学者の、とくにRPGツクールユーザーにとっての基準はRPGツクールのコアスクリプトなのでは、と思っていたら
発売から5年以上経った今では標準的な書き方と呼べない代物になっていた、というような?

RPGツクールのプラグイン開発の手引きは、大抵どこの記事を読んでも
コアスクリプトのココを見てみましょう、から始まる一方で、ソレはいまいちなコードです、という裏がある…と思うとちょっと怖い。
技術は常に進化していくので時代遅れのコードになっていってしまうのは仕方のないことですね。どんなに完璧なコードも数年後には完璧ではなくなるので、あまり深く考えず、いい書き方を知った時点から切り替えていけばいいと思います。

JavaScriptに限って言うなら、僕は経験上、
「ヘタに入門ページや参考書を読むよりも、MDN公式チュートリアルをGoogle翻訳を使って読んだ方がマシ」だと思っています。
なぜなら、MDNや公式リファレンスは常に最新のことが書いてあるからです。

そういうわけではない、技術ブログや参考書は、時代が変わるにつれどんどん情報が古くなっていきますから、
それらを「標準」とか「教科書的」だと思って読んでしまうと、後々になって最新の情報とのギャップで困ってしまうことも多いです。
JavaScriptは歴史が長い言語だけに古い情報が多いというのはありますね。多くの人の手が入るMDNがいいというのには同意です。ただ、参考書も数年以内に出版されたものを選んで買うのであればそれほど悪くないとは思ってます。「ツクールでプログラミングを始めよう」系のサイトの情報が古くなっていってしまうのはどうしようもないですね。メンテナンスするのはとても手間がかかるので……。
 
トップ