Core Data は素敵 / AppleScript Studio プロジェクトと Core Data

最近、MarsEdit 2 を使って、それについての 記事 を書いてみたり、ecto 3 Alpha を使って 記事 を書いてみたりしていたわけですが、自分は?というと、Kaku の画像挿入機能を試しに作ってみていました。

なぜいま画像挿入機能を作っているのかというと、他に作ってみたい機能や、他に作ってみたいソフトもあるのですが、現実問題、いまとりあえず足りないのは、Kaku の画像・リンク挿入機能あたりだろう、と。また、すでに書いたように、Mac 向けの二大ブログエディタを実戦で使ってみた結果、「やっぱり画像やリンクの扱いをなんとかしないと、記事を書くのがなかなかスムースにならない」ということを痛感したからでもあります。

こういった機能を作るには、画像の扱いやら、外部ファイルの扱いやら、ドラッグ&ドロップの扱いやら、自分がこれまで学んできたことがほとんど役に立たなそうな領域(=避けてきた領域)に挑むことになるので、かなりビビっていますが(下にも弱気発言)、今日からしばらくは、その中で気付いたことを記事にしていきます(たぶん)。


Core Data は素敵

脱線(2)」で、Core Data ベースの Kaku「CoreKaku」を途中まで作ってみた、ということを書きましたが、このとき初めて実践した Core Data が楽しく、こういった機能を作るときは Core Data を使おう、と心に決めていました(というか、Core Data 以外でのやり方を考えるのが面倒くさいというか…)。というわけで、この画像挿入機能は、全面的に Core Data を使って作られています。

まず練習用に、こんなプロトタイプを作ることにしました:

  • ドラッグ&ドロップで画像を登録して、管理するアプリ
  • データベースには、画像本体は置かず、画像ファイルのパスとサムネイルを保存
  • 画像のパラメータから img タグを自動生成

しかしこれは、GUI 上の操作とコピペ(おい)で、2秒ほどで完成(ウソですが)。これ以上は、記事のデータと連携できないと意味がないので、早々と Kaku との統合に作業を移しました。Core Data 恐るべし。

ss_image_manager.jpg

(※ Core Data はこうして、中心となる機能が動き出すのはかなり早いのですが、かなり開放的、というか、本当にまともなプログラムとして仕上げていくのには、時間と知識が必要 な気がします。例えば、保存ファイルはデフォルトの1個のままでいいのか、とか、もし大量の画像が登録されても、そのままでパフォーマンスが出るか、とか。動くには動くんですが、それ以外の部分を僕の知識でカバーできるか心配。今は快調に動いているんですが、それができなければこの機能は載せないかもしれません。けっこう弱気。)

AppleScript Studio プロジェクトと Core Data

ここで、AppleScript Studio ベースである Kaku 上で Core Data が動くように しなければなりません。

昔の僕なら「そんなことできるの?」と思っていたでしょうが、AppleScript Studio アプリも Cocoa アプリの変種(?)だ、ということを念頭に置けば、できないはずがありません。たぶん、非 Core Data の Cocoa アプリを Core Data 化するのと変わらないのではないでしょうか。

必要な作業は:

  • Core Data.framework をプロジェクトに追加する。

  • 本来 Xcode で「ファイル」「新規プロジェクト」「Core Data Application」 とすると、始めから Core Data.framework を含んだプロジェクトとともに、データモデルファイル(「 AppName_DataModel.xcdatamodel 」)と、あらかじめ基本的なコードが書き込まれた、アプリケーションデリゲートのヘッダ/実装ファイル(「 AppName_AppDelegate.h/m 」)が入っている。

    これらは知識があれば自分で用意することもできると思うが、(とりあえずは)これらがあった方が楽なので、なんとかする。僕の場合は、別に「Kaku」という名の Core Data アプリケーションプロジェクトを作成して、そこから拝借。

  • あとは Objective-C/Cocoa + Core Data の知識があれば、call method でなんでもできるよ!(※素敵なパラドックス。そんな知識があるなら、なぜ初めからそれで作らないのか、と。笑 僕は AppleScript のほうが慣れているから、としか言いようがありません…ってそれもやっぱりおかしいような。)

大体こんな感じでしょうか。

逆にほとんど Objective-C/Cocoa で書いた Core Data Application の一部を AppleScript(Studio)で動かすことも可能。前述の CoreKaku がこのアプローチ。…ってこれ、よく考えるとちょっと便利かもしれないなぁ。Objective-C/Cocoa の部分と AppleScript(Studio)の部分は、僕の印象よりもはるかにシームレスに共存できるんだな、と感じました。

ちなみに、こういった方法を最初に知ったのは applescript-studio ML のこの 投稿 です。できたら僕もまとめて、「Notes」コーナーに投稿しようと思います。

※ この記事は、かなり初期段階の画像挿入機能を備えた Kaku で作成しました。

t_ss_kaku_with_image_manager.jpg

Leave a Reply

Your email address will not be published. Required fields are marked *