Mansiki仕切りなおし構想:ペイント編

まあ仕様ぐらいはねっておこうと思う。もちろんHTML5での実装
コンセプトは軽い実装、必要最低限。

達成機能

  • 筆圧対応
  • 色選択
  • 太さ選択
  • Undo redo
  • レイヤー
    • まあ5枚ぐらいCanvas重ね着
    • 乗算と通常と
    • レイヤーロック
    • 結合
  • パターンブラシ
  • 画像保存
    • ファイルへ
    • ローカルストレージへ
  • 拡大縮小
  • ローテーション
  • 反転

将来的に

  • 入力補正
    • GimpのG-penを参考にしたい。
  • コママスク

画像の挙動

  • 画像はデータストレージから出し入れしない限り原則統合画像
    • 通常の画面には50%で表示
    • 編集時にフルサイズで編集を行う。

Mansiki仕切りなおし構想

正直仕事で時間が塗りつぶされている。
なので、去年ほど時間が無いので記述を行う

環境構成

  • モバイルファーストにシフトする。
    • モバイルなタブレットで書いたほうが良いことに気がつく。
    • BootStrapの利用を進める。
  • ペン入力タブレットへの対応を進める
    • Androidが主戦場になると思われる。
    • 筆圧感知の利用を進める。
    • iOSは自由が無いのでサポートを考慮しない。更にハイコストなIEも同様。
  • いい加減サーバーサイドを作る。
    • ここは鯖環構想とも絡んでくるので厄介だが
      • Websocketでまずは構築する。
      • サーバはNode.jsを使用する。
      • VPSAndroid@DebianKit、ラズパイでのホスティングを実現する。

プロダクト構成

画面構成
  • トーリー展開欄
    • ただのテキストエリア
    • MarkDown風味の記法でかけるようにしたい。
  • ページ構成
    • 現在のMansikiの構成
    • これに加えてお絵かき機能を搭載する。
  • コマ割り
    • コマ割り機能をつける。
データ保持
  • 無制限のデータを保持すべくIndexedDBを利用する。
    • これは数カ月前目処が付いたのだが・・・・
    • データは規定量まで容赦なくヒストリカル保持をする。
    • データ自体の暗号化は行わない。
      • 将来的にオプションは提供したほうが良い?
  • データはクライアント間で持ち回りをし、基本サーバは関与しない。
  • 認証データのみを管理する。
データ同期
  • サーバを通じてデータを同期する。
    • 安直にIDパスワード形式としてリリースを優先する。
    • WebSocketにてデータ交換を行う。
    • 様々な縛りを回避するために将来的にWebRTCに移行する。
  • 差分発生時のマージ方法は提供せず
    • 発生した時点でブランチしていく。
他サービスとの連携
  • 考えない。後回し
    • ただしあったらいいねレベルで
      • twitter:OAuth的に
      • Pixiv:投稿的に
      • EverNote:ストレージ的に
      • GoogleDrive:ストレージ的に
  • Gimp連携
    • 有る意味必須?
提供ライセンス形態

MIT and GPLv3

タイムスケジュール

  • 今年度中?

管理者権限のない君へ@Windows

この記事を書くべきか迷った。
正直なところ、管理者権限を剥奪された時点で未来を失うのだ。学習の機会を奪って隷属させて尚その自由の果実の先を求める管理者は因果関係の把握の面で残念である。彼らには給料分に見合った働きしか答える義務はないという事を認識できているかしばしば不安に成る。
ただ、とりあえず書いておく。

条件:

  • Windows64bit版
  • 実行Exeファイル名が制限されていない
  • ポートはふさがれてない
  • ユーザのフォルダにいくらでも書き込み可能

目標:

  • Web系のサービスを使う
  • Cygwinを入れよう
  • Redmineを入れよう

Windowsの残念なところ

  • 結局管理者権限がない=デフラグができない
    • タダでさえメモリはない、なぜかCPUは豊富、IOで作業効率の大半が決まる。が、ここが容赦なく劣化していく。

実際:

  • Eclipse
    • これは普通に動かせばいい、実にJavaアプリの鑑である。
    • Preiadesを持ってくるともれなくJDK7のバイナリもつていてくるのでPATHを通せばJDKが使える。
  • Glassfishv3.1
  • Netbeans
    • こいつは駄目だ、端から管理者権限を求める
  • XAMPP
    • 優秀である。OSSの成果に賛歌を。
  • Node.js
    • これも普通にインストールが・・・Node.js自体はできる。
  • nmp
    • これがめんどくさい。
    • 理由は簡単でWin7用は管理者権限をシンボリックリンクをつくろうとしているから
      • ここはWinXP用の展開を真似して手動でファイルをコピーすると使えるように成る。
  • Ruby
    • バイナリ版でOKである。
    • もちろん、要求される環境変数は自分で用意する。
    • Passengerは絶望的である。
  • Redmine
    • これは自己ビルドGemをクリアするのが面倒だが出来なくはない。
    • あとは問題はバグをどうやって避けていくかというのが・・・
  • Cygwin
    • Win7用の32bit版をsetup.exeをcygwin.exeとして実行すると管理者権限無しで動く。素晴らしい。
    • さすがにSSHサーバのサービス化はできないが、SSHデーモン自体は起動が可能で外部からアクセスは可能である。
  • VS
    • 論外である。これでVSの利用者が拡大とか何かの冗談にしか見えない。
その他

PortableAppsは偉大。マジ神がかっている。

余談:

Windowsを使う時点で色々あきらめなければならないことがある

LinuxにはできるけどWindowsにはできないんだよ残念・・・

ああ、誰かの助けになれば・・・
もちろん悪用は厳禁ですが、ソフトウェア作ってるんだから
何でもできちゃうんだよね正直なところ。工数とテストと品質が壁。

Bluezは大切なものを盗んで行きました。そう、私の時間です。

さて、RK3066なSoCを積んだAndroidStickにはPicuntuというUbuntu12.10ベースなLinux動く。さてこれはいいんだ。問題はBluetoothによるテザリング参加が設定出来なかった。Wifiは試していないが簡単であろうことは想像される。ただチャンネル争いにご招待される覚悟が運用に求められるので今回はスルーする。

Bluezの手順は(PANの鯖にクライアントとして接続)

現在Picuntu 0.2にはBluez4.0.1がはいっている。

  1. bluetoothのパッケージを入れる。

sudo apt-get install bluetooth bluez-utils blueman bluez-compact

  1. 一応デバイスが認識されているか確認する。

hciconfig

    1. hci0とか出てくればOK。
      1. DOWNになってたら、sudo hciconfig hci0 up とやって叩き起こす。
  1. スキャン、事前にペアのもうひとつを見えるようにする。

hcitool scan

  1. ここでMACアドレスがわかるのでそれでペアを形成する。

sudo bluez-simple-agent hci0 01:23:45:67:89:AB

    1. 以下MACは自分の適当なものに置き換えること。
    2. PINコードの入力が求められるのでここで入力する。
      1. がここでうんともすんとも言わない。
  1. 次に信頼済みにする。

sudo bluez-test-device trusted 01:23:45:67:89:AB yes

  1. 次につなぎにゆく。

sudo pand --connect 01:23:45:67:89:AB --role GN -n

    1. 上記はAndroidでは動いていたので採用。
    2. するとbnep0というインターフェイスが出現するのでそれを使う。
    3. 普通にeth0と同じように使えばいいが、今回はクライアント自身であることに注意。

結論

Androidでrootを取るとPANで接続できるようになるのだが
残念ながらPicUntuではできないようだ。RaspBerryPiは普通に動くようなので悔しい。四倍以上の処理能力を持ちながらメーカーの背骨となる理念がオープンに向いてないせいでRK3066SoCの季節は終わるかもしれない。だってRK3188なデバイスが出回り始めているので。

ついでながらPicUntuが当てにしたport.ubuntu.comが12.10のサービスを停止したような雰囲気で
パッケージの取得が今週からはできなくなっているようだ。

結局

Andoridでとりあえず窓口をさせて、PicUntuは鯖に特化するしかない模様。
問題はUSBなNICが結構消費電力がよろしくない暖かさで有る点だ。

ARMマシンをBluetoothなモバイルルーターに??

できるっぽい、確認はできていないというか非常に難航している。
というのも、BlueToothを二口で運営する方法が見当たらない。多分、多分どこかにあるはずなんだけど。

愉快なAndroidドングル達

さてARMなマシンは基本的にAndroidが乗っている。AndroidLinuxだからまあ差は小さい。このドングルさんはMiniPCとか呼ばれている。実際HDMIという微妙な端子で繋げばモニタに刺して使える。この方々のイカしているところは5V電源で作動するということ、そしてモニタもキーボードも無いがゆえのそのサイズと重量は貴重
では一応、日本国でかつニコニコ現金払いで入手可能なAndroidドングルさんを紹介しよう。

愉快な仲間たち

>| reboot recovery

  • MX1
    • どう見てもMK802?Sと呼ばれるマシンとうり二つなのだが・・・スペックはMK808さんと同じ、ただし薄くて金属製のボディが安定作動の期待を上げてくれる。がカバーのないHDMI端子はあまりいただけない。
  • MX2
  • Hi802
  • GK802
    • Hi802と何が違うのか把握できていないがHi802同様サンコーレアモノショップで買える。が、RK3066マシンの倍の値段は微妙だ・・・
何に使えるか。
  • Androidのままでも結構使える。
    • 結局rootが取れるので何でも出来るといえば何でも出来る。
    • iptablesとかdhcpdとかsshとかbashjavaも。
  • Ubuntuが使えると
    • Node.jsもApacheも何でも動く。Orionも動いた。

以上から、正直言ってAppleの製品は使えない。このような自由が無いからだ。古くなってもLinuxマシンーんで復活できればやはり強烈であると言える。だって、サーバがそのまま持ち歩けるのは衝撃的である。
RaspberryPiという選択肢は有るのだがいかんせん日本国内では通販以外に買う方法がない。なので除外する。

次は出来れば、実際何やって使ってるのか書いてみたい。

モバイル端末雑感

iPhoneの出る数年前に予見した状況に現在なっています。ああ夢にまで見たモバイル端末がここに!ただ、実現していないものとして液晶タブレットととして使える端末がまだないという現状です。じゃあ何をもって満たしているのかと言うと

  1. タブレット端末である
  2. デジタイザペンが使用できる
  3. 通常のPC同様に絵を書けるグラフィックスアプリがある
    1. なお同じソフトウェアであるとなお良い

こう書くと、Windowsタブレットが最右翼な訳だけど、いくらか問題がある訳で

  1. でかい、6インチ前後はないんですかね。
  2. そんなに速くない
    1. Atomさんマジトラウマっす、ボブニャー先生も遅いっす
    2. ThinkpadHelixはまあ及第点かな
  3. 色々有って高い(OSライセンス料とか)

ちなみにデジタイザペンとはペン自身に電源がいらず、タッチとは別にペンが作動して、筆圧感知が可能なペン入力デバイスを指します。
ここでじゃあARM基盤ならどうなのよという疑問が

iOS
  1. 完成度は高いが、ハードウェアの選択肢が少ない
  2. デジタイザペンという選択肢はない
  3. アプリの自由度がない。し、ハードウェアの制約がきつい
Android
  1. 完成度は低い
  2. でもハードウェアの選択肢はかなり高い
    1. 中華パッドも充実してきたし
  3. アプリはまだ発展途上だが自由はある
    1. 他のOSと互換性が無いのがきつい
WindowsPhone
  1. 実機がない、輸入品しか無い
  2. 本当に電話サイズのハードウェアしかない
  3. それ以外に選択肢はない
  4. アプリも自由がないらしい
FirefoxOS
  1. 実機はない
    1. しかしインストールできるハードウェアが存在する
  2. ソフトウェアの自由度は高い
    1. 処理実行速度さえクリアできれば自由度は相当
    2. まだ発展途中というか始まってはない
    3. 他のOSと互換性がFirefoxを通してある程度担保されている
  3. デジタイザサポートは期待できるか不明
    1. しかし中身はAndroid同様、LinuxかつOSSなのでドライバさえ持ってこれれば・・・
UbuntuPhone
  1. 実機はない
    1. しかしインストールできるハードウェアが存在する
    2. 将来的にAndroidとハードウェア互換を取る模様
  2. 中身はUbuntu
    1. すでにOSSLinuxアプリはARM版Ubuntuで動いた実績がある
    2. ということはGimpが使用できる可能性が高い
  3. デジタイザサポートは期待できるか不明
    1. ただし、SamsungWACOMが協業するようなのでSamsungのデジタイザペン端末ではLinuxのドライバ経由で使える可能性が期待できる。WACOMタブレットUbuntuの標準で使えるので。
Tizen
  1. 実機はまだない
    1. インストールは出来なくはないらしいが
  2. 音頭を取っているのがハードウェアメーカー+キャリア
    1. ハードウェアメーカはともかくキャリアは微妙だ
    2. 私の欲しい物が出る気がしない
    3. ソフトウェアの自由もなさそうな雰囲気を感じる
    4. なんにせよ情報が少なすぎる

以上:
多分、iOSが新天地に乗り込んだ瞬間にAndroidが横から割って入ってきて、そのおこぼれをFirefoxOSがとりつつ、その出がらしをUbuntuPhoneがーみたいなガジェットのライフサイクルに成るんじゃないですかね。WindowsPhoneはまあOS自体が商品ですからお察しくださいと成るわけです。ソフトウェアの互換性こそが最大唯一の売りのWindowsがそれ捨ててるわけですから、モバイル端末まで含めた互換性ならLinuxの方がはるかに上になりつつ有るのがなんか皮肉ですね。
本当に売れる領域の人々要求と私の視点は相当ずれているとは思いますが、まあこういった見方も有ると思います。

あと、ゲーム機はパクリでグリー、モバゲーが非難されてますが将来的に絶滅するんじゃなかろうかと思います。技術障壁がないのでパクられるのもしょうがないですよねと思ってるんですが。

構想:ウェアラブルPCへの道

ウェアラブルコンピュータですよ奥さん。きっと来ます!このビッグウェーブは!
などと煽りたいわけではないですがいろいろ考えるわけです。
私が、コードがかけるからと言って、ハードウェアに近い方向でや大規模なものを開発できるわけではないのです。なので既存のものでやりましょうという話になります。

現状の俯瞰
  1. 使える選択肢は
    1. ARM系
      1. SoCなるシステムまるっとワンチップなせいで互換性が低いです
      2. 他のSoCで動いたからと言って新製品っで動く可能性は非常に低いです。
      3. それでもLinux陣営は乗り越えると言っていますが、まあ体制が整うまで2年ぐらいはかかるのではと見ています。
      4. サイズ、発熱、消費電力面では圧倒。ただし冷却が微妙な気が
      5. メモリが拡張できないので微妙:32bitだし、2GBが上限でしょう。
    2. x86言わずと知れたPC系
      1. 互換性とその実績は素晴らしい
      2. とにかく動くか動かないかを気にしなくていい。買えば動くし、動かないのは初期不良
      3. ただし、消費電力とそのサイズが圧倒的にでかい。5Vで動く系が存在しない。
  2. ボトルネック
    1. 起動時間
      1. 18時間は作動して欲しい
    2. サイズ
      1. 身につけてもおかしくないレベルであること。
    3. ソフトウェアの完成度
      1. KVM仮想化とか、アップデート、巷のサーバソフトの導入性
      2. WANへのアクセス、Bluetoothや有線LANの対応、ブリッジ接続などなど
    4. 拡張性
      1. 業務用PCでは考えられないような大容量メモリ、高速なSSD
NUCの可能性

その中で出ました。NUCが。問題であった、サイズと電源のコネクタが解消したPCになります。電源が19Vですがまあいいでしょう、この程度であればDCDCコンバータで5Vからの変換の目処が立っています。

  1. それでも
    1. 大きいです。ポケットには入りません。
    2. 消費電力は30Wは見る必要は有りそうです。CPUだけでTDP17Wですから。
  2. 参考:http://ascii.jp/elem/000/000/760/760072/
なので・・・・

ブリッジARM鯖がいると捗るような気がしています。
フロントにスマフォを持ってきて、ARM鯖で一次受け、二次受けはx86鯖で受けるので有ります。が、正直このARM鯖は非常に手間がかかるのでまずはx86鯖でやりたいと思います。

身体への装着

ホルスターが欲しいのですが・・・売ってません。
なのでカメラ用品のベルトを基本に考えます。このベルトは非常にごつくてアレなのですが、いろいろくくりつけられるようになっています。このに以下のものを装着を想定します。

  1. NUC本体
    1. WAN用にUSBモデム
    2. 無線LANBluetoothを利用可能に
  2. DCDCコンバータユニット
    1. 電源としてのスイッチ
    2. 5V→19Vへの昇圧を担当します。
    3. また、バッテリへの充電回路の接点集約も担当します。
    4. このユニットを並列で使用します。http://strawberry-linux.com/catalog/items?code=12004
      1. 現在8個のものを持っているので、48Wの入力、効率85%で40.8Wの出力が期待できます。
  3. タブレット向けUSBバッテリ
    1. 2A出力可能なものを5個、計50Wの最大出力が期待できます。
    2. 一応額面上12000mA/h@3.7vなものを使用予定です。
      1. http://www.march-rabbit.jp/index.php?main_page=product_info&products_id=7291
    1. 充電器
      1. バッテリの給電と充電中の給電を担当します。
      2. なので現在考えているのは75W@5V程度のスイッチング電源で両方をこなします。
利用モデル
  1. まず装着します
  2. 装着したら電源を入れます。
  3. 使いたくなったらスマフォを取り出します。
  4. スマフォで指示を出します。
  5. 鯖はスマフォの指示を受け影で作動します。
  6. スマフォに結果を返します。

重要なのは

  1. スマフォは処理をしない
  2. 回線状況も気にしない
  3. つながった所で鯖が処理をする

キーは

  1. 鯖はスマフォよりはるかに強力だ
  2. 鯖とスマフォはBluetoothで使える。
  3. 鯖で提供できるサービスはスマフォで使える。

問題となりそうなのは

  1. 基本ブラウザベースでのやり取りである
  2. そうするとスマフォ側でハードウェアへのアクセスが制限される。
    1. ここにFirefoxOSの意味が出てくるのかもしれません。
需要

こんなことをしてまで何の使い道があるのかという話

  1. 立ったままでPCが使える=開発を出来る。
    1. 電車でもトイレでも使えるよ
    2. 開発の時間捻出はそれなりに切実な問題なのです
    3. スマフォ単体で開発が出来るほど環境は整ってないようにおもいます
    4. Gitとかつかいたいですし。
  2. 通信環境に左右されないでサービスを利用できる。
    1. 電車に乗れば通信は切れます
    2. 満員の駅に着けば混雑してきれます。
    3. 通信何それ美味しいのなコンクリート構造物に入れば通信は切れます。
    4. 通信が切れればクラウドはあまりにも無力です。

以上!次は完成したら続きおば。