Griverさんへの返信

前のエントリにいただいたコメントへ返信します。

過去にコードの見た目で書き換えてた人がいたのかもしれませんが、私は「人のコードはむやみに変えるべきではない」という考えです。
書いた人の意図や尊厳を大事にしたいです。そうしないと編集合戦になりそうですし...

まったく同感です。より良いコードを探っているだけで他の方の人格を否定しているわけではありません。

descendant::ul[count(./li)>9 or .//a[@data-src]][1]

こちらは意味不明なコードなんですよね。

そうですか。ご理解いただけなくて残念です。代案を教えていただけると幸いです。pixivは特にクラス名で取得してしまうと際限がなくなってしまう気がします。

ちなみに DMM や walkerplus(http://wedata.net/items/85745?rev=155845) で元の記述に戻したのは t_f_m さんのコードが「どこを取得したいのか」をはっきり示すコードで動作も問題なかったからです。

ミスに気づけなかった以上言い訳になるのですが、walkerplusに関しては更新前のコードが少し変則的な感覚はあります。

//main/section/node()[contains(.,'start ニュース本文')]/following-sibling::*[following-sibling::node()[contains(.,'end ニュース本文')]]

アイテム: walkerplus - データベース: AutoPagerize - wedata

難しい判断を求められるサイトで悩みました。トマ村さんもこのコードが決して本意ではない気がします。どちらが実用的かはまた別の議論でしょうが少なくとも手を入れたことが間違いだとは思いません。

かましいのを承知で無理を言わせていただくと、できればそのまま突き返すよりは編集を加えていただけるとありがたいです。このケースでは難しかったとは思いますがコードを全否定されると流石にヘコみます。

要素名だけでコードを書く場合は url 正規表現を厳しめにする、構造がワンパターンなサイトのみにする、main, section, article など用途が定められたものを基準にするのであれば問題は出にくいと思います。
そうでなければ @id, @class, @role などをコードに含めて動作の安定性を高めたり、コードを見た人に「この辺りを取得するよ」という意思表示をしてもらえると助かります。


私が言いたいのは「コードを短くするために必要な @id, @class を省略しないでほしい」「コードの綺麗さよりも動作のほうが大事」ということです。
長文失礼しました。

意思表示というのは具体的にどうやったらいいのかよくわかりません。コメントで伝えるとかですかね?

もし誤動作の苦情がGrieverさんのような開発者の方へ向かうとしたら心苦しいのですが、一つ一つのsiteinfoにベストを尽くした結果ならばご容赦いただきたいところです。

動作を最優先させるのはもちろんですが、美しさを求めてはいけないのでしょうか。同じことを繰り返しているだけでは何も変わらないはずです。