2015年4月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« コピペシール update:また失敗 | トップページ | 欲しくて作った - 「Evernote すぐアップシール 」 »

2014年6月21日 (土)

欲しくて作った - 「手書き縮小貼り付けシール 」

地味に「便利系」を探る

いまひとつ、チャレンジングなネタを思いつかなくなってしまったので、暫く普通にメモ端末として使っていました。

使ってると、地味に改善したい処に気付きました。

画面にフリーフォーマットでいろいろ書いていると、隙間に追記したくなることがあります。MOONPhase ver.2.9.0 で書き味が随分改善したとは言え、さすがに紙のノートにシャープペンシルで書き込むほど、自由に小さな文字が書けるわけではありません。

で、作ったのが、手書きを縮小して好きな場所に貼りこめるシールです。

最後の愚痴コーナーにも書いてますが、予想より随分時間がかかってしまって、シオシオでした。でも、図らずも、「ハイパーテキスト絵本コンテスト」に間に合いましたので、絵本作りに使えるかもしれません。

(2014/8/24 : MOONPhase v.2.10.0 対応済み)

Download : 「手書き縮小貼り付けシール」

Download : 「手書き縮小貼り付けシール:Grid 入り背景版」 (要望があったので、お試しで作ってみました)

使い方

例によって、後の方でいろいろ愚痴りますが、まずは使い方。といっても難しいものではありません。

  1. まず、普通に MOON を使います。ページにいろいろ書きます。
  2. ふと、「あ、この隙間に書き込みたいけど、狭くて書けない」と思ったら、シール台帳から、このシールを貼りつけます。
  3. 書き込みを貼りつけたい場所を隠してしまわないように、適当な場所にシールを移動させます。
  4. シールの上に、貼り付けたい文字や図を書き込みます。
  5. シールをタップして実行します。
  6. 画面中心に、シールに描いたのと同じ(ような?)イメージが、矩形の縁つきで表示されます。これは指で好きな場所にドラッグできます。
  7. もとのシールの上には操作用のボタンが表示されます。[Expand], [Shrink] で拡大・縮小。[Paste], [Cancel] で、書き込みをドラッグした場所に現在のサイズで貼りつけ/何もせずにキャンセルとなります。

拡大・縮小は、もとの書き込みから 0.1 倍単位で変化します。最小で 0.1倍、最大で 2 倍まで操作できます。

イメージを拡大・縮小すると、線の太さも太くなったり、細くなったりします。しかし、[Paste]で貼りつけると、線の太さだけは元の書き込みと同じになります。この点だけ少し違和感が出るかもしれません。イメージを拡大・縮小しても、線の太さが変わらないように表示する方法はあるのですが、処理が重くなりそうで、端折ってます。要望が多いようなら修正します。

愚痴 1 - MOON への愚痴

MOONPhase ver.2.9.0 の externaStrokes 仕様になった手書きデータ処理、やっぱり少し変です。

多分、ペンで描いたり消したりしてるだけなら問題が出ないのだと思います。しかし、プログラム側から API を経由して、stroke データを操作すると、消したはずのデータが復活したり、書き込んだデータがシステムに認識されなかったりします。

たとえば、ページにペンでいろいろ書いてから、一部を消しゴムモードで消して、直後に今回のシールで縮小手書きデータを [Paste] してみてください。さっき消したデータが復活しませんか?

或いは、このシールで張り付けたばかりの手書きデータを他のページへの link シールにしてみましょう。指で囲んで出現するメニューから [Link] を選ぶだけですが…、指で囲んでもメニュー自体が現れません。つまり、画面上には表示されているのに、システム側からは、そこにデータが存在しないものとして扱われるのです。

このあたりの挙動は、おそらく MOONPhase ver.3.0.0 まで改修されないのでしょう。改修の方向性としては、もちろんどのようなデータ処理をしても手書きと同じに扱われるようにシステム側で対応するのが理想ですが、速度が落ちてしまうなら別のアプローチもあります。手書きの場合、ページ遷移やスリープなど、何らかのタイミングでバックグラウンドでデータが処理されるのでしょうが、この処理操作を明示的に呼び出す API を用意してもらえれば、「開発者側の責任」でつじつまを合わせることもできます。プログラムでデータを書き換えたら、必ず直後にデータ処理 API を呼び出すわけです。

システムの内部構造にもよりますが、後者の方が現実的なのかと思っています。現在の挙動は気持ち悪いので、早くなんとかしてほしいですね。

また、今回、シール上の書き込みをイメージデータに変換するのには、例によって esmasui さんの drawStrokes ライブラリを使用しています。ところがこれも、MOONPhase ver.2.9.0 になって筆圧回りの処理が変わってしまったようで、以前より薄いイメージデータしか得られません。

試しに、defaultOpts.minimumWidth を 0.5 から 1 に変更してみると、そこそこマシになりました。

しかし、考えてみれば、canvas.png もあるわけですから、システム自体の内部に、同じような処理を担当している部分があるはずです。次回の version up では、是非、stroke データからラスタライズイメージを得る API も提供して欲しいものです。

愚痴 2 - 自分への愚痴

今回のシールは、内部処理も、GUI も、既にこれまでのシールでわかっている技術ばかりで、何もチャレンジングな処がありません。

そのため、週末だけでも 2 週くらいあれば楽勝でできると思っていたのですが、実際には余裕で一か月以上かかっています。

"開発効率が悪すぎる!!!"

なんでこんなに時間がかかるのか。完成したコードはこんなに短いのに。

いまだにまだ javascript のクセについていけてない処もありますが、単純にタイプミスした場合に、それを検出するのにえらく苦労します。ネームスペースの縛りがなさすぎるので、単純な文法チェックだけでは、存在しないはずの識別子があっても拾いようがない。

何か対策を打たなければ埒があかない、と JavaScript Lint を使い始めてみましたが、有用だけれど期待したほどでもない。

今度は JSHint を使ってみようかと思っています。

でもまあ、自分の能力自体がこの程度なのかもしれないですね。ちょっとがっかりですが。

あ、そうそう、この一か月で、Git の使い方だけは結構覚えました。Git 使ってなければ、きっとまだできあがってなかったでしょうね。

« コピペシール update:また失敗 | トップページ | 欲しくて作った - 「Evernote すぐアップシール 」 »

enchantMOON」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1527616/56572149

この記事へのトラックバック一覧です: 欲しくて作った - 「手書き縮小貼り付けシール 」:

« コピペシール update:また失敗 | トップページ | 欲しくて作った - 「Evernote すぐアップシール 」 »