アーカイブ

2006年 6月 9日 のアーカイブ

一つは、前回の高速置換に変更した部分で、
確認せずに一括で置換するのは問題ないが、途中から確認やめて全部やらせる際、
その、切り替わった瞬間での後方置換だか前方置換だかが上手く動かない。
といっても、試したのは$0だけで、1から9は試してない。
検索して見つかってから、確認ダイアログ出して閉じてってやってる間に、
検索ヒットした文字をハイライトする動作が入るので、
それのせいで前方置換だか後方置換だかの結果がすり替えられてしまうっていた。
これは、検索用のオブジェクトとハイライト用のオブジェクトを分けてない設計がまずいのだが、
このまずい設計の方がスピードが出せるということでそうしたみたいで覚えてない。
覚えてないから、まずくない設計に直すかというと、遅くなるからまずいままで不具合回避する。

もう一つ見つけたバグも複雑な条件なのだが、
正規表現を使わない検索語句のハイライトをしていて、
折り返して2行目以降に追いやられた場所にヒットした場合で、
しかも1行目にタブ文字が入るなどして、2行目以降より文字数が少なくなる場合で、
2行目以降のハイライトなのに1行目の文字数を参考にしてしまって、
それを超える位置でのハイライトをやめてしまうというバグが、、、って説明長い。
これはずっと潜在していたのに自分で見つけられなかったのはそういう複雑な条件だから。

さて作業だが、結局PHPは大量のキーワードを比較することになって、
スピードが心配だったが、やってみたらたいしたことはなかった。
いや、たぶん大したことはあるんだろうけど、描画APIの遅さに比べたら全然小さい。
よって、VBの方も3段階のキーワードをやろうと思ったのだが、
VBは予約語と関数以外にどこに手を出すのが重要かが判断できない。
PHPのような定数っぽいのは、.NET風のピリオドが付く名前になってたりするし。
そういうわけで、VBはとりあえず2段階にするか。

あと、C#だが、2.0追加分だけでなく、overrideやinterface等も抜けていたが理由は不明。
自分がどこを参考にしてキーワードを並べたのかわからない。

とりあえずこんな感じの作業した。

現在、真魚にはPHP用に入力補完の単語リストがあったりするが、
そこに並べられている関数名は、萌ディタの定義ファイル?を丸写ししたもの。
実に649もの関数が、何を参考に並べられたものかは知らないが、とりあえずパクった。
予約語は予約語として定義されてるからわかりやすいのだが、
関数は環境によって使えたり使えなかったりするらしく、どれを候補にするかの基準が欲しい。
試しに、今これを書いてるこのPCで、これの関数一覧取得をやってみた。
http://www.doyouphp.jp/sample/sample_others_funclist.shtml
1341もの関数がリストアップされてしまった。
この数でも、単語の入力補完の方は特に問題ないだろう。
問題ありそうなのは、今やろうとしている、色分けの動作の方だ。
よく、正規表現で強調表示するテキストエディタで、条件が増えるほど遅くなるとか言うけど、
真魚の色分けの仕組みでも、英単語を表示する前に、予約語や関数と照らし合わせるわけで、
定義された単語が多ければ多くなるほど描画の足を引っ張ることは避けられない。
描画を遅くしている主な原因はAPI呼び出しであって、語句解析はたいしたことないのだが、
それはたかが数十の予約語しかない場合の話でしかなく、
これほど大量の関数名と照らし合わせることになると、
照らし合わせるアルゴリズムまで考え直さなきゃいけないほど、相当の負荷になりそうだ。
使える関数は環境依存と言うことで、XREAで使える関数も調べてみたら1342。
一個違いだから、どの関数が増えたのかと調べてみたら、そうじゃなくて、
どちらか一方でしか使えない関数が結構たくさんあって、総数がたまたま近かっただけ。
両方で使えそうなものを抜粋してもまだ1000以上ある。
そこで、get_loaded_extensions()で列挙されるモジュールのうち、
standardに属するもののみで関数を取得してみた。
それでも452個もあるのだが、関数名の色分けをやるのなら、これ以上は削れない。
PHP5ならもっと増えるかも知れない。

さらに萌ディタの定義ファイルにあるのは、関数名だけでなく、PHP_VERSIONなどの定数とか、
$_POSTみたいなのとかも載っている。
これもどこからどんな基準で集めてきたのかわからないので調べ直しが必要だが、
とりあえずは関数名までの色分けで実装してみるか。

あたし自身、野球の楽しみ方はわからず、みてもイライラするだけなので見ない。
きっと、サッカーを見て楽しくない人もいるだろうが、自分なりに楽しみ方を紹介してみる。
つーかまずは言葉だ。用語がわからないと話にならなん。
でも用語がわかれば、無駄に使いたくなって楽しめるはず。

普通の人だとゴールシーンしか楽しめなくて当たり前。
点を取り合うスポーツだから、どっちがシュートしたとか、点数が入ったとか、誰が決めたとか、
勝敗に関わることだから、得点シーンぐらいは説明しなくても楽しいはず。
世間があまりサッカーに興味がなかった頃、Jリーグが誕生して話題になったのは、
点数を入れた後にどんなパフォーマンスをするかみたいな事だったし、
ゴールをたくさん決め、独特なダンスを披露するカズに注目が集まった。
でも、サッカーって1試合で何点も入る物じゃないので、これだけだと暇な人は暇。

そこで、次に登場するヒーローはフランス大会での中田英寿、ヒデだ。
フォワードにかわり、ミッドフィールダーというポジションが、今日本で一番流行っている。
ヒデは得点を狙うポジションではないし、パフォーマンスもしない。
この人がなぜヒーローなのかというと、キラーパスという持ち味があるからだ。
パス?そう、球技では当たり前の、見方にボールを渡す行為。
こんな当たり前のことでなぜヒーローになれるのか、そこが面白いのだ。
確かにシュートを決める人間の技術は必要なのだが、
いくら技術があっても、技術ある相手の守備陣から点を取るのは非常に厳しい。
そんな状況を打開するため、一本のパスでゴール前のチャンスを作る選手がいる。
カズにパスをするのではなく、自分がパスを出す方向にカズを走らせる、まさに司令塔
相手の守備陣がいないスペースを見つけて、そこに見方を走らせるのだ。
最近の日本は決定力不足とか言われたりするが、
これは、すごくいいパスが通って、惜しいのに点数が入らないときに使う。
今回のW杯では、司令塔を俊輔にするみたいで、ヒデはボランチをやる。
司令塔の位置はフォワードの後ろだから2列目と言われ、ボランチはその後ろの3列目だ。
ヒデはパスがうまいだけじゃなく、ある程度守備が出来るのでこの位置に入る。
相手守備陣は、主に1列目と2列目をマークし、3列目までマークするのは難しい。
よって、3列目でマークが外れたヒデが、持ち前のパスで活躍することを期待されている。
ただし、サッカーには待ち伏せ禁止のルールがあり、
はじめから良い場所に待ち伏せたフォワードにパスを出すとオフサイドになる。
よって、パスは相手の守備の最終ラインを追い越して走るスルーパスが必要だ。
縦の待ち伏せは禁止だが、横の待ち伏せは許されるので、
右サイドでおとりになって、がら空きの左へサイドチェンジすると効果的。
そして、サイドからゴール前へバクチのパスをだして得点を狙うのも日本は得意。
昔はこのバクチをセンタリングと呼んだが、最近はクロスというようになったみたい。
これで、得点シーンだけでなく、得点しそうな惜しいシーンまで楽しめるだろう。

また、相手の守備をパスやドリブルでかいくぐる、流れの中での攻防だけでなく、
反則だったり、ボールが外に出たときなどの、セットプレイの攻防も楽しい。
流れの中では、ボールを取られても取り返すことで得点につながらない事が多いが、
セットプレイではゴールが近すぎて、たった一つの攻防が得点につながってしまう。
セットプレイのチャンスを作るために、反則をせざるを得ないプレイをするなど、
いかに相手陣内で反則をさせるかとか、相手にボールを出させるかも楽しんで貰う。

攻撃の話ばかりしてきたが、日本のサッカーで一番面白いのは組織的守備だ。
正直な話、日本人のサッカーは1対1では海外に通用しないのだが、
みんなでルールを決めて、声を掛け合ってコミュニケーションをとり、
数人がかりでパスコースを塞いでボールを奪う戦術でなんとか成り立っている。
ボール持ってる人を囲むことでプレッシャーをかけて、不用意なパスを出させるプレス戦術だ。
パスよりもドリブルに頼る南米チームが相手だと、個人技で負ける日本は極端に弱い。
ドリブル中心ではなくパスが奪えないときは、プレス効いてないなぁとか言えばいい。
この戦法は、味方選手が近くに固まっていないと、相手選手に逃げる場所を与えてしまうので、
全選手がなるべく近い位置にいるコンパクトなサッカーを目指している。
キャプテンである宮本が、最終ラインの上げ下げで、この調節を行っている。
守備は、守備担当のディフェンダーだけではなく、全員でやってるところが面白いのだ。
守備が楽しめれば、もう試合中で暇な時間は一切なくなる。
常にボールを奪うための何かをやってるし、常に得点のために何かしてるのだ。

本当はミスの話とかカウンターの話とかオフザボールとかまで書きたいがキリがないな。
システムとかも語りたいなぁ。
この辺できりあげ。