stand aloneアプリをブラウザに移植するということ

October 21st, 2011

ここ数日ちょっと暇を見つけてNaClにMilkyTrackerを移植して遊んでいるのですが、クロスプラットフォーム向けにデザインされている事もあってコアの移植自体はもう殆ど出来てしまっています。しかし、サンドボックスに閉じ込められた環境でファイルIOをどう実装するかについて色々迷っています。

と言うのも、オリジナルのMilkyTrackerは当然ローカルのディスクに対してデータの読み書きを行いますが、ブラウザに移植した時点でデータはクラウドに持っていくのが筋なのではないかと思うからです。

もちろんNaClBoxのようにブラウザの中でスタンドアロンに動くだけでも、十分おもしろいのですが、アプリをインストールしないでも動くというのと(これは結構大きいか)、ChromeOSで動くというくらいしか有り難味がなく、ポテンシャルが活かしきれていません。

 

ローカルのファイルを読み書きする

NaClのセキュリティモデルでは、ブラウザ内で許されていることしかできないので。OSのAPIも呼べなければローカルのファイルシステムへの自由なアクセスも出来ません。

  • HTML5のアプリ固有の仮想ファイルシステムをLocalDatabase or WebDatabaseで実装する
  • HTML5のローカルファイルアクセス機能(FileReader and FileWriter)を使う

前者は作成したファイルに他から一切アクセスできないのでいまいちだと思いますし、後者もファイルの一覧などを取得することは出来ず、あくまでブラウザにドロップされたりinputで選択されたりしたファイルを読み込むものです。また書き込みについてもブラウザの対応状況がいまいちだったりします。

単純にスタンドアロンアプリを移植する、という観点からあえて選ぶと後者のFileReader / FileWriterを使った実装がよいと思います。

クラウド上でファイルを読み書きする

折角ブラウザ上で動いていて常にサーバーと通信できる状態にあるのに、無理してローカルのストレージにこだわるのも微妙です。クラウドをストレージ代わりに使うような実装をすれば、ログイン処理こそ必要なものの、ブラウザさえあればどのマシンからでも自分の曲データにアクセスできますし、バージョン管理やバックアップの心配もいりません。

また、サーバー側でそのまま楽曲を共有させたりと、ソーシャルな要素を付け加えようと考えたりするともう夢が膨らんでしまいます。特にMilkyTrackerの場合はwww.modarchive.comのコミュニティーと密接に繋がっていますのでおもしろい事がいろいろ出来そうです。

問題点は、大したことではないですが、セキュリティモデル上ドメインの制限があるのと、オリジナルのUIをできるだけ保ったままうまく実装する方法を見つけるということぐらいでしょうか。

Leave a Reply

*