• 最近Processingなるものを触っている

    2019-09-19 19:04
    そもそもProcessingってなんぞ?
    Wikipediaさんによると…
    https://ja.wikipedia.org/wiki/Processing
    "電子アートとビジュアルデザインのためのプログラミング言語であり、統合開発環境である。
    アーティストによるコンテンツ制作作業のために、詳細な設定を行う関数を排除している。
    視覚的なフィードバックが即座に得られるため、初心者がプログラミングを学習するのに適しており、
    電子スケッチブックの基盤としても利用できる"
    …だ、そうだ。

    公式サイトはこっち。
    https://processing.org/

    初見で「そういうプログラミング言語か?」と思ってたら、
    APIの提供をしている統合開発環境なんだとか。
    基本はJavaなんだけど、PythonやJavaScript(p5.js)に
    モード切り替えして実装もできる。
    とはいえp5.jsを触った感じ、APIに完全な互換性が
    あるわけじゃなさそうだから、そこらへんは注意。

    互換性で言うなら、Javaで実装したものを
    JavaScriptで動かせるProcessing.jsってのもある模様。
    ただし、2018年12月で更新が停止して使用非推奨になったとか。
    OpenProcessingという、プログラム投稿サイトでも、
    Processing.jsを廃止して完全にp5.jsに移行するらしい。

    Processingjs Deprecation Notice | OpenProcessing FAQ
    https://intercom.help/openprocessing/en/articles/3250763-processingjs-deprecation-notice

    あと調べたところ、ProcessingはAndroidでも動かせるようにできるし、
    もっと言えばマイコンでも動かせるらしい。
    Arduinoが筆頭で、Raspberry Piでもいけるとか。
    …Raspberry Pi 4 model Bの技術基準適合証明まだですか(正座待機なう


    で。
    自分が最近触ってるのはどっちかってとp5.js。
    ExtendScript(AEスクリプト)みたいな、
    特殊環境でのみ動くJavaScriptのタイプかと思いきや、
    単純にライブラリをhtmlに読み込んでcanvasを更新してるだけの模様。
    そういう意味じゃ、前にお世話になったthree.jsっぽくもある。
    つまり普通にブラウザで再生できる。つおい。

    問題はここから。冒頭にも書いた
    「詳細な設定を行う関数を排除している」環境ってなんやねん、と。
    まあいろいろあるんだけども、個人的に感じるところは…
    MVC(Model View Controller)の概念がない、かな。

    実装するのは基本setup()での初期化処理と
    draw()での毎フレームの描画内容指定だけ、なんだけども、
    「Spriteクラスを継承して、更新処理の後に描画処理を…」
    「newしたオブジェクトのxの値を更新して移動させて…」
    みたいな概念が全くない。
    あるのはただ、図形の描画処理だけ、みたいな。

    この座標に、この図形を描く。おわり。

    一応「こいつの現在の状態はこれ」みたいな情報を持った
    モデルに該当するオブジェクトを自作することはできるけど、
    基本それをサポートしてない。
    当たり判定?なにそれおいしいの?状態。
    一般的なゲーム制作なんて以ての外。不向きオブ不向き。
    キャラの存在しない抽象的なゲームなら作れなくもないかも。

    さらに、描画される画面はリセットされない。
    draw()の中で画面をリセットするなり、塗りつぶしなおさないと、
    まるでWindowsの昔のスクリーンセーバーの如く、残像が残りまくる。
    ある意味原始的。

    メモリの管理はしなくてよくて、簡単な図形は描画できる。
    さらに、キーボードやマウスの入力は(取れるけど)取る必要性すらなくて、
    本当に「アーティストによるコンテンツ制作作業のため」という名目の下、
    バグなんて存在しない無法地帯を展開できる感じ。
    イイ感じの出力が得られれば、それが正義。

    「亀を動かして軌跡で絵を描く」という教育向け言語のLOGOを
    リッチにした感じの方がニュアンス的には正しいかもしれない。
    画面を更新し続けてアニメーションさせる必要もなく、
    出来上がった静止画像を作品として扱ってる人も多い模様。
    というかそういう人の方がメインな模様。
    ほげぇ~…異世界じゃぁ~…


    で。
    自分としては、2020年でFlashが終了するのに合わせて、
    ActionScript3.0…AS3もサヨウナラなわけで。
    研究室で使ってたメイン言語であるAS3がサヨウナラするにあたり
    アレぐらいのノリで実装&公開できる
    手軽な環境がないのは悲しいところではあって。

    Processingはそういう意味では手軽なんだけども、
    手軽すぎて心配になるレベルの代物ではある。
    そもそもアニメーションがメインじゃないしなぁ…

    昔、FlexBuilder3で「ブログパーツっぽいもの」っつって
    Flashで1日1個何かしら作ってた時期があるんだけども…
    FlexBuilderもブログパーツも今となっては
    「なんだソレは」と言われそうな用語だよなぁ…?ww

    今はその当時のノリに近しい感じで、
    1日1個Processingで何か作るごっこをしてる。
    …いや、単純に作るだけではなく、文字量はツイートできる範囲縛りで。

    Processingを知ったきっかけがそもそもソレだったりする。
    「つぶやきProcessing」というタグをつけて、Processingで動くコードをペタる。
    ちなみに現在のツイッターの仕様上、280文字までつぶやける。
    タグをつけるから実質261文字…かな。その範囲で組む。

    この縛りが1日1個組む分には丁度いい分量なもんで。
    作り込みもせず、マジで落書きするが如く組んでる。
    たまーにちょっと真面目に組んでたりするけども。

    すでに1ヶ月ぐらいは作ってて、ブツはGitHubにも上げてる。
    https://github.com/SourceOf0-HTML/processing-p5.js
    冒頭でちょっと取り上げたOpenProcessingってところにも投稿してみたり。
    https://www.openprocessing.org/user/187469/
    まあ、進捗そんな感じ。

    WebSocketの使い方勉強して合体させたら、
    当時研究室で作ってたハードウエア+Flashなやーつを作れて、
    それはそれで面白いことできるかもなぁ。


    ん。報告以上。
  • 広告
  • Minecraft: Java Edition 購入

    2019-06-16 18:28
    2月にマイクラの体験版をパッドを接続してプレイ&動画撮影したのだけども、
    いまいち目標らしい目標も進捗もなく、ド下手プレイをしただけだったので、
    体験期間も過ぎて終了&動画も放置してたんだけども。
    3月末におとんからグラボ(1080Ti)を貰ったし
    「こういう遊び方ならマイクラやってもいいかな」
    と思える内容もあったりした結果「Minecraft: Java Edition」を
    購入&プレイしたのでそのあたりの報告。


    ■昨今のマイクラの状態を整理

    自分がマイクラを知った時期はまだBeta版で、
    クロスプラットフォーム版と分離なんて当然されてなかったけども。
    それでもMOD入れたりなんだかんだできるあたり、
    Java版の方が楽しめると、個人的には思っている。

    とはいえJava版のアプデがそろそろ荒ぶって来てるなーという印象。
    エンドもなければラスボスにあたるエンダードラゴンもおらず、
    クリアなんて概念はなかったし。
    アイテムも片手持ちだったのが、今では両手それぞれに持てるようになったし。
    敵Mobもへちょかったのが、AI賢くなって動きが良くなったし。
    そこまでならまだしも、今となってはバイオーム増えまくりMob増えまくりで、
    「バニラなのに元々MOD入ってるような状態やんけ」で、すごくカオスな感じ。

    ダラダラ更新されて、現行最新バージョンは1.14.2。
    オレが購入してプレイし始めたのは1.13.2からなので、
    プレイ開始早々アプデに巻き込まれ、若干パニクったよね。
    「今のマイクラは海がどえらいことになってんだなぁ…イカの存在浮きすぎ」
    とか思ってた矢先、村と村人周りが大更新された挙句
    「略奪隊」と「襲撃」のシステムのせいで、
    その辺に敵Mobが群れで沸くようになった挙句、
    適当に蹴散らした状態で村に入ると、村が襲われるという…ね。
    突然沸く「行商人」も正直邪魔じゃね…?有効活用できた試しがない…

    まあマジで嫌なら過去バージョンにして遊ぶこともできるからありがたい。
    MODも当然と言えば当然だけど、過去バージョンにだけ対応してるものが大半だし。
    そこらへんの融通が利くから、どんどん更新していってるのかもしれない。


    ■プレイスタイル

    パソゲーそのものをあまりやらないってのもあって、
    体験版はパッドを導入してやったりしてたんだけども…
    使いたい機能に対してボタンが足りないし、
    カーソル移動速度の微調整が効かないからエイムしにくいしで、
    結局キーボード&マウスで操作に慣れた方がいいという結論に至った。

    何より一番デカいなぁと思ったのが、三人称視点…マイクラで言うF5視点。
    元々マイクラは一人称視点で進行させるのがデフォだと思い込んでる部分があるし、
    だからこそ後ろからきた匠に爆殺されることも多々あると思うんだけども。
    F5視点に慣れれば後方確認もできるしで、かなり安全&操作しやすいと思った。
    とはいえ、狭い洞窟なんかに入るとカメラが荒ぶるから、
    そこらへんはうまく切り替えられないとダメだなぁと、しみじみ。

    あとはサバイバルモードに縛られる必要もない、というところ。
    今のマイクラは特に、アイテムもメチャクソ増えているし、
    その分クラフトのレシピも増えまくってるしで、
    初見だとどれだけのことができるか、よく分からんわけで。
    自分はクリエイティブモードで通常ワールドを作って、
    コマンド使いつつ、サバイバルモードと切り替えつつで、様子見した。

    やってみた感じ、地上よりも地下が安全だなぁという印象。
    昔から「何をするにもまず木材」だったわけだけども、
    地下にも結構な確率で廃坑が生成されるようになってるっぽいし、
    廃坑が木材で出来てることもあって、廃坑を見つけさえしたら、
    地上で木材収集する頻度を大分減らせるように思えた。
    地下採掘でブランチマイニングもして、装備も充実させられたら、
    あとは安心して地上探索なりなんなり、かなぁ?

    トラップタワー建築自体はまだ試したことないけども、
    エンチャントまで手を付けるとなると、作らないときつそうだなぁと思った。
    とにかくエンチャントするための経験値が足りない。
    ただ、村での交易を繰り返せばエンチャント済みの装備が
    手軽に手に入るようになるから、いっそそっちを狙う方が手軽かもしれない。
    「拠点作るのも面倒だし、村に住もう!」ってのが一番無難?
    村は襲撃に備えて周りを要塞化するのがいいらしいよ。やってないけど。

    MOD導入は今のところしたことない。バニラであれこれ試してる段階。
    というか、バニラの時点でやれることが増えすぎてるってば。


    ■建築

    正直、メチャクチャ掘って整地して湧き潰しして素材集めて建築して…って
    サバイバルモードでマジで時間が掛かて建築したいかと聞かれると…
    そうでもないのよね。
    サバイバルなら装備を整えて、自分が満足できるぐらいの操作を身に着けて、
    快適に敵Mobを倒せるぐらいになれたらいいかなぁ、って感覚。

    そういう意味では建築はクリエイティブモードで
    がっつりやる感じがいいなぁと思ってる。
    で、素材やエンチャント周りも多少調べはしたのよね。
    レッドストーン回路は使いこなせた方がいいだろうなぁと思って、
    スーパーフラットのワールドであれこれ試したね。

    遅延とかフリップフロップ回路とかクロック回路とか、
    あれこれ調べては作ってみて、なるほどなーと。
    ただ、そもそもマイクラのレッドストーン回路周りって
    バグありきで成り立ってるものもあるし、
    ブロックによって出力範囲がそれぞれだしで、なかなかややこしい。

    そういう意味でも、やっぱ何よりコマンドが魅力的だなぁと思った。
    時間を止めてずっと朝もできるし、ずっと晴れにもできるし、
    敵Mobが湧かないようにもできるし、近辺の建築物検索もできるし、
    座標指定でワープもできるし、バフもかけたい放題だし、
    死んだときにインベントリを保持するようにもできるし。

    コマンドブロックは前々から存在を知ってたから、
    早速使って見てたんだけども、コマンドブロックとfillコマンドの
    組み合わせが便利すぎてヤバかった。
    好きな素材のブロックで埋めたい範囲を相対座標で指定したコマンドを
    コマンドブロックに設定しておいて、あとは好きな場所でポチっていけば、
    豆腐ハウスも量産できるし、整地も楽だし。

    加えてストラクチャーブロックが便利すぎた。
    使い方にかなり癖があるけども、建築物をセーブ&ロードできるのはデカい。
    自分で好き勝手作ったやつをセーブして、回転だの反転だのしてロードしまくれば
    それっぽい建築ができるあたり便利。
    建築物の名前さえ分かっていれば、ロードすることで村を自力で作れてしまうのも強い。
    Mobも一緒にセーブできるし、ストラクチャーヴォイドを使えば空気抜きもできるし。
    強すぎ。


    ■マルチ鯖

    最初「自鯖できるかなぁ?」と思って軽く調べてみてたんだけども、
    IP固定してポート開放しなきゃいけないとか、ガチ鯖やねんなぁと…ww
    我が家はおとんが別件で鯖を立ててたりするし、さすがに見送った。
    ただ、大型マルチイベントとかやってる人の情報を見る限り、
    主催者が専門知識のある人にお金払って依頼してやってる上、依頼されてる側も
    「個人的にやってるけど規模がデカいから電気通信事業者としてやってる」
    とかなんとか。そんなことになるのね…

    で。そんなことせずともレンタル鯖もいろいろあるようで。
    公式の鯖があるのは前々から知ってたけども、無料枠だと期限付きだし、
    有料だと月額発生するし、そこまでするつもりもないし…

    今は「aternos」っていう無料鯖を試し中。
    ロースペックだし無操作時間10分で追い出される仕様だけども、
    数人だけで遊ぶ分には問題ないと思う。
    バージョン切り替えできるし、MOD入れられるし、
    マップのアップロードダウンロードもできるし。

    マルチ鯖ともなればローカルのマイクラともある程度差が出てくるわけで。
    初見だと、とにかくラグがえぐい。矢が時間差で飛ぶ。
    これは確かに「矢を追い越して自分に刺さった」事件が起こるわ…としみじみ。
    エリトラ&花火でビュンビュン飛ぼうものなら、
    ロードが間に合ってないマップ外まで出てしまって、頻繁に戻される。

    試してはないけども、マルチが重いのは最近のバージョンであって、
    1.0.0は超軽い、1.8.0ぐらいまでなら安定して遊べる、
    それ以降はラグいしバグりやすい、って話は聞いた。
    マルチ鯖で遊んでる人の動画とか見てると、大抵バージョンが低いし、
    そういうことなんだろうなぁ…

    マルチ鯖特有と言えば、ホワイトリストとOP権限もあるよね。
    ホワイトリストの設定さえしておけば、鯖に入れるプレイヤーを指定できるし、
    OP権限を持ってる人しか、えぐいコマンドは実行できないし。
    まあ…入ってきた友人が「テレポートっでどうやるんだっけ?」って言うから
    「OP権限ないと無理。付与するわ」っつって、OP権限付与してさ。
    「これでやりたい放題できるで」っつったら…
    次の瞬間killコマンド打たれて、そりゃあもうクソ笑ったよね。うん。

    今はとりあえず、特に目的らしい目的もなく、
    マルチ鯖上でストラクチャーブロックを使って建築してみてるところ。



    他にもいろいろ書こうかと思ったけど、今回の報告は以上。
  • 「SVGでアニメーションさせたいんじゃ」の詳細報告

    2019-03-06 22:04

    放送でも取り上げてたけども…
    放送内では語り切れないことについてクッソだらだら書いていくぅ~↑


    安売りしてたとかでおとんが買ってくれた
    Moho Pro12 と Poser Pro 11
    のうち、今回使ったのはMohoだけ。

    Poserの方は自作で3Dモデルを作る技術もツールもないので、いまいち使い道が思いつかないnow。
    デッサン人形代わりにはなるかもね?ぐらい。
    大量にプリセットがあるけども、リアルテイストすぎて上手く使いこなせる気がしない(白目)


    【Mohoに対するマニアックな感想】

    Mohoの方は2Dだから無茶ができる感。
    ラスタ形式でもベクタ形式でも読み込めるし、ボーンを入れられるし、アニメーションを付けられるので、大体でOKができてありがたい。
    フォトショ(psd)もイラレ(ai)もそのまま読み込める。
    が、イラレはバージョン8までの形式しか対応してないらしく、CC2019を使っていようが、保存時にわざわざバージョンを落とさないといけない。
    まあaiを読み込めるだけマシ?

    Moho側で完結して作る場合はベクタ形式だから、パスの扱いに慣れてない人はキツいだろうけど、逆に言えばベクタ形式系の編集機能は付いてるわけで。
    読み込んだデータも含め、パスの線の太さ・角度・塗りあたりもその場で編集&アニメーションできるし、フレーム間で勝手にモーフィングしてくれる。
    ただ、アンカーポイントの数の変更には弱く、途中で変形させるために無駄にアンカーポイントを増やす羽目になったり…
    その辺も含め、AEのシェイプ機能みたいなもんなわけで。
    シェイプ乱用に定評があるオレ歓喜。


    Moho上でのアニメーションの概念についてだけども。
    描画ツール系でよくあるレイヤーと、AEのコンポジション・キーフレームの概念にプラスして、ボーンを使って制御する感じ。
    理解できるまでクソややこしかったけども、分かってしまえばクソ便利だなぁという印象。

    表示時の重なり順はレイヤーパネル上の順になる…まあ描画ツールではよくある話で。
    途中でレイヤーの表示順序を変更するようなアニメーションは、上位のグループ(フォルダ)のオプションで設定すればできるようになる。
    AEだったら同じコンポのレイヤーを重ねて、切り替えたいタイミングでインポイントとアウトポイントを…
    ってやるところを、アニメーションの再生途中でマジでレイヤー入れ替えちゃうあたり、かなり強引。
    意図せず編集途中でレイヤーを増やしたり移動させたりすると、既存のレイヤー順序アニメーション設定がご乱心なさるのでマジ注意。

    で、このレイヤーはAEで言うところのフッテージ…かと思いきや、コンポ的な扱いらしい。
    つまり、レイヤーを増やせば増やすほどコンポが増えるようなもので、グループレイヤーは中に入れてるレイヤーのプリコンポみたいな感じ。
    レイヤーの各々にタイムラインが存在し、各々にアニメーションの設定を入れる。
    グループに移動・回転アニメーションを設定すると、中のレイヤーのアニメーションも再生しつつ、一括で移動・回転する。

    単なるグループもあれば、機能を持ったグループっぽいものがあって…
    特にMoho的に一番重要であろう『ボーンレイヤー』は、中のレイヤーに対してボーンを入れてグリグリ動かせる。
    単純にボーンに追従させて動かすこともできるし、メッシュワープみたいな感じでグニグニ変形させながら動かすこともできる。
    今回は使ってないけど『フレームバイフレームレイヤー』なら中のレイヤーをパラパラ漫画形式で再生、『スイッチレイヤー』なら口パクや目パチのような差分レイヤーとして管理&切り替えられるようになる。
    ラスタ形式だったらクソお世話になりそう。
    ボーンの中にフレームバイフレームやスイッチを入れ子にすることも可能。
    マスクの設定を入れることも可能。今回は目を顔でマスクしてるけど…作業画面では分からないね。動画出力時には反映される。
    あとは使ってないけど、乗算やスクリーンのようなブレンドモードもある。
    大体のことできるやん…


    あと、めっちゃAE用語で喋っちゃうけど…
    全コンポ(レイヤー)のタイムラインのインポイントは一律同時。つまり全部同時再生状態。
    だからこのままだと再生開始タイミングの調整ができない。
    特定アニメーションを含んだコンポを、インポイントをずらして設置して、再生速度はタイムリマップ入れて微調整!
    …ってことは、できないofできない。

    その代わりに使うのが『アクション』&『スマートボーン』。
    個人的にはこの機能が一番ヤベェと思っている。
    アクションごとのタイムラインは孤立していて、アクション各々にコンポのアニメーション設定ができる感じ。
    作ったアクションを別のアクションにそのまま読み込ませて再生させることも可能。
    さらに、このアクションにスマートボーンを紐づける、ということも可能。
    スマートボーンは、回転角度=紐づけたアクションのタイムラインの再生位置、で…
    別のアクションの中のスマートボーンを回転させると、紐づけたアクションを再生してくれる。
    タイムリマップよりも断然直感的。つおい。

    じゃあ、同じレイヤーに対してアニメーションを入れたアクション2つを、スマートボーンを使って再生したらどうなるのか。
    なんとまあ、イイ感じにアニメーションをマージしてくれる。
    今回だと、歩きのアクション中に、瞳の動き、瞬き、首振りのアクションのスマートボーンを操作してみてる。
    歩きには体の揺れとかも入ってるけど、その辺も含めて全部マージされる。
    立体っぽい動きもこれで表現できる。
    なんやこれ…動作差分作り放題やないか…


    あとはキーフレームだけども、ここについてはAEほどの自由度はない印象。
    補間方法として、スムーズ、リニア、イーズイン、イーズアウトとかは設定できるけど、AEみたいにグラフエディターで速度を調整、みたいなことはできなさげ。
    数値直打ちでの微調整もできないし、エクスプレッションも当然ない。
    とはいえ、ループの設定は一応キーフレームに対してできて、次のキーフレームがくるまで指定した範囲のキーフレームをループ再生してくれる。
    ただ、ループした瞬間の補間が効かない(そもそも補間とループの設定が同列扱い)ので、カクつくのがすっげー気になる。
    今回は、足を下した瞬間の体の揺れでごまかしたけど、こんな苦労をするぐらいならループ設定を使わず、キーフレームコピペ乱打してやろうかと思ってしまうレベル。

    その他、一応スクリプトも対応はしてるみたい。言語はLua。
    Luaのコードはお遊びで買ったCodeaで見たことあるけども、組んだことはないなぁ…
    まあJavaScriptと比べれば…いや、どっこいどっこいかな…ww


    【Mohoから吐き出したsvgを魔改造したった】

    mp4とかaviとかgifで出力できるのは、わかる。
    しっかしsvg(サイトで表示できるベクタ形式画像)で出力できるとか…マジかよ…
    やろうと思ったらサイト上で好きに配置&配色&変形できるし、JavaScriptで再生フレームいじれるんちゃうん…?
    ってことで、実際にやってみた。

    何パターンか試したけど…
    つい昨日モンストにハブられかけた(強制終了バグ出ましたが何か?今日は無事)
    Android4.4のブラウザでもそれなりに動作するのはこれっぽい。
    20MBぐらいあるから気をつけろ!
    http://dmrb.nobody.jp/walk/walk.html


    で。
    今回は260フレームってことで260個のsvgが出力された。
    全部合わせて24MBでーす!ってゲロ重いわやめてくれww
    いや、初回はもっと重かったんだけど、レイヤー名がそのまま出力されるから日本語から英語にしたり、今回は塗り設定だけで十分だから線を非表示にしたりしてケチった。

    svgの中身を見てみる。
    律儀に全ファイルにxml宣言とDOCTYPE宣言、svgのバージョンと名前空間宣言が入ってるのは、まあ分かる。
    が。
    いくらクラス名の衝突のリスクがあるとはいえ、各パスにデザインの属性を片っ端から付与するのはさすがにやめてくれ…
    fill="none" stroke="#a60d3f" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round"
    ってだけで文字数どんだけあると思っとんねん…
    ということで、さすがにクラス&CSSでの指定に移行させたい。
    あと、パスそのものの情報も一部空白を取っ払えそう。

    いや、それより一番の問題は…
    実際にsvgを表示したときに、設定していた一部のマスクが効いてない。
    詳しく差分データを用意してタグを解読していくと…
    どうやら、マスク設定を有効にしたグループ内にグループを入れ子で置いた場合、マスク設定が出力されない模様。
    mp4で出力したときは問題なかったし、Moho側のバグっぽい。

    オマケにタグをよく見ると、表示しているパスをそのままマスクとしても流用する設定を入れていた場合、内容が全く同じパスを表示用とマスク用として出力していることが発覚。
    どうにかならんかとsvgの仕様を調べたところ、useタグを使うことでパス情報の使いまわしができることが発覚。
    どうにかしてuseタグに移行させたい。


    とにかく。
    出力したsvgの内容がめっちゃ不服。どうにかしたい。
    AEだったら速攻でスクリプト書いてただろうけど、今回はMoho。
    今回のケースに留まらず、ローカルファイルをいじるという意味では、もうちょっと汎用的で楽な手段が欲しいところでもある。
    Ruby on Railsも勉強したことだし…
    ということで、Rubyでsvgタグをいじるプログラムを組むことにした。

    マスクの設定が出力できてないレイヤーの名前に識別用の名前を付けてsvgを出力しなおす。
    で、svgをRubyで読み込んで、その名前を見つけたら、マスクの設定を自動で付与。
    マスクのパスが使いまわせそうだったらuseタグで参照するようにした。
    あと、無くても動くからxml宣言とDOCTYPE宣言をごっそり削除。
    デザインの属性も一旦ハッシュに登録して、同内容の設定だったら同じクラス名を付与。
    全部パス走査し終わったらハッシュの中身を確認して、styleタグにクラス名とCSSを出力した。

    他に、1個のファイルにする実験もやってみたんだけど、それだと今度はファイル1個が重すぎる問題が発生。
    自分が使ってるレンタルサーバーはアップロードできるファイル1個の最大サイズは3MB。1個で20MBなんて論外of論外。
    試しに3MB未満になるように適当に10個ほどに分割してみたけど…
    オレのAndroidじゃキャッシュがうまく動かないのか、全く表示できず。
    結局、最終版は260個のままなのであった。


    あとはアニメーション。
    svgファイルは各々1個で完結した静止画なので、html上ではこれをJavaScriptでパラパラ漫画の如く再生(切り替え)させる。
    これ自体はよくあるimgタグの切り替え処理みたいなもんで、そんなに難しいことではないんだけども…
    問題はロード時間と処理速度。ということで、読み込み方法あれこれ試した。

    愚直なのは、htmlに最初から全フレームのimgタグを非表示設定付きで置いとくパターン。
    JavaScriptで後から必要数分のimgタグをぶち込む汎用的な方法もあるけど、速度で言えば前者の方が早い。
    先に結論をいっちゃうと、試した中でこれが最強だったよ(爆)
    それでもオレのAndroidだと表示までに30秒ぐらい待たされるし、なぜか未だに1フレーム目だけ表示時のリサイズ処理が走らないんだけどね。なんだろね?

    次にやったのは、読み込むファイルが多いからいけないんだ!的な発想で、最早別ファイルを読み込まない、svgをhtmlに埋め込むパターン。
    「svgファイルを1個にしたら20MBになった」っていってんのに、それをhtmlに埋め込むってことはだな…まあアップロードできないわな。
    一応GitHubの方で無理矢理試したけど、オレのAndroidはロードが終わらないどころか、ブラウザが死んだよ(爆)

    さらに、ajaxを使って後でがっつりリクエスト&ロードするパターン。
    動かなくもないけど…オレのAndroidは1分ぐらい待たされた。うん。


    あと別件で、imgタグじゃなくuseタグを使った表示もやってみた。
    埋め込み式(ゲロ重htmlかajax)じゃないとダメなんだけど、一応表示&アニメーションはできた。
    ファイルパスの指定を省略できるし、ファイルアクセス的には早くなるかな?と思ったけど、速度の体感差は皆無だったね…
    まあそういう方法もあると知れただけでもOKとしましょう。


    報告は以上。