木曜日, 1月 09, 2020

Mac Quicklook preview のデバッグができないことへの対処方法

以前のことですが、XCodeからデバッグモードでのQuicklookの実行ができなかったとき、
一時的にSystem Integrity protection を無効化すれば、デバッグできるようになりました。

手順 

再起動 Command + R
 Terminalを起動
 csrutil disable


デバッグが終わったら 再起動して csrutil enable


火曜日, 9月 24, 2013

備忘:どのquick pluginが動いているか調べる


なぜか、意図しないフォルダにある、quicklook プラグインが有効になってしまって
いることがある。

以下のコマンドで ファイルタイプ (UTI)に対して
どのフォルダに存在するpluginモジュールが有効となっているかわかる。

qlmanage -m plugins | grep ファイルタイプ




金曜日, 9月 20, 2013

備忘:イベントハンドラー以外の場所で modifierFlags を調べる


mouseDown などのイベントハンドラー以外の場面で、
commandキー optionキー等の状態を知りたい場合

[NSEvent modifierFlags] で調べられます。

例えばドラッグの最中に optionキーの状態を捉えたい場合

- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender;

- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender;

の中では

([NSEvent modifierFlags] & NSAlternateKeyMask


によって、状態を把握できます。

以上


火曜日, 6月 18, 2013

メトロノームアプリ

3月にメトロノームのアプリをリリースした。

有料85円で販売しているが、あまりダウンロードされなかった。
"メトロノーム"で検索するとApp Storeには120くらいのアプリが
出てくる。"Metronome" なら500以上存在するのだ。
この中で特徴を出して、85円とはいえ有料で買ってもらえるほど
アピールするのは難しいな。

他の人のメトロノームアプリを見ていて、本当にいろいろな
アイデアがあるなとつくづく思う。
でも分類すると
  写実主義・・・・・・実際のメトロノームのイメージを忠実に再現
  かわいい系・・・・・振り子のイメージだが、マンガチック
  ハードボイルド系・・デジタルなクールなイメージ
            機能豊富でリズムマシーンみたいなものもある
  自由形・・・・・・・ボールが弾んだり、光ったり、震えたり
            斬新なやつ

こんな感じだと思うが、私のはかわいい系だ。と思う。

先日、あまりにダウンロードがのびないので、広告付きの無償版をリリースした。
今まで1ヶ月で片手に満たない件数だったのだが、
無料版は、ここ数日、1日60件くらいダウンロードされている。
すごいなあ。


たまには更新しなければならぬ

今年も半分終わろうとしている。
そして、ブログにはまったく書き込んでなかった。
会社のホームページの更新もさぼっていた。

今日はやっと会社のホームページを更新した。
リニューアルして、とりあえずアプリのページだけに絞った。
http://www.nokkeusi.com

もうちょっとなんとかしたいところであるが、
ずっとさぼっていたので、結構大変だ。


日曜日, 12月 02, 2012

新しいプリンタ

物欲の秋、先週、プリンタを新しくした。
CanonのMG6330を購入した。

数日使ってみたが、操作方法がわかりやすく、タッチパネルの操作感が気に入っている。


無線LANで共有できてコピーとスキャナができ、
iPhoneやiPadからAirPrintできるやつが条件だった。

ネットで事前に調べようとしたが、情報が多すぎ面倒くさくなって、
とりあえずプリンタを見にケーズデンキへ行った。
他のメーカのも少し見たが、Canonを中心に見た。
以前よりCanon製品を使っていたし、サポートがとても親切だったので、安心感があった。
最新の上位機種をすすめられた。MG6330だ。
私はタッチパネルのスクリーンが気に入った。iPhoneの画面のような
インターフェースで反応もよく使い心地が良さそうだった。
スッキリとしたデザインもいい。
プリンタとしての基本機能だとか、インクのランニングコストだとかあまり
気にせずに、(どうせ問題なかろうと思った)使いやすそうというだけで決めた。

金曜日, 4月 27, 2012

MopiShape 1.2 公開

MopiShapeの最新版が、昨日 Appleの審査が終わって公開されておりました。
http://itunes.apple.com/jp/app/mopishape-draw/id493998399?mt=12

2週間ほど前に一度アップしていたが、レビュー待ち中に、不具合に気づき
取り下げ、再度アップしたので、時間がかかってしまった。
そういえばホームページを更新しておかなければ。。。

今回、ズームに対応し、細かいところを手直しして、コントロールポイントを
動かしやすくできた。あと、マジックトラックパッドのジェスチャでズームできる
ようにした。
最近トラックパッドが気に入ってきた。まあ、細かいことはマウスの方がいいですが。
あと、文字をパス化できるようにしたので、便利になったと思う。


水曜日, 4月 25, 2012

ヘルプ作成用のアプリを探す。

アプリ制作の中、ヘルプの作成は結構骨がおれる。Webで使っている
Bindで作ろうと思ったが、出来上がりが大きすぎるので、テキストエディタで
HTMLを直接書いているが、絶対効率が悪い。

で、ヘルプ作成用のアプリを探す。
これはいいかも?
http://itunes.apple.com/jp/app/helpsupreme/id467895924?mt=12

開発元のサイトでデモ版を入手した。
試したところ、結構難があったが、親近感を覚えた。(^^
不具合があったが、避けつつ使ってみたところ、なかなかいい感じでヘルプが作れる。
出力したHTMLの内容もすっきりしていていい感じだ。

開発元に不具合やいくつか要望を伝えてみたところ、次期バージョンで検討している
ことらしかったので、正式版を買うことにした。
価格がちょっと高い気もするが、生産性がかなりあがるはずなのでその価値はあるだろう。

月曜日, 4月 23, 2012

Quick Look Pluginの補足

Quick look プロジェクトの設定にはいつもはまる
たまにしかやらないことなのでいろいろ忘れがちだ。
これは自分のためのメモ。

XCode4.3でテストする際、
スキーマの編集から実行プログラム qlmanage を指定しておく必要がある。
しかし、/usr/bin ディレクトリが、見えないので
プログラムファイルをブラウズして選ぶことができない。
直接入力することもできない。困ったものだ。

まず、なんでもいいから関係のないアプリを選んでおく。
その後XCodeを閉じて、プロジェクトファイル(xcodeproj)パッケージ
の中を掘り下げていき、そのQLターゲットのスキーマファイル(xcscheme)を見みつける。これはプロパティリストである。
この中に、先ほど適当に指定しておいたアプリの箇所がある。
これを /usr/bin/qlmanage に置き換える。

以上

土曜日, 4月 14, 2012

モピシェイプのアップデート

昨日 iTunesにアップロードした。今レビュー待ちだ。
今回のモピシェイプのアップデートでは、
ズームとコントロールポイントの位置決めの改良、それから
文字からパスを生成する機能を追加した。

ズームに対応したのに伴い、フルスクリーン時にウィンドウサイズをキャンバスサイズにあわせて調整することをやめた。また、マジックトラックパッドのズームのジェスチャーにも対応した。これまでマジックトラックパッドはいまいち好きではなかったが、結構いいかもしれないなと思いはじめた。

ズームができるようになったので、個人的にも、かなりアイコンの作成がはかどるようになったと思う。早くやっておけばよかった。ユーザさんも喜んでくれるといいな。


文字からパスの生成は、個人的にはあまりアイコンに文字を使うことをなるべく
さけているのであまり重視していなかったのであるが、でも、やはりこれができるといい。
コンビニのアイコンに24とか 7とか11とか書くようなことはよくあるし。


水曜日, 4月 04, 2012

モピシェイプの懸案

モピシェイプについては、米国ユーザ様のレビューで、ズームアップ
できる様にしてほしいというものがあった。

確かに私もその機能が欲しい。
次回リリースしようと考えている新作アプリにはたくさんのアイコンを
盛り込まねばなりません。そこでモピシェイプでアイコンを書きまくっているのだが、
改善すべき点がいろいろでてくる。

ズームアップ機能のほか、コントローラーのポインティングの改良とか
フォントの取り込みとか、画像のExport操作の改良とか。
フォントの取り込みについてはフランスのユーザからも欲しいという指摘が
あった。

書き溜めたパスをテンプレートあるいはライブラリとして登録しておけると
便利そうだし。これは最初のバージョンを出したときに、米国ユーザから
提案されていたものだ。

アプリリリース

最近ブログを書いてなかった。
ここ一ヶ月くらいでリリースしてきたアプリをまとめておこう。

3/14 MopiShape 1.10 をリリース
このリリースで Objective-C のソースコードジェネレーションを廃止したのであるが
米国のユーザー様からお叱りを受けた。「あまたあるグラフィックアプリの中で、
ソースコードジェネレーションは唯一の特徴でしょ!」
というわけで、廃止を撤回した。
3/21 MopiShape 1.11 をリリース
Objective-C のソースコードジェネレーションが復活。

3/22 初のiPhoneアプリ「くつ下を救え」をリリース
ゆるゲー

4/4 Chirashi 1.30 をリリース
画像ファイルをドラッグで配置できる様にした。
これで、Macのアプリらしい使い勝手に少しでも改良できたと思う。
いちいちダイアログボックスからファイルを選ぶのはやっぱり面倒だ。

あと、改良点としては、トリミングしたあと、画質が落ちてしまっていたのを
修正した。

繰返し表示するフレームの内容を繰返し回数分だけ複数登録できるように
してみた。外部ファイルからデータ差込するわけではないので、
本格的にラベルを印刷したりする目的ではない。チラシなどのクーポン部分に
のせるイメージを替えられるといいなと思った機能だ。
ユーザさんに意図がうまく伝わるか、ちょっと心配。



水曜日, 1月 25, 2012

CHIRASHI バージョンアップのお知らせ

CHIRASHI をダウンロードしてくださった皆様
ありがとうございます。

最新バージョン 1.1 を公開しました。
Mac AppStore でリリースされています。
主に写真とか図形の操作性の向上を行いました。

Updateは無料ですのでどうぞダウンロードしてください。
お使いいただいた後、評価やレビューなどをいただけますと
大変うれしいです。

今後とも、よろしくお願いします。

火曜日, 1月 24, 2012

金曜日, 1月 20, 2012

カラフルなアヒル

今週は、MopiShape というMac用のアプリをリリースしました。
モピシェイプと読みます。
10月くらいに、アッヒールちゃんの絵を描いたツールの写真をのせたことがありましたが、
ちゃんとカラフルな絵が描けるようになったアプリです。

このアプリは ベクトル系のドローアプリなどと呼ばれるものの一種です。
画面上のピクセルごとに色をつけて描くビットマップ系の描画ツール(Windowsのペイントみたいなもの)と違って、座標上の点と点を結ぶ線を使って描くアプリです。ビットマップ系のあぷりでは拡大縮小すると絵が粗くなったりしますが、ベクトル系の描画では、
常にきれいに描かれます。
それに、余り絵の上手でない私でも、結構かわいく絵が描けるような気がします。
結構楽しんで描いてます。


金曜日, 12月 09, 2011

CHIRASHI App

CHIRASHI というMacアプリを作りました。
3日ほど前にMac App Storeのレビューがおわり、公開されました。
http://itunes.apple.com/jp/app/chirashi/id482532068?mt=12

1年ほど前からMacでアプリを開発をしようと思い立って、
この夏、8月末頃にCHIRASHIの開発に着手しました。
結局3ヶ月ほどかかりました。
最初はなめていて、頭の中では一ヶ月くらいで作れるつもりだった。
最初の一ヶ月でXCodeのプロジェクトから4度やり直し、おおむね現在の
見た目になった。10月の2週間くらいでQRコードとJANコードの生成ロジック
を実装し、概ね今の外観になった。
しかし、嫁さんに見せたところ、かなりいまいちな評価となった。
文字が入力しづらいとか、文字の表示がピンぼけになっているとか、図形が足りないとかいろいろ。。。
そこで再度見直した。レイヤーで文字を描画するとピンぼけることがわかり、レイヤーの使用をやめたり、描画コードを書き直し、入力方法も見直した。図形を大幅に追加することを決め、別途図形描画ツールを作ったりした。
Mac App Storeの基準をよくよく調べると、OS X Lionでの動作が必須となっていた。結局、OSをLionに更新した。XCodeのバージョンも上がった。Lionの新機能 フルスクリーンモード、オートセーブ、バージョンなんかについては最初、懐疑的だったが、使ってみると、すばらしいと感じた。そこで、対応することにした。対応すると、他にも気に入らないところがでてくる。だから磨いた。 ぷきぷき。。。

Appleの開発ガイドを読んでいると、開発のフェーズは、大まかに言うと

  • デザイン
  • 実装とテスト
  • 磨く (Polish)

からなる。
Polishが重要なのだという。Polishはテストではない。納得できるまで磨くのだ。
納得できなければリリースするべきではない。
と言うと、私のアプリは永遠にリリースできなさそうであるが、、、


11月下旬にやっとApp Storeにレビューを申請した。その数日後、不具合に気がつき、
申請を取り下げ、再申請をしたりしたあげく、無事レビュー完了の知らせが届いた。

AppStoreに公開されたのは嬉しかった。
また、次にむけてがんばろー。おー。

日曜日, 11月 06, 2011

Cocoaでの縦書きの実現について

OS/X 10.7 (Lion)では、NSTextView でも日本語のような
縦書による入力が可能になった。
OS標準のテキストエディタでも縦書きができるように
なっている。じぶんではあまり縦書きの文書は書かないので
あるが、使ってみると、なかなかいい。テキストカーソルは
水平になり、変換候補も横方向に縦書きで表示されるので
とても面白い。

NSTextView でレイアウトを縦書きにするには

setLayoutOrientation: で
NSTextLayoutOrientationVertical を指定するだけでよいことが
わかった。これだけで、テキストエディタと同じように縦書きで
テキスト入力ができる。

では、NSTextViewを使わずに、NSViewに縦書きのテキストを表示する
にはどうすればいいのか?
以前調べたときCoreTextを使って実現する方法がわかったが、
結構面倒なことになってしまったが、10.7になって、もっと楽な
方法ができたようだ。
CoreTextを使わずにCocoaのテキスト関連クラスで実現できる。
 NSTextStorage
 NSTextContainer
 NSLayoutManager

このうちNSTextStorage はNSMutableAttributedStringを継承している。
つまり、テキストの書式などの属性はテキストと共にNSTextStorageに格納する。
ここで、属性として NSVerticalGlyphFormAttributeName を設定すればよいようだ。

NSTextStorage *textStorage; があるとして、

    [textStorage addAttribute:NSVerticalGlyphFormAttributeName 
                      value:[NSNumber numberWithBool:YES] range:NSMakeRange(0, [textStorage length])];


のように指定する。
これで、日本語の文字はは左に90度回転した状態で水平方向に並ぶようになる。


あとは、あなたも首を90度傾ければ、縦書き表示が実現する。

首がつかれるので、いやだ? 

冗談はさておき、最初私は、さらに90配置を変更してくれる設定があるのだろうと
探していたが、見つからなかった。
じゃあ、Drawする前に、コンテキストに90度の回転を加えれば、それらしくなる
のかなと思ったのであった。ようは首を傾けるかわりにモニターを傾けるようなものだ。
その際に、表示域の縦と横を入れ替えてTextContainerに指定すればつじつまがあいそうだ。
でも、なんかしょぼい気がするし、NSTextViewはどうやっているのか気になった。
そこでヘッダファイルの説明を読むと、90度回転して表示しているらしいとわかった。
なんだ、同じじゃん!

コンテキストを回転するには     CGContextRotateCTM で90度時計回りの回転を
指定する。私のアプリはもともと任意の角度での回転を施していたんで、回転に
90度を足すだけだった。
やってみると、非常にいいあんばいになった。
もともと水平方向の描画をコンテキストで90回転しているだけなので、
水平方向のテキストアライメント(右寄せとかセンタリングとか)がそのまま
垂直方向に働く。よって縦書きテキストが上寄せ、中央寄せ、下寄せというように。

しかし細かいところで、課題が残った。
例えば水平テキストにアンダーラインを引くと当然、それは文字の下に線が引かれる
ことになるが、垂直なテキストでの傍線は私の実現方法では左側になってしまう。
それは普通、右側に引くものか?という点が気になる。
たぶんそうだ。右利きで鉛筆で縦書きに傍線を引くとき、左側に引こうとすれば
文字が隠れてしまう。よって、右側に引くのが自然だ。
でも、縦書きの印刷物で傍線が引かれたものなんて余り見かけないような気がする。


Appleの人も右側だと考えているようだ。テキストエディタでも右側に
傍線が引かれるようになっている。
しかし、これを実現する方法は今のところわからない。


土曜日, 11月 05, 2011

NSScrollView内のNSViewの位置について

OS/X では、NSViewなどのコンテンツを表示するビューを
NSScrollView内に配置すると、そのNSViewは左下隅に貼り付く。
原点を左上隅にあわせるためには、そのNSViewのサブクラスにて
BOOL isFlipped をオーバーライドして {return YES} を
返すようにすればよい。

であるが、ウィンドウをリサイズして、NSScrollViewが小さくなったときに
表示されている内容が上にスクロールしてしまう。

(NSScrollViewは自動的にリサイズするようにしておいたとして。)

絵にするとこんな感じである。
ウィンドウをリサイズすることにつれてスクロールビューもちいさくなる。
そのとき、狭くなった分だけ、表示されている内容が上に上がってしまう。



普通のアプリケーションはそのような状態にはなっていないので、当然なんとかなるはずが
その方法がわからず、なやんだ。
Appleのサンプルプログラムのsketchの状態を調べているうちに
やっと違いが見つかった。

Interface Builder のSize Inspector でのAutosizingの設定が不足していた
ことが原因だった。
これは、コンテンツのNSViewの設定である。

不十分な設定

対策
これによって、問題が解決した。
簡単なことであったが、知らないばかりに悩んでしまった。

まあ、いつも思うことだが、複雑な解決策は何か遠回りをしているものだ。
何かを解決できずはまってしまう時は、間違った方向に難しく考えすぎている
可能性がある。また、その方向で、何とか実現できたとしても、
その方法が自分でも気に入らない時は、おそらく、まだベストではない。
もっとシンプルな方法が見つかるはずなのだ。

木曜日, 10月 27, 2011

Quick Look Pluginプロジェクトの準備

自分のアプリケーションのドキュメントファイルにファインダーなど
でサムネイルやプレビューを表示するためには、
Quick Look Plugin を作成するという方法がある。

1) XCode 新規プロジェクトで System Plug-in  の Quick Look Plug-inを選択する。


2) アプリケーションのソースコードを(必要な奴だけ)プロジェクトに参照で追加する。

3) GenerateThumbnailForURL.c , GeneratePreviewForURL.c を
 の拡張子を.m に変更する。
    必要ならばincludeするライブラリを変更する。
 //#include <CoreFoundation/CoreFoundation.h>
 #include <Cocoa/Cocoa.h>

 アプリケーションソースもインクルードする
 例)
 #include "MyDocument.h"  

4) フレームワークの変更
  必要ならばCocoa.frameworkを追加する。

5) info.plist の編集
  Document types
    Document Content Type UTIs
      Item SUPPORTED_UTI_TYPE    
  
  SUPPORTED_UTI_TYPEを自分のアプリケーションのUTIに変更する

6) ターゲットにファイルをコピーするビルドフェーズを追加する。
   ※絶対パス
   ※コピー先: ~/Library/QuickLook   (/Library/QuickLook も可)

  そしてビルドフェーズに Product のオブジェクトを追加(ドラッグで)する。

7) GenerateThumbnailForURL.c , GeneratePreviewForURL.cを編集する。

8) テストツールを設定する。
 メニュー:プロジェクト→新規カスタム実行可能ファイル
   /usr/bin/qlmanage 
  引数を指定する。
   -p  documentFile.name       プレビューの場合
   -t   documentFile.name  サムネイルの場合

以上!

木曜日, 10月 20, 2011

あっひーるちゃん

昨日まで、プログラムで図形を描くために、
方眼紙の上で座標を調べつつ、コードを書いたりしていたが
かわいい絵を作ろうと思ったとたんに、面倒になった。

そこで、ソースコードを生成するためのプログラムを
作ってみた。

まず、これはモデルのアヒルちゃんである。











で、作ったアプリケーションで描いてみた。












いい感じじゃありません?