Mansiki「漫式」

「まんしき」ネタができたらもう漫画はできている!ぐらい簡単に漫画形式の出力を得られる環境構築を目指して、OSSなソフトウェアツール群を作成します。

はじめるにあたって

描画エンジンからGUIまで自前でやる気も時間も技術もないので 以下の目標でしばらくがんばります。

  1. GIMPのマクロを書く
  1. ComicStudioよりも楽に作品を仕上げられるようにする。(主観)
  1. ネタの漫画への練り上げのためのツールを作成する。
  1. Intel製x86CPU搭載のスマートフォン発売までをひとつの目標とする。(うわ、あと半年もないよ)

動機

現在ComicStudioを使用していますが ここのソフトを使用しいて

享受している利便性は

  1. 簡便なコマワリ
  2. 使いにくいが統合された吹き出し環境
  3. 作品単位でのファイル管理
  4. ペンタッチ
    この点は非常に重宝しています。
  5. 印刷を想定したガイド

足りない要素(使いにくい点)

  1. 作成している作品の公開形式がコピー誌だがふちなし印刷ができない。
  2. Windowsでしか作動しない
  3. ライセンス上バックアップ環境をホットスタンバイで構築できない
  4. マクロを作成、公開できない。バッチ処理ができない。
  5. 解像度が印刷固定でしかなく画面にあわせたピクセル解像度を設定できない。
    よって倍率によっては画質か、サイズかどちらかが犠牲になる。
  6. 仕上げの方に機能がかたよっており上流工程をサポートしない。
    もちろん一般の使用者はこうしたことは気にしない。
  7. テキストデータの内容を作品に反映できない。
  8. Webシステムと連携できない。

このあたりを攻めていきたいと思います。


大まかな予定

1. Gimp用マクロ群を作成する。

    1. できる限りPerl等で実装されている関数(必要と感じたもの、文字列、ファイル、配列等)をScript-fuで実装する。
      1. ファイルIO、置換、各種配列関数、連想配列
    2. 環境設定ファイル、Script本体への設定の保存、ログの出力、一時データ保存ファイル、パラサイトへのアクセス、プリント制御
      1. パラサイトは難しいかも:Base64関数がなくなったため書き込みに日本語を使用しづらくなった。
    3. 基本的なコピー本作成のためのライブラリを構築
      1. 初期設定:漫画描画に必要な情報を受け付ける入力画面を構築する。
      2. ファイル準備:指定された用紙、サイズ、ページ数、表紙の有無、ネーミングルールにしたがう名前のファイルを作成 要点としては、解像度にイメージサイズを合わせて画面を最大限使用する。 印刷との兼ね合いで画面一杯表示時に2の整数倍の倍率になるようにする。
      3. 印刷準備:印刷用にファイルを作成、XCFファイルからPNGへ変換し、イメージサイズ、解像度を合わせる。
      4. 印刷実行:印刷をファイルにある通りに順序よく実施する。 この際、別のソフトから監視を行い、完成ファイルが出来次第印刷することを目指す。 監視は多分Webサーバが担うと思われる。
    4. ノータッチで処理を進めることを主眼としパフォーマンスは求めない
      1. そもそも画像処理用のマシンで動くので処理能力は高いのでそこまで気にしなくてもと考えているため
      2. ただ、将来的にWebサーバ経由で動くことで別マシンに処理を代行させるという案は考慮中。

2. Firefox用Webアプリの作成

    1. FSWikiをベースに改造を行う。Javascriptでおもな作業を行う。
      1. FSWikiからレンダリング部分をJavascriptに置き換える。
      2. Ajax経由でデータやりとりできるようにインターフェイスモジュールを作成する。
      3. 各種モジュール拡張が可能なようにインターフェイスを定義し、実装はモジュラー化する。
    2. 実装予定機能
      1. Wiki文法の拡張による脚本作成支援を強化
          1. 各種情報
      2. 脚本フォーマットからコンテフォーマットへのリアルタイムコンバート
      3. コンテフォーマットではSVG描画機能を提供する。
      4. コンテフォーマット→マンガフォーマットへリアルタイムコンバート
          1. コンテフォーマットに画像があればそれで穴埋めを行う。
          2. コマワリ情報はHTMLのようにプロパティ設定で行う。
          3. 各登場人物の属人的な情報はCSSのようにかオブジェクトとして扱う。
      5. 最終成果物はSVG形式としGimpへの連携とする。
          1. 一応ブラウザからの直接印刷も考慮する。
    3. 基本姿勢
      1. 時間がないので極力Web標準に則り、Firefoxの専用命令は避ける。
          1. ただし実現しなければならない機能が特殊な命令の使用を避けて通れない場合はこの限りではない。AjaxとかSVGとか。
      2. だからと言ってIE等の特殊なブラウザはサポートを考慮しない。
          1. CSSに根本的な解釈の違いがあるため
          2. SVGをサポートしていないため。
      3. エクステンションにしないのは作り方がよくわからないから。

以下Script-fu版(これ以上のテキストファイル等の不安定さより開発予定なし)

完了した箇所

  1. ファイルIO関係::2.4対応
  2. 文字列関係::2.4対応
  3. 配列関係::2.4対応
  4. 連想配列もどき関係::2.4対応
  5. Vector配列関係::2.4対応
  6. 算術関係::2.4対応
  7. 画像ファイル取扱い関係::2.4対応
  8. 画像一括形式、サイズ、モードコンバートモジュール::2.4対応
  9. 環境設定ファイル用関数群::2.4対応
  10. ログファイル出力用関数群::2.4対応
  11. 一時記憶ファイル用関数群::2.4対応
  12. レイヤー取扱い用関数群::(新規)
  13. テキストレイヤー取扱い用関数群::(新規)
  14. 文字変換関係関数群::(新規:文字取扱い円滑化のため。)
  15. パラサイト用関数群::2.4対応(Base64関係が使えないのでどうしたものか・・・)
  16. 用紙サイズ格納関数群::2.4対応
  17. 漫式原稿用紙構築モジュール::(新規)
  18. 漫式原稿用紙構築インターフェイスファイル管理::(新規)
  19. Script-fu関数初期値上書き用関係::一部不安定

完了してない箇所(上に行くほど高優先度) 

  1. 原稿用紙外ページの解像度訂正
  2. バグ修正
  3. ファイルコンバート(forWeb)関係関数群::(新規)
  4. 印刷関係関数群::(新規)
  5. 漫式統合モジュール::(新規)作品の管理用モジュール
  6. 統合メニュー設定モジュール::(新規)
  7. 以上をもってScript-fu編は終了:コミケ75用原稿での使用を目指す。
  8. A5版対応+2頁統合イメージ作成

凍結箇所

  1. SVGファイル取扱い用関数群::(新規)時間的に先送り。Webの方を作って考えます。

Web編開発予定

  1. マルチマシンによるファイルコンバータ
    1. ApacheP+PHP+MySQL+Gimpで実装予定(単純に複数のマシンでGimpをバッチモードで実行)
    2. Ubuntu+Eucalyputsを前提として実装
    3. スケールアウトを念頭にリアルタイムファイルコンバート
    4. ワーカーとコマンダーでHTTPによる連携を実現、Webページからの簡単操作
    5. コマンダー、ワーカーがともに同じ共有ファイルスペースを見ることでデータ転送量を抑制
    6. ワーカーが増えても自動的にコマンダーの配下に配属、活用。余ったマシンで性能UP
  2. ネーム構築用Wiki風インターフェイス
    1. jQueryを利用したリアルタイムレンダリングUI
    2. 極力入力効率を上げるためにベースはViもしくはBash風味なCUIコマンド入力での記述+tabによるコマンド補完
    3. ストーリー入力のために独自のWiki文法の実装
    4. 表示形式として、Wiki文法コードハイライトエディタ、Wiki表示、コンテ表示、漫画表示、スライドショー表示を構成
    5. それぞれの形式は互いにコンバート可能
    6. コンテ表示以降はCanvasによるお絵描き機能を提供
    7. 最終出力はSVGによるファイル出力(もちろんGimpでそのまま使えるような。)
  3. 作品管理システム
    1. ここは見てもらうだけなので上記システムでの成果物表示のみをサポート
    2. 基本的に公開スペース前提なのでGAEなどを利用して公開。(javaかPHPを想定)

資料

ロードマップ

ScriptfuGrandMapM.jpg

マニュアル

20081011x640.jpg