今日の振り返り/Editonにメモモード、Evernoteスクリプトほぼ完成
日常的に文章を書いているが、それと同じぐらい「作業メモ」的なものも書いている。
で、文章を書いている時にも、そういうメモが書きたくなるときがある。イチイチ切り替えが面倒なので、Editon上でキーボードショートカットを用いて切り替えられるようにした。
Editonのバージョンアップ。テキストエリアにフォーカス時に、alt + ↑ でメモと通常のテキストが行き来できるように。 pic.twitter.com/uZXEwogwyY
— 倉下 忠憲 (@rashita2) 2014, 11月 17
altと上矢印でモードが切り替わる。
実際は、同じテキストエリアに違うテキストを読み込んでいるだけ。ローカルストレージに放り込んであるメモを取得して、テキストエリアのvalに反映させる。もう一度altと上矢印で今度は逆の作業。
シンプルな動作だが、使い勝手はぐっと上がった。ライトな文章を書くエディタとしては、なかなかの完成度になりつつある。
それにしてもjQueryが便利である。
Evernoteスクリプト
Evernoteで選択したテキストを使って、新規ノートを作成し、ノートリンクを貼る、というスクリプトができた。不具合のチェックをEvernoteの共有ノートユーザーでやってもらったので、わりとサクサク進んだ気がする。
とりあえずほぼできた。
そのスクリプトを元にして、Evernoteをwiki的な運用するスクリプトも作成。これが存外に便利そうな予感。
automaterを使って、サービス登録してみた。これでコンテキストメニューから起動できるようになる。QuickSilverのホットキーに登録しておいてもよいだろう。
しかし、AppleScriptでEvernoteの選択しているテキストが取得できないのが非常に痛い。ものすごく乱暴な処理をせざるを得ない。改善を望むところだ。
今日の振り返り/dashboardリニューアル、Evernoteスクリプトやや前進
本日は、自作のDashboardのリニューアル作業。
Evernoteから情報を取得して、noteの欄に表示していたのだが、Evernoteの方をリスト形式にしたので、noteの方もそれに対応させた。
以前はプレーンテキストにしてpreタグで表示させていたのだが、EvernoteのHTMLをそのまま持ってくることにした。
また、将来的な増設__作業ログを表示させる__を意識して、Note欄の幅を半分に。これはBoostrapのコラムを12から6に変更して、コピーしただけなので片手間。
Dashboardの改築。note欄を半分にして、タスクログを入れるスペースを追加。note欄もリストの形をそのまま表示できるようにした。 pic.twitter.com/Nnp5ljKCNI
— 倉下 忠憲 (@rashita2) 2014, 11月 16
さらに以前から考えていた、noteの表示を拡大できるようにトライ。別個にhtmlを作ろうかと思ったのだが、せっかくBoostrapを使っているので、モーダルで表示することに。note用とは別にdivタグを細工。
@rashita2 さらにモーダルを一つ準備して、Noteのリンクから一覧のモーダルを表示させる仕様に。 モーダルのCSSは後回し。 pic.twitter.com/qJZvpp1zY4
— 倉下 忠憲 (@rashita2) 2014, 11月 16
さすがに見栄えがよろしくないので、これまたBoostrapのpanel-cssを当てる。
@rashita2 Boostrapのパネルcssを適用。ぐっと見やすくなった。 pic.twitter.com/2mfEssWKBq
— 倉下 忠憲 (@rashita2) 2014, 11月 16
一気に「らしく」なった。Boostrapさまさまである。
それぞれの内容は、Evernoteのノートに個別に入っている。それらが綺麗に一覧できるのは、なかなか心地よい体験だし、実用性もあると思う。ちなみに、それぞれのノートには作業ログ的なものも記載されているが、それはより分けてタスクだけをピックしてある。
今日の振り返り/縦書きプレビュー、Editon、dashboard、EvernoteScript
最近コードをよく書いている。自分用のコードなので気楽に書けるのだが、そのぶんあっちゃこっちゃと手を広げがちである。
軽くまとめみたいなものを書いておこう。
縦書き用プレビュー
原稿をある程度書いたら、PDFにして読もう、ということをやっている。書籍は縦書きなので、PDFも縦書きにしたい。Macのテキストエディトを使えば可能なのだが、いちいち立ち上げるのは面倒なので、スクリプトでやろうと思ったのだが、どうにも一筋縄ではいかない。
テキストエディト以外のアプリも探してみたが、スクリプトで対応するのは難しそう。
というところで、閃いた。EPUBがあるじゃん、と。
EPUBだって縦書きにできる。
というか待てよ。別にHTMLでもいいんじゃね。
と思って確かめてみると、firefoxたんでは厳しいがChromeでは問題無い。
というわけで、クリップボードに入っているテキストからhtmlファイルを作成し、それを縦書き用のCSSと結びつけておく。で、そのファイルをChromeでひらけ、と命令するAppleScriptを書いた。
これで縦書きプレビューが捗る。
@rashita2 こういうテキストファイルから、こういうのを作る。あくまでプレビュー用。 pic.twitter.com/gF65O4G1pb
— 倉下 忠憲 (@rashita2) 2014, 11月 15
Editon
自作のWeb上エディタがなかなかよい感じに仕上がってきた。
ライティングモードと付箋モードが同一ツールにあるのが良い。
たぶん公開ツールにはならないだろうが。
次はテンプレートを取り込めるようにすること。あと、作業ログの簡易化。
dashboard
作業ログの一週間分の見通しを付けたい、といろいろ考える。
jQueryの書き方 その1
備忘録代わりに。まずは基本的な形式から。
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_なるものも見つけた。これはテキストカラーを変更するものに違いない。
とりあえず、使いたい書式はだいたいわかった。
上部に設置してあるのは、サンプルで使ったものなので気にしないでOK.
ボタンをクリックすると、
Evernoteから取得したタグが表示される。
まったく望み通りの表示ではないが、とりあえず骨子はできた。後は、アレンジだ。
Evernoteのプロジェクトノートへのアクセスをよくするスクリプト
よくアクセスするノートへのアクセシリビリティは上げておきたいところ。
ショートカットに置いておくのも一手ですが、あまり置きすぎると逆に使いにくくなることもたしか。ということで、AppleScript。
あらかじめ検索条件を指定したEvernoteのノートのリストを表示し、選択したノートをニューウィンド ...
リストダイアログが開き、ノートを選択してOKを押せば、独立ウィンドウでそのノートが開きます。
改善案としては、「更新日」順にリストをソートすること。そうすると「超」整理法っぽくなります。
Evernoteの名刺ノート(コンタクトノート)の中身が気になったので調べてみた
iOSのEvernoteの「カメラ」の名刺モードで撮影すると、ユニークなノートが作成されます。
テキストフィールドみたいなものとかがあるんです。
Evernoteはリッチテキストを扱えますが、標準ではこうしたものを作成することはできません。一体内部構造はどうなっているのでしょうか。私、気になります。
ということで、ノートをエクスポートして調べてみたところ、これらの要素は、どうもEvernote独自のスタイルがあてられている様子。
こんな感じで、既存の要素にx-evernoteを指定することで、いろいろな拡張を行えるようです。メール欄とか会社欄とかがこれによって実装されていました。
で、その書式をそのまま真似したものを自作してみたのですが、うまく実装されず。何か、別の指定が必要な様子。
おそらくそれはノート外の(つまりメタ情報的な)要素だと思い、いろいろ探ってみると、「おそらくこれであろう」というものを発見。
Evernoteのノートの中身の最後のほうに、note-attributesというタグがあるんですが、その中にcontent-classというタグを見つけました。いかにも怪しいですね。そのタグにはevernote.contact.1という文字列が挟まれていました。
ようするに、このノートは「Evernote独自のコンタクトノートですよ」という表現なのだと推測します。で、テストで自分で作ったノートに、この要素を書き込んでみると、無事オリジナルの名刺ノートと同じようにフィールドが機能しました。
が、これAppleScriptからEvernoteコマンドを使って書き込むことはできません。
一度ノートを作成し、そのノートのファイルを取得&改ざんする必要があります。さすがに、それはギークすぎるので、今のところはスルー。
どうしても、これらのフィールドを使いたくなったら、また考えてみます。