ジャムスタ

just another mind Style

今日の振り返り/Editonにメモモード、Evernoteスクリプトほぼ完成

日常的に文章を書いているが、それと同じぐらい「作業メモ」的なものも書いている。

で、文章を書いている時にも、そういうメモが書きたくなるときがある。イチイチ切り替えが面倒なので、Editon上でキーボードショートカットを用いて切り替えられるようにした。

altと上矢印でモードが切り替わる。

実際は、同じテキストエリアに違うテキストを読み込んでいるだけ。ローカルストレージに放り込んであるメモを取得して、テキストエリアのvalに反映させる。もう一度altと上矢印で今度は逆の作業。

シンプルな動作だが、使い勝手はぐっと上がった。ライトな文章を書くエディタとしては、なかなかの完成度になりつつある。

それにしてもjQueryが便利である。

Evernoteスクリプト

Evernoteで選択したテキストを使って、新規ノートを作成し、ノートリンクを貼る、というスクリプトができた。不具合のチェックをEvernoteの共有ノートユーザーでやってもらったので、わりとサクサク進んだ気がする。

とりあえずほぼできた。

そのスクリプトを元にして、Evernotewiki的な運用するスクリプトも作成。これが存外に便利そうな予感。

automaterを使って、サービス登録してみた。これでコンテキストメニューから起動できるようになる。QuickSilverのホットキーに登録しておいてもよいだろう。

しかし、AppleScriptEvernoteの選択しているテキストが取得できないのが非常に痛い。ものすごく乱暴な処理をせざるを得ない。改善を望むところだ。

今日の振り返り/dashboardリニューアル、Evernoteスクリプトやや前進

本日は、自作のDashboardのリニューアル作業。

Evernoteから情報を取得して、noteの欄に表示していたのだが、Evernoteの方をリスト形式にしたので、noteの方もそれに対応させた。

以前はプレーンテキストにしてpreタグで表示させていたのだが、EvernoteのHTMLをそのまま持ってくることにした。

また、将来的な増設__作業ログを表示させる__を意識して、Note欄の幅を半分に。これはBoostrapのコラムを12から6に変更して、コピーしただけなので片手間。

さらに以前から考えていた、noteの表示を拡大できるようにトライ。別個にhtmlを作ろうかと思ったのだが、せっかくBoostrapを使っているので、モーダルで表示することに。note用とは別にdivタグを細工。


さすがに見栄えがよろしくないので、これまたBoostrapのpanel-cssを当てる。

一気に「らしく」なった。Boostrapさまさまである。

それぞれの内容は、Evernoteのノートに個別に入っている。それらが綺麗に一覧できるのは、なかなか心地よい体験だし、実用性もあると思う。ちなみに、それぞれのノートには作業ログ的なものも記載されているが、それはより分けてタスクだけをピックしてある。

Evernoteスクリプト

EvernoteのノートをSpritするAppleScriptの改良。といっても、微妙なバグを取っただけ。頂いたアイデアでずいぶん動作が軽くなった。後は、想定外の動きに対応させるのと、いくつかのSpritパターンを作ること。

最終的には、Macのサービスに登録して、いちいち自分でスクリプトを起動させなくても良いようにしたい。

今日の振り返り/縦書きプレビュー、Editon、dashboard、EvernoteScript

最近コードをよく書いている。自分用のコードなので気楽に書けるのだが、そのぶんあっちゃこっちゃと手を広げがちである。

軽くまとめみたいなものを書いておこう。

縦書き用プレビュー

原稿をある程度書いたら、PDFにして読もう、ということをやっている。書籍は縦書きなので、PDFも縦書きにしたい。Macのテキストエディトを使えば可能なのだが、いちいち立ち上げるのは面倒なので、スクリプトでやろうと思ったのだが、どうにも一筋縄ではいかない。

テキストエディト以外のアプリも探してみたが、スクリプトで対応するのは難しそう。

というところで、閃いた。EPUBがあるじゃん、と。

EPUBだって縦書きにできる。

というか待てよ。別にHTMLでもいいんじゃね。

と思って確かめてみると、firefoxたんでは厳しいがChromeでは問題無い。

というわけで、クリップボードに入っているテキストからhtmlファイルを作成し、それを縦書き用のCSSと結びつけておく。で、そのファイルをChromeでひらけ、と命令するAppleScriptを書いた。

これで縦書きプレビューが捗る。


Evernote(mac)用スクリプト

EvernoteのノートをsplitするAppleScriptのテスト中。

あと逆にマージするスクリプトも構想中。

Editon

自作のWeb上エディタがなかなかよい感じに仕上がってきた。

ライティングモードと付箋モードが同一ツールにあるのが良い。

たぶん公開ツールにはならないだろうが。

次はテンプレートを取り込めるようにすること。あと、作業ログの簡易化。

dashboard

作業ログの一週間分の見通しを付けたい、といろいろ考える。

Xcode + AppleScript に手を出した

基本的に、スクリプトAppleScriptエディタで書いているのだが、ウィンドウとテキストフィールを使うアプリが作りたくなった。

Xcodeの出番だ。

cocoa + AppleScirpt。

が、日本語の資料があまりない。とりあえず手探りで始めてみる。

Writing the Code | Building a Basic AppleScriptObjC (Cocoa-AppleScript) Application with Xcode | Peachpit

まず、ここの通りに行う。あまり理解できていないが、ある程度はわかった。

まず、

property textField : missing value

で、オブジェクトっぽいものを宣言するのだろう。

で、ボタンを押したときの動作を記述。
 
on buttonClicked_(sender)
display alert "Hello there " & (stringValue() of textField)
end buttonClicked_

「display alert」は見慣れたキーワードだが、stringValue() of textFieldも、なんとなく推測が付く。先ほど宣言した、textFieldが持つ、「stringValue()」を使っちゃいますよ、ということだろう。で、その「stringValue()」は、おそらく自身のstringValueの値をひっぱってこい、というコマンドだと想像される。

アプリの動作からするに、それがテキストフィールドに納められているテキストなのだろう。

で、コードを記述しおえたら、さらにページの指示通りに、コネクトを進めていく。App Delegateが中心になるようだ。

やるべきことは、(ウィンドウに設置した部品としての)テキストフィールドと、先ほど宣言したtextfieldを関連づけること。あと、設置したコマンドボタンの動作を、先ほど記述した on buttonClickedと結びつけること。この二つ。

書いてある通りにやれば、できた。

さて、ここからが問題だ。

私がやりたいことは、とある内容を、テキストフィールドに表示することだ。であれば、テキストフィールドからテキストを持ってくる命令ではなく、テキストフィールドにテキストを設定する命令が必要だ。

再び検索すると、setStringValue_()に遭遇した。

textField's setStringValue_(hogehoge)

のような形で記述するらしい。

おそらく書式は一定していて、set〜_みたいななのがいくつもあり、それでプロパティー的なものを設定していけるのだろう。たぶん。

一緒に、setTextColor_なるものも見つけた。これはテキストカラーを変更するものに違いない。

とりあえず、使いたい書式はだいたいわかった。

f:id:Rashita:20140303115948p:plain

上部に設置してあるのは、サンプルで使ったものなので気にしないでOK.

ボタンをクリックすると、

f:id:Rashita:20140303115945p:plain

Evernoteから取得したタグが表示される。

まったく望み通りの表示ではないが、とりあえず骨子はできた。後は、アレンジだ。

Evernoteのプロジェクトノートへのアクセスをよくするスクリプト

よくアクセスするノートへのアクセシリビリティは上げておきたいところ。

ショートカットに置いておくのも一手ですが、あまり置きすぎると逆に使いにくくなることもたしか。ということで、AppleScript


あらかじめ検索条件を指定したEvernoteのノートのリストを表示し、選択したノートをニューウィンド ...

リストダイアログが開き、ノートを選択してOKを押せば、独立ウィンドウでそのノートが開きます。

改善案としては、「更新日」順にリストをソートすること。そうすると「超」整理法っぽくなります。

Evernoteの名刺ノート(コンタクトノート)の中身が気になったので調べてみた

iOSEvernoteの「カメラ」の名刺モードで撮影すると、ユニークなノートが作成されます。

f:id:Rashita:20140220165134p:plain

テキストフィールドみたいなものとかがあるんです。

Evernoteはリッチテキストを扱えますが、標準ではこうしたものを作成することはできません。一体内部構造はどうなっているのでしょうか。私、気になります。

ということで、ノートをエクスポートして調べてみたところ、これらの要素は、どうもEvernote独自のスタイルがあてられている様子。

f:id:Rashita:20140220165259p:plain

こんな感じで、既存の要素にx-evernoteを指定することで、いろいろな拡張を行えるようです。メール欄とか会社欄とかがこれによって実装されていました。

で、その書式をそのまま真似したものを自作してみたのですが、うまく実装されず。何か、別の指定が必要な様子。

おそらくそれはノート外の(つまりメタ情報的な)要素だと思い、いろいろ探ってみると、「おそらくこれであろう」というものを発見。

f:id:Rashita:20140220165445p:plain

Evernoteのノートの中身の最後のほうに、note-attributesというタグがあるんですが、その中にcontent-classというタグを見つけました。いかにも怪しいですね。そのタグにはevernote.contact.1という文字列が挟まれていました。

ようするに、このノートは「Evernote独自のコンタクトノートですよ」という表現なのだと推測します。で、テストで自分で作ったノートに、この要素を書き込んでみると、無事オリジナルの名刺ノートと同じようにフィールドが機能しました。

が、これAppleScriptからEvernoteコマンドを使って書き込むことはできません。

一度ノートを作成し、そのノートのファイルを取得&改ざんする必要があります。さすがに、それはギークすぎるので、今のところはスルー。

どうしても、これらのフィールドを使いたくなったら、また考えてみます。

DIY-Evernote道も奥が深いですね。