2011年9月24日土曜日

Alfred3作目!Evernoteで日記をつけよう、Evernote Diary!


久々にAlfredネタです。
はじめてEvernoteと連携してみました。
下はAlfred Extention本体とAlfred持ってない人用のコード。

Evernote Diary - Alfred Extention


-- Alfred Extentionのままでサーセン
property nb : ""

on alfred_script(q)
set notetext to q as text
set t to do shell script "date +'%Y/%m/%d'"
set timeStr to time string of (current date)
set AppleScript's text item delimiters to ","
try
set tit to text item 1 of notetext
set txt to text item 2 of notetext
on error
set tit to ""
set txt to text item 1 of notetext
end try
set tit to "[" & timeStr & "] " & tit
set t to t & "の日記"

tell application "Evernote"
if nb = "" then
set foundNotes to find notes "intitle:\"" & t & "\""
set found to ((length of foundNotes) is not 0)
if not found then
set curnote to create note with html "" title t
tell curnote to append html "

" & tit & "

"
tell curnote to append text txt
tell curnote to append html ""
else
repeat with curnote in foundNotes
tell curnote to append html "

" & tit & "

"
tell curnote to append text txt
tell curnote to append html "
"
end repeat
end if
else
set foundNotes to find notes "notebook:\"" & nb & "\"" & " intitle:\"" & t & "\""
set found to ((length of foundNotes) is not 0)
if not found then
set curnote to create note with html "" title t notebook nb
tell curnote to append html "

" & tit & "

"
tell curnote to append text txt
tell curnote to append html ""
else
repeat with curnote in foundNotes
tell curnote to append html "

" & tit & "

"
tell curnote to append text txt
tell curnote to append html "
"
end repeat
end if
end if
end tell
do shell script "afplay /System/Library/Sounds/Hero.aiff"
end alfred_script


名前のとおり、Evernoteに日記を書くためのスクリプトです。
最近Twitterでボヤキっぱなしなので、自粛するために作りました。
それも「つぶやき」なのかもしれませんが、脳内だだ漏れなのも気持ち悪いですしね。
ただのボヤキも念のため後から読み返せるようにしておこう、というスクリプト。

触りはこのくらいにして、さっそく機能を紹介します。


例えるなら、お一人様Twitter



Evernoteに「ノート名=日付」のノートを作成します。
ノートの内容は「小見出し=時間(と入力したタイトル)、本文=入力したテキスト」です。
同日に書き込んだ内容は、その日の日付のノートに追記されていきます。
ノートの内容は、ほとんどTwitterのログそのものです。見た目はこんな感じ。

1

かなり質素ですが、お一人様Twitterならこれでも問題ないです。
背景色とか文字色くらいなら、スクリプトを編集すれば簡単に変更できると思います。
以下、簡単に設定や使いかたをメモ。


設定



ノートを作成するノートブックを選べるようにしています。
一行目の「property nb : ""」にノートブック名を記入してください。
何も書かない場合、デフォルトノートブックを選択します。
まだノートブックが無い場合、新しくそのノートブックを作成します。
「デフォルトでいいから空欄でいいや」という人でも、デフォルトノートブックの名前を記入すると、ほんのわずか実行速度が上がります。

あと、今回はGrowlやめて音を鳴らすようにしました。
あまりに一瞬の出来事だしエラーも吐きようがないので、確認のためだけ。
実行したらリアクション返すのは、アプリとして割と大事な気がします。


使いかた



Alfredで「ed "テキスト"」と記入します。
「ed」の後に入力したテキストがノート内の文章となります。

例1) 2011/09/23 13:00:00に「ed ほげ」と入力

2

入力するテキストを「,」で区切ることで、小見出しにタイトルを入力できます。
例2) 例1と同日の14:00:00に「ed hoge,ほげほげ」と入力

3

このくらいですね。超簡単仕様。


「このスクリプトどっかで見たぞ?」←正解



多分そう感じている人が大多数でしょう。そのとおり、今回も安定の9割コピペ。
この記事とこの記事を合わせると、Evernote Diaryができちゃったよ!
いつもホントにありがとうございます。

Evernote Daily Diary - Veritrope


[Mac][Evernote] PowerPackユーザー限定。Alfredから最速でEvernoteにメモできるExtension『addev』 - b2log/p


b2logさんのコードを大枠に、Veritropeさんのコードをペタペタ。
少し前に見た「Launcher」というMacのキーボードランチャでEvernoteに日記を書くというネタを、Alfredでやってみただけ。
Alfredだと一動作少ないのがいいですね。


あとがき



Evernote Diaryを作って感じたこと。
主題はEvernoteにノートを作る場合のパラメータについて。
Evernoteに自前で作りたいノートって、割とたくさんあるんじゃね?ってこと。
で、それを一つのコマンドから作れたら素敵じゃね?ってこと。

日記、長文、タスク、ブログのネタ、買いものリスト。
Evernoteに作りたいノートは、すぐ思いつくレベルでもこのくらいはある。
そして、それらを書くときのEvernoteのノートのスタイルは様々。
今回の日記スタイルだったり、チェックボックスがついたタスクだったり。
長文だとAlfredでは書けないし、ウィンドウを出してじっくり書きたかったりする。

これらを一つのスクリプトから選んで実行できるといいなぁ、と思った。
Alfredから起動するスクリプトは同じだけど、パラメータで分別する。
パラメータに「diary」と入れたら、今回の日記スタイルでノートを作る。
パラメータに「task」と入れたら、チェックボックス付きノートを作る。
全部バラバラにスクリプト書いてAlfredに登録しても結果は同じだけど、そんなにコマンド覚えられないしね。

けど悪い点もある。Alfred Extentionにめちゃくちゃ長いコードを書く必要がある。

対策1:スタイル別に小分けにして、外部スクリプトにしちゃう。
スタイルごとに「evernote_diary.scpt」とか「evernote_task.scpt」に分けちゃう。
本体はrun scriptで外部を実行するだけにすれば、Alfred Extention自体は短くなる。
けど、これだとAlfredでエクスポート出来ない。それはコンセプト的に本末転倒。

対策2:Alfredでエクスポート出来る形で外部スクリプトを使う。
1と矛盾するようだけど、方法はある。詳しくは長くなるのでまた今度。
ザックリ書くと、外部スクリプトを「テキスト形式」で保存しておく。
一手間かければ外部スクリプトを読み込んだコードを作れるようになる、はず。。。
話脱線するけど、これはAlfredだけの話じゃなくて、全てのスクリプトでやってみたい。
個人的にはそのほうがスクリプト管理しやすいと思うし、ブログに貼るときも簡単なので、そのうちスクリプトの管理自体をごっそり変えてみるつもり。

対策3:これ、そもそもアプリじゃね?
スクリプトとアプリの境界はよく分かんないけど、なんとなく。
それに正直、Alfredでやる意味が薄いかなぁ。出来るに越したことはないけど。
ホットキー1つで実行できれば、速さは確実にランチャより上だし。
本当はEvernote Trunkにこういうの期待してたんだけど、どうも違ったみたいだし・・・

当面は対策2に向けて爆進中です。

2011年9月18日日曜日

ServiceAppleScript -右クリックからAppleScript実行-

久々に神アプリ発見!!



いつもいろんなアプリを探してますが、今回は神アプリと呼べるアプリを発見しました!
偶然にもMacの手書き説明書さんで紹介されてる、その名もServiceAppleScript。

ServiceAppleScript - AppleScriptを実行するサービスメニュー項目を作るアプリケーション


これを使えばAppleScriptを右クリックのサービス項目から使えます!
このアプリはかなりの需要があるんじゃないでしょうか!


AppleScriptをもっと使いやすい位置に



普段AppleScriptを使う場合、メニューバーやランチャから実行する人が多いでしょう。
一方で、使いやすいAppleScriptはテキストやファイルを引数にするものが多いです。
例を上げると「選択したテキストやファイルを〇〇する」みたいなタイプ。大抵は簡単なコードですが、使う頻度で言えば小難しいコードより確実に多いはず。
となると、AppleScriptを使うまでの手順としては


  1. テキスト/ファイルを選択

  2. メニューバーやランチャまでマウスを持っていく

  3. クリックして起動


の3ステップ。これ、かなり面倒じゃないですか?
いろんな場面で使える便利なAppleScriptを作っても、使うまでが面倒だとむしろ使いたくなくなるという、ワケの分からない状況。
AppleScriptはものによってはかなりの頻度で実行するものもあります。
そんなものこそ、アプリケーションと違い、もう一歩使いやすい位置に置きたい。
ServiceAppleScriptは、そんな願いを叶えてくれるアプリです。


Automator使えばよくね?



実はServiceAppleScriptが出る前から、サービスからAppleScriptを使う手はありました。
というか超有名で当たり前な手段ですね。
Automatorでサービスを作り「AppleScriptを実行」のウィンドウにコードを書く。
・・・うん、そうね。確かにこれでもいいよね。。。
実際僕も今まではこれでやってましたし。
しかし、ServiceAppleScriptを使う利点はいくつもあるのです。
特に「これはいい!」と思ったのは、AppleScriptをAppleScriptとして管理できるようになること。


ここがダメだよAutomator



「なにを言ってるんだこいつは」と思ったでしょうが、そのまま文字通りの意味です。
当たり前ではありますが、Automatorで作ったサービスはたとえ中身が全てAppleScriptで書かれていたとしても、Automatorでしか開けません。
そのくせに、Automatorに用意されているスクリプト作成ウィンドウは猫の額より狭い。
そもそもこのウィンドウ、どう見てもスクリプト書かせる気がないでしょ・・・

1

結局は作成・編集するたびにAppleScriptエディタで書いてコピペする始末。
もうホント何をやってるんだ僕は・・・と虚しくなるレベル。
だったら最初からAppleScriptエディタで書かせてよって話です。
なぜAutomatorには外部のAppleScriptを読み込む機能が無いのか、不思議でなりません。
AppleScriptはAppleScriptとして保存し、編集するときはAppleScriptエディタを使う。
これが出来る時点で、ServiceAppleScriptは超優秀。あるべき形って感じがいいですね。
「右クリックから実行」とかタイトルに書いた割に、一番の目当ては納得いく形でサービスを扱うことにあったり。

このほかにも、AutomatorではAppleScriptのpropertyが扱えなかったりと、チマチマと制限があります。
その点ServiceAppleScriptはpropertyも扱えるし、なんと言ってもサービスをアプリケーション形式にできるので、パッケージの中身を好きにできるのがイイですね。
サブルーチン集を置いてもよし、アイコン変えてもよし。配布も簡単です。

散々言ってますが、Automatorにもちゃんといい部分はあります。
あらかじめAutomatorに用意されているコマンド集を使えるので、それはそれで便利。
1つのサービスを作るお手軽さでは、Automatorが圧倒的に上でしょう。
その分、クリティカルな機能は探しにくいというだけ。
その時々で便利に使える方を選べばいいと思います。


投げっぱなしですがホント便利!



相変わらずアプリのレビューをすると言いたい放題言って使い方すら放置してますが、その辺は作者さんの配布ページやらを参考に。
いくつかサンプルも置いてくれているので、発想の参考にしてみるといいと思います。
僕はさっそく前の記事で作った「選択したファイル/フォルダを1つずつzip圧縮」のサービス版を作ってみました。
やっぱり「右クリックから実行」ってのはいいですね。感覚で使えます。
相変わらずただコピペしただけですが、作ったサービスを置いておきます。

選択項目を1つずつzipで圧縮.app

propertyも扱えるようになったし、いろんなサービスを考えてみたいと思います( ´ ▽ ` )

ServiceAppleScript - AppleScriptを実行するサービスメニュー項目を作るアプリケーション

[AppleScript] Finderで複数選択している項目を1つずつzipで圧縮

1つずつってのがミソです。

複数選択している状態で圧縮すると、デフォルトではまとめて圧縮されてしまいます。
しかしときには1つずつ圧縮したいケースもあるでしょう。(というか直面した)
コードは相変わらず9割コピペ。僕の仕事はGrowlを設定しただけ。
dittoが初参加です、ちょっと調べるとこれ便利ですね。これからお世話になりそう。
ditto(1) Mac OS X Manual Page

あと、今回のような時間がかかるときはGrowl入れる意味があって嬉しいです。
いつも自己満なんで。。。
しかし、ファイル操作のときはshell大活躍すぎてAppleScriptで書く意味がががが・・・
AppleScriptは当然として、shellも知っとかないとですねぇ。覚えることが多いっす。

set i to 0
tell application "Finder"
set fol_Path to (target of window 1) as alias
repeat with select_item in (selection as list)
set file_path to select_item as alias
set fil_name to name of file_path as text
set source to quoted form of POSIX path of (file_path as text)
set dest to quoted form of POSIX path of (fol_Path & fil_name & ".zip" as text)
do shell script "ditto -ck " & source & " " & dest
delay 1
set i to i + 1
end repeat
end tell
set grrDescription to i & "files" as text
my growlRegister()
growlNotify("End Run Zip", grrDescription)


using terms from application "GrowlHelperApp"
on growlRegister()
tell application "GrowlHelperApp"
register as application "選択項目をzipで圧縮" all notifications {"Notification"} default notifications {"Notification"} icon of application "Finder.app"
end tell
end growlRegister
on growlNotify(grrTitle, grrDescription)
tell application "GrowlHelperApp"
notify with name "Notification" title grrTitle description grrDescription application name "選択項目をzipで圧縮"
end tell
end growlNotify
end using terms from

ブログのテンプレートが治ったよ!!!

@ryo_dgマジ大天使


さっきの「要するに情弱なのでわかりません(´・ω・`)」という記事を投稿して4分。
ソッコーで解決策を教えて頂きました。そんな大天使、@ryo_dg。
[blackbirdpie url="http://twitter.com/#!/ryo_dg/status/114983883103141888"]
えっ?えっ?よくわからんお??と困惑してると、
[blackbirdpie url="http://twitter.com/#!/ryo_dg/status/114984659158437889"]
なんとURLまで教えてくれる親切っぷり。
さっそく入れてみましたよ!!


なおった!!改行なおったよ!!!


すげえ、一発でなおってしまった・・・
2つあった改行が見事に取れてます。よく分かんないけどすげえ・・・
というか、僕の暗号化された悩みを解読して解決までしてくれたりょーちん。
まさかTwitterで天使に出会えるとは・・・
マジでありがとう(´;ω;`) 一生ついて行きます師匠。


どうやらbrタグは入れなくていいらしい


マイエンジェルの教えのとおり、WordPressはbrタグを入れなくてもコード内で改行した場所に自動でbrタグを入れる仕様なんだそうです。
一方、僕はコードにガシガシとbrタグを書いて投稿してました。
どうやらそれが重複して、brタグが2つ入ってた模様。
要するに僕が余計なことやってたというオチでした\(^q^)/

なので、今度からはbrタグは入れずにただ改行するだけにすればOK。簡単ですね。
そして、今回入れたこのbrBrbrってプラグインがあれば、改行したいときに好きなだけ改行できるみたいです。
なので、






なんてこともできる!!(ちなみにこれは直接brタグは打ってません)
仕組みはよく分かんないけど、挙動のわからなかったbrタグが直感的に打てるようになりました!


超簡単な設定方法


やることはすごく簡単なんですが、MarsEditを使ってる人は一手間あるんで一応。
まず、ここからプラグイン本体をダウンロード。

Wordpress 改行プラグイン · CamCam


インストールまでは紹介ページのとおりです。これで意のままに改行できるようになる!

ここからはMarsEdit使ってる人のみ。
MarsEditというブログエディタには、リアルタイムでプレビューを表示するという機能がありますが、ここの設定です。
僕は元々brタグを打ち込んでたので、プレビューでは「brタグで改行、普通の改行は無視する」という設定にしてました。
これからは「普通の改行を改行(書いたとおりの文章)する」ように設定し直します。
(すっごく分かりづらいなこの説明・・・)

やり方は凄まじく簡単・・ですが、環境設定になかったのでちょっと探しました。
MarsEditのメイン画面でブログ一覧を出して、ブログ名を右クリック。
Edit Settingsがあるので、それをクリック。

1

次にPreview Text FilterをTextileに変更。

2

こんだけ。
つーかこれも大天使ryo_dgに教えてもらいました。マジ感謝。
今までの記事はbrタグ書いちゃったんでもう治せませんが、これからは好きなスタイルで書けそうです。
本当によかった!ありがとうりょーちん!!

てすととととと

またまたテスト投稿。
タグって難しいね(´・ω・`)

ブログのテンプレートがおかしい件

最近は割とブログの更新頻度も上がってきました。
そうなるとやっぱり愛着も湧いてきて、たまにはプラグインの更新でもしようかなー、ついでにテーマもいじってみたいなーでもそんなスキルねーなー、なんて軽い気持ちで久しぶりに自分のブログを覗きにきたわけですが・・・



Web初心者「気付いたら改行が入ってました(キリッ」



1

な ん だ こ れ、行間空きすぎ・・・
「どんなコードしてんだよ」とHTMLを見てみると、



2

なんということでしょう。
一行ずつにbrタグが打ち込まれているではありませんか。
明らかに一個余分だろ・・・
HTMLの文法なんてお構いなし。(brタグ連打はイクナイらしい)
これぞ匠の成せる技。さすがWeb初心者すいとー。



Web初心者「(多分)気付いたら改行が入ってました(半信半疑」



いや、さすがにいくら僕が初心者でも、こんなに改行はしてません。
でも一応確認はしてみようとサーバーの記事を直接見てみると、



3

うん、やっぱりbrタグは1つずつしか書いてないことが判明。
ほらね、僕はちゃんと書いてたんだよ。よかったよかった(*´Д`)



「けど、前はちゃんと改行されてたよなぁ」と思いながら、昔にBloggerで書いてインポートした記事を開いてみると、こちらは無駄な改行は入っていない。
てことは、WordPressに移ってから書いた記事のみがおかしいということ。
あれ?もしかしたらこの改行ってWordPressさんの所為?



小悪魔WordPressの罠☆(ゝω・)vキャピ



自分が間違ってないと知るや、WordPressさんを悪者に仕立て上げてググってみたら、こんな記事を発見。




最適化(笑)と銘打って勝手にpタグ、brタグを書いたり消したりしてくれるらしい。
ホントなにやってくれてんだよ(´;ω;`)
さらにググってみると、似た症状で困ってる人はいるようで。
というか、実際の用途は「たくさん改行を入れたい」らしいです。
僕とは真逆だけど、WordPressの最適化を止めて欲しいってのは同じ。
んで、この最適化(笑)対策のプラグインとかもありました。



Modify paragraph formatting plugin “PS Disable Auto Formatting” | WordPress Plugin for CMS



早速入れてみる。・・・が、やっぱりどうにも直らず。
これはどうしようもないのか・・・_|\○_
そもそもWordPressがどういう動きをしてるのか分かってないのが問題なんですが、これ以上の解決策が見つからず。
いい加減HTMLとかPHPとか勉強しないとなぁと痛感しています。
とりあえず今はこの行間空きまくりのテンプレートで我慢するしかないか・・・

2011年9月9日金曜日

テスト投稿

PS Disable Auto Formattingのテスト。
うまくいったら記事にしますお。


うまくいかなくても記事にするのでたすけて(´;ω;`)

2011年9月8日木曜日

Textastic -iPadでいつでもどこでもプログラミング-

最近スクリプトとやらにハマってきて、日夜妄想にふけってます。
「あんなことできたらなー」と調べ始め、「アレとコレを使い回せば出来るんじゃね?」と思いたち、「とりあえずガシガシ書くべ!」と盛り上がります。
簡単なコードでも形になると、やったあああああって感じになれて楽しいです。


で、この「妄想」→「ひらめき」→「書き出し」の一連の流れで一人遊びするんですが、唯一スムーズにいかないのが「書き出し」。
メンドクサイとかではありません、書くのは楽しいし大好きです。
ただ、すぐに形にするのが難しいのです。ただでさえワケの分からない文字列ですから。
トーシロの僕はエディタでコンパイルしながら、ひたすらにtry & errorがやっと。
仕方ないと言えばそれまでですが、もう少し効率的に進めたいものです。


ほかにも「書き出し」に時間がかかる点があります。それは自宅でないと出来ない点。
「いや、iPhoneで書けばいいじゃん」・・・そう、僕も最初はそう思ってました。
しかしこれがおもしろいほどに筆が進まない。もといフリックが走らない。
あの狭い画面にこれでもかとキーボードを出し、チマチマと縦横にスクロールしながら、超初心者冗長コードを読んでると、全くと言っていいほど頭が働きません。


これではアイデアは溜まる一方です。積ん読、積みゲーならぬ積んアイ。(語呂悪すぎ)
アイデアばかり出してもしょうがない。いつでも発散できる環境を作らねば!
と思い立って、このアプリを買ってみました。


iPadでいつでもどこでもコーディングできるよ!



Textastic Code Editor App
カテゴリ: 仕事効率化
価格: ¥850


このアプリはコーディングに特化したテキストエディタ。
HTML、Object-C、JavaScript、shellなど超有名どころは当然として、80以上の言語をサポートしているというパワフルなエディタです。
HTMLやCSSではプレビュー表示ができるので、デザイン屋さんも嬉しいアプリ。
更に決め手になったのは、ユーザーの少ないAppleScriptにも対応している点。
ほかにもコーディングアプリはありましたが、AppleScript対応はTextasticしか見つけられませんでした。
僕は今のところAppleScript一筋なので、実質Textastic一択という流れ。
機能やレビューは本家ryo_dgくんの記事が分かりやすいので、そちらをどうぞ。


超ザックリな気に入った点、イマイチな点


気に入った点



  • 記号が即座に打てる専用キーボードが超便利。これだけはPCにも勝る。

  • カーソル位置の移動を補助するサブパネルも便利、しかもオシャレ。

  • 画面が大きくてザーッと読みやすい。iPhoneではこうはいかない。

  • フォントを細かく変更できる。初心者には見やすさが命。

  • Dropbox対応。今更当たり前っぽいけど、ようやく必須な機能なんだと気づいた。


イマイチな点



  • 2バイト文字が1バイト文字の幅になっちゃう。見やすさとオシャレさ激減。

  • 文字コードを自動認識しない、毎回選ぶの面倒。実は僕だけだという噂もある・・・


こんなのあったら便利なのに・・・



  • コンパイル。アドオンでいいから欲しい。通信ありきでサーバー経由なら可能?

  • 用語登録機能。よく使うクラス名とかは数タップで打ちたい。

  • スクリプト内の変数を記憶する機能。一度打った変数は数タップで入力したい。

  • Bookmarkletでリンクタグ挿入。HTMLには便利なのかな?HTMLサッパリすぎて謎。

  • 各言語のヘルプが欲しい。・・・はい、ググれって話ですね。。。


言いたい放題言いましたが、実際イマイチな点はほとんど無し。
2バイトだろうが1バイトだろうが、機能的には大した問題ではないですし。
楽しすぎるだけに、要望ばかりが先走っちゃいますね。ほぼ、ただのワガママ集です。
ただ、用語登録や変数入力補助あたりはかなり重要な気もしてます。
テキストエディタは補助機能が盛りだくさんだからこそ、使う価値があると思うので。実はそのうち作者に要望してみようかなと思ってます。
またこのほかにも、TextasticでAppleScriptを書くにあたって便利な使いかたもチラホラ見えてきたので、その辺りも追々記事にしたいと思います。


いいお値段はしますがそれ以上の働きをしてくれる、久々に大当たりなアプリです。
僕自身いろんなiPadアプリを試してますが、完成度はかなり高い部類かと。
あと、いつでもプログラミング出来るってのはすごく大事ですね。自然とモチベーションが高まるし、その分アイデアも生まれやすくなります。
プログラマー、WebデザイナーなiPadユーザーは是非ご検討くださいな( ´ ▽ ` )ノ



Textastic Code Editor App
カテゴリ: 仕事効率化
価格: ¥850