コミティア反省

反省しても次に生かされなければ駄目なのであるが今回は諸事情により原稿作成のリミットが縮まったのと参加時間(椅子に座っている時間)が長かったのでしばし考えた。

実際問題として時間がない。よって原稿は今回もできていない。時間がないというよりかは正常に思考して集中できる時間がない。いい加減に終電で帰る生活を改めなければとは思う。

結局、何が障害になっているかという事象の考察を行った。

反省をしよう

レビューが足りない

通常以下の手順で同人誌の作成を行うのだけれど

  1. とにかくネタを考える
  2. ネタをケツまで考えてふくらませる
  3. 膨らんだネタを捏ねる。叩いて撚る。
  4. ネタを想定ページの分量に切り分ける。
  5. ページ内コマ配置(見せコマ、引き、分量)を考慮して其れで収まるか再計量する
  6. 収まらない場合分量を再度見直し、エピソードの間引きを実施する。
  7. ネタが死んでないか意味不明になっていないか再レビューをする。
  8. 下書きをする
  9. 仕上げ線を入れる。

以下に上げる理由によってこれが途中で止まったのが痛い。

メディアコンバートが辛い

まあ紙があれば其れでいいんですがテキスト→紙→画像になるわけで辛い。

  • ノートPCで効率的にコマ割りをできるツールを持っていない。ツールとは以下の要件を満たすもの。
    • 揺れる車内で操作できる。
    • キーボードとマウスポインタのみで操作できる。
    • テキストを横で見つつ作業ができる。
  • 出来上がったものを適当なファイルに展開するツールを持っていない。これが全部手作業。
    • ボタンひとつでできること。
    • どんなときもDiskFull以外で使えること。
    • UbuntuLTSのサポートと同じ6年ぐらいは環境が利用可能なこと。
データ転送が辛い

NSAの事件等を受けて正直、DropBoxやらクラウドストレージは
そのへんの対策がめんどくさくて無いなーと思っている。
もちろん、利便性を得るためにセキュリティの甘さを甘受するのは仕方ないことなのだが。

  • 複数のマシンで作業が必要になる。
  • 転送についてメディアコンバートは手動ではやりたくない。
    • しかし現状している。それも目視でだ。
テンポが悪い。

着手から出来上がりまでの速度がつかめない。
実際WBS引いたほうがいいんじゃないかと思うほど進まない。
理由はゴールが無いためだし、そのステップが終わったとして次のステップまでの間に挟まる膨大な(1時間以上かかるという意味)の作業、それも絵を描くことはない単なる手作業が挟まるという事実が辛い。それも時と場所がすべて合わさった時だけ行えるという厄介なものだ。

  • 時:
    • その作業を行う踏ん切りが付いていること
    • 踏ん切り、もう二度と前の工程をやらないという決意。ただし結局手戻りは発生する。
  • 場所:
    • 次の工程を行うマシンにデータを入れる作業

このへんが大きい。

解決策

そこでコミティアの時間中考えていたのだ。何が本当に必要なんだろうかと。

今欲しい物

多くを求めてはいけない。最低限最低限動くものを。

  • 基本プロプラは駄目だ。
    • どんなに不満があっても修正できないからね。
    • Linuxで動かない。商売上仕方ないね。
    • サポートも自力救済ができない以上、不安だ。
  • メディアコンバートを自動でやってくれるツール。
  • お絵かきができて下書き程度ができる。
  • P2Pデータ同期ができること。
  • Gimpに取り込める下書きまで終わったデータファイル一式をExportすること。
細かく言うと

できるだけWebブラウザで完結させておけば次へイケルのではないかということ。単に自分の勉強範囲を狭めたいという欲求もある。なによりプラットフォームとしてiOS以外(Chrome,Firefoxが動けば)はほぼ確実に動くのが強い。

  • swagger-editorというツールがあるのでこのアイデアを頂戴する。
    • ymlでネタを記載して、リアルタイムにSVGに変換ができたらいいのではないか。
    • SVGの上にラスター描画ができるようにしておけばいいのではないか。
    • Aceのライセンスが微妙なのが気にはなっている。と思ったらBSDに変わってた。
  • P2PであるWebRTCを使って同期をする。
  • Gimpに直接取り込める形状でエクスポートする。
    • この場合Gimp側からのフィードバックは望めないのでこの前工程で齟齬は解消したい。
    • Zipで圧縮されたGimpのファイル形式が望ましい。

全ては現物を完成させてから。

何事も先を見越して計画的になのだが
他にも抱え込んでる奴があったりして先に進まない。困った。

決戦IndexedDB

これは何?

ブラウザに無限のストレージが用意されました。

  1. COOKIEは4KBまで
  2. LocalStorageは5MBまで
  3. 外部ファイル?セキュリティのためアクセスできません。

この軛がようやく解消された。

どうして決戦なのか

どうしてこの仕様になったかわからない仕様だらけ。この苦難のため2年ほど足踏みした。どうしてもクライアントサイドで大量データを扱わなければいけないので・・・

  1. 非同期、非同期非同期の連続、そしてバージョンという概念
    1. UIスレッドをノンブロッキングなのはわかりますが・・・非同期処理のいなし方知らないと詰む・・・
  2. キーが外部もちとデータ内保持と二種類あった。
    1. ここを理解しないと目的のデータを取り出せない。
      1. キーが外部もち:KVSのようなイメージ:OutLine−Key
      2. キーがデータ内保持:RDBMSの様に一部のプロパティーがキー:InLine−Key
      3. なにも知らずにデータ投入するとキーが外部もちになって自動連番がキーに成るため、目的のレコードを取り出せなくなってしまう。
      4. 数万オーダーのデータ処理を考えると取り出すときに全件取得はありえない。多分メモリ不足でブラウザが落ちる。
    2. DBのバージョンという概念がありまして・・・
      1. 追加、修正、削除、CRUDのCUDはバージョンアップが必要
      2. バージョンを正確に記述しないとObjectStoreの削除と作成がうまくできない。
      3. 一つのDBの中に複数のObjectStoreが有る状態で同時複数のDropCreateをトランザくショナルにやろうとするとなかなか壮観な非同期入れ子状態に成る。
  3. 溢れるエラー
    1. DBのバージョン違いはひどかった
    2. エラーの内容もわかりづらい。UnknownErrorってなんなんだー
      1. もちろんPK違反はわかるんだけどね。ConstraintError
  4. KeyPathという未解明の仕様
    1. 名前からしてパスのようにKeyを構成できるように聞こえるが利用方法がよくわからない。
    2. keyにピリオドは入れられない。
    3. もしかしたら1オブジェクトストア内に入れ子でデータ持って検索できるかもと思ったがに駄目だった。
  5. めまぐるしく変わる仕様
    1. 仕方ないのだが、実装も仕様も安定しなかった。
      1. CRUDでのバージョン取り扱いが以前は必要だったり
      2. ChromeAPI実装が標準から離れていたり
    2. ようやく現在はまともに動くように。
      1. Chrome37ではRangeにundefinedを渡すとエラーに成る。

どうあれば嬉しかったか

  1. 普通のSQLだったら良かったのに
    1. WebSQLが退けられた理由をまだ把握していない。
  2. 非同期の他に同期のオプションもあればよかったのに
    1. 非同期はハードル高いよ

特徴

以下RDBMSに比較して

  1. キーは基本一個です。
    1. 複数キーは出来るようだが、めんどくさくてやってない。
  2. 検索にはキーを使えます。
    1. 範囲絞り込みが可能です。
      1. RDBMSの様に使おうとするとキー設計に親子関係を練り込むことを考えてしまいます。
      2. jsに処理を移譲するのはやはりですね・・・ネイティブで済ませられるならソレで。
    2. 複数のキーを連携させることはできません。できる?
      1. Indexは複数作成可能なようですが。
  3. Indexで検索が出来るようです。
    1. できるようです。
  4. ただし、複雑な条件を受け付けるAPIはないです。
    1. いったんjs上にオブジェクトを展開してそこで比較するなどの条件適用が必要になります。
    2. JOIN系、GroupBy、UnionのAPIは無いです。
  5. 非同期につぐ非同期なので変な処理をはさむと遅いです。
  6. 変な処理がなければLocalStorageよりは速い気がする。
  7. FirefoxChromeは普通に動く。
    1. SafariもIE10以降も動くらしいが、悪いな家にはLinuxしかないんだ。
  8. Chromeには削除する方法があるがFirefoxCookie前消しでのみ対応
    1. 自前でDB初期化ロジックが必要

展望

何もかもDBに突っ込もうぜ!
  1. 画像
  2. 設定
クラサバが復権する

有る意味悪夢

WebRTCと組み合わせれば

夢の認証以外ストレージレスサービスが構築可能に。

セキュリティ

まあ暗号化しておかないと見る人見たら丸バレだよね

  1. ChromeとかBookmarkletとかとか。