TextClip Anywhere+JavaScriptが楽しくてiPhone生活が捗る件
2016/03/16
価値ある情報をユーザー視点で発信するブログ
2016/03/16
iOSの連絡先に登録した氏名とよみがなを使って漢字変換ができることは、きっとご存知でしょう?
iOSに単語登録の機能が搭載されるまでは、その機能を単語登録代わりにするのがiOS使いの習わしでしたからね。
もくじ
その連絡先を使った単語登録技に特化したアプリがTextClip Anywhere。
レビューが悪いですが、とんでもねえ、いいアプリですよ。
moyashiは、iPhone 4S (iOS 5.0)、iPad 2 (iOS 4.3.3)で動作を確認しています。
定型文入力-TextClip Anywhere (Version 1.4.2) | ||
カテゴリ: | ユーティリティ | |
価格: | ¥85 | |
デベロッパ名: | Unit Kay | |
リリース日: | 2010/01/05 | |
対応デバイス: | 全機種 | |
現Ver.の平均評価: | (2.0 / 7件の評価) | |
通算の平均評価: | (3.0 / 155件の評価) | |
Game Center: | 非対応 |
TextClip Anywhereは、登録する際のよみがなを「ー。、?!」の五つに限定している点がヘンテコリンです。
単語登録アプリなのに、何と、好きなよみがなを指定することができないのです。
そんな制約を課すことに何の意味があるのでしょうか? それは、よみを「ー。、?!」にすると、登録した単語をワンタッチで呼び出せるからです。
「ー。、?!」は通常文章の末尾に登場するものであり、またこれらを入力した後で何かに変換するということもありません。従って、「ー。、?!」をよみがなに指定して単語登録をしても、普段の変換効率に悪影響を与えることがありません。だから「ー。、?!」なのです。(冒頭のスクリーンショットのように、それ以外にも登録できるように設定可能)
iOSの日本語テンキーキーボードには「^_^」という顔文字入力用のキーがありますが、そのバリエーションを増やそうというのがTextClip Anywhereのコンセプトです。
「ー。、?!」を五つの顔文字キーと見立て、そこによく使う単語を登録し、素早く呼び出そうというわけです(続きは[Read More]から)
そんな特殊な単語登録アプリTextClip Anywhereの中でも、よみがな「ー」への単語登録方法は、ひときわ風変わりです。
TextClip Anywhereを起動したとき、または前面に呼び出したときに、そのときクリップボードに入っているテキストを、勝手に「ー」に登録してしまうのです。
なぜそんなことをするのでしょうか? それは、こうすることで、クリップボード履歴機能を擬似的に実現しようというのです。
クリップボード履歴からのペーストは、「ー」の変換結果からの挿入という形にすることで、iOSに本来無い、複数の履歴から選択してのペーストを可能にしているわけです。
iOSの制約で、常にクリップボードをバックグラウンドで監視するアプリを作ることはできませんから、苦肉の策です。
同種のクリップボード履歴管理アプリが他にもありますが、このように連絡先を使った単語登録技を応用した、日本語キーボード利用者限定の仕組みを採用することで、利便性の向上を図っているわけです。
TextClip Anywhereの主たる機能は、前述のように「ー。、?!」というよみに頻用の単語を登録することです。
TextClip Anywhereの機能のもう一つの軸として、アクションがあります。
TextClip Anywhereで登録した単語を対象に、アクションを通していろいろな操作ができるのです。
今回このエントリでフォーカスを当てたいのは、JavaScriptを使ったテキスト加工機能。
TextClip Anywhere+JavaScriptが持つ可能性の中でmoyashiが注目したのは、以下の流れが可能であるということです。
ユーザーでも、このことを知っている人は少ないのではないでしょうか。
というわけで、TextClip Anywhereによる上記二例の実例をお目にかけます。
JavaScript実行機能はいくつかあるアクションの一種です。
JavaScript実行機能のチュートリアルに入る前に、まずはアクションの適用方法からおさらいしたいと思います。
まずは、何かメモアプリなどを起動し、「うんこなう」と入力、それをクリップボードにコピーしてください。
コピーしたらTextClip Anywhereを起動、さらに、一番上の「ー(クリップボード履歴)」をタップ、さきほどクリップボードにコピーした「うんこなう」がリストされていることを確認してください。クリップボード履歴機能が発動したわけですね。
画面下に四分割されたボタンが見えるかと思います。これがアクションボタンです。
アクションには3つのページ(設定で6ページまで増やすことが可能)があり、ページは右端にあるボタンを押すとめくることができます。
画面下、右端のページめくりボタンを押して実行したいアクションを表示させ、実行したいアクションをタップして選んだ後、登録単語をタップ。これがアクションの適用方法となります。
登録単語をタップすると、ボタンのたくさん付いたアクションシートがニョキっと出てきて、どのアクションを適用するか決めさせる、つまり「対象指定→処理方法指定」という順序を想定するかと思いますが、その予想は裏切られます。
TextClip Anywhereは、普通と逆なのです。
アクションの適用方法はわかりましたので、次はJavaScriptの実行方法です。
ボタン上の数字が3になるまで、画面下、右端のページめくりボタンを押します。
初期状態では、文字が書いていないのっぺらぼうのボタンばかりが並んでいるかと思います。
この気味の悪い3ページ目こそが、JavaScript実行アクションのためのボタンが並ぶページです。
初期状態では、ボタンの中身となるJavaScriptが空の状態であるため、ボタンに文字が書いていないのです。
まずは、左端ののっぺらぼうのボタンをタップしてみます。
すると、ボタンの中身を設定するためのウインドウが、下からせり上がってきます。
ここにJavaScriptを書き込むわけですね。
例えば、「JavaScript:」とある欄に以下のように書いてみてください。
TEXT.split("").join(" ")
「TEXT」は、登録単語を意味します。例えば「うんこなう」という登録単語をタップしたときには、「TEXT」は実際には「うんこなう」と自動的に置き換えられます。
それを「split(“”)」で文字ごとにバラバラにした後、「join(” “)」で文字の間に半角スペース二つを挟んで結合しています。
結果として、「うんこなう」というテキストが「う ん こ な う」というテキストに加工されます。
どうでもいいことを強調されて、すっごくムカツキますね。
さて、「結果に対する処理:」の下にもボタンが並んでいます。これが、JavaScript実行後に適用する処理を選択するものです。
JavaScriptを実行した後、ここで選んだ処理が、仕上げのステップとして実行されるわけです。
四つ並んだ処理の意味を左から説明します。
ここでは、JavaScriptで加工したテキストをクリップボードに書き戻したいので、左端のボタンをタップします。
ここでタップしても何も起こりません。あくまでも、JavaScriptを実行した後の処理を指定しているだけです。
ボタンの上の文字、ラベルも指定しましょう。「ラベル:」の下に「ムカツイ」と入力します。
さらに、右上の「保存」ボタンをタップし、さらに「完了」をタップして編集モードを抜け出ます。
何も設定されていない状態のボタンを押したときは、いきなりJavaScript編集モードに突入しましたが、これは、JavaScript実行アクションボタンの中身が空の場合だけです。
「ムカツイ」ボタンには既にJavaScriptが設定されているので、ボタンをタップしても、さきほどのようにJavaScript実行アクションボタン編集ウインドウがせり上がってくることはありません。
「ムカツイ」ボタンをタップしてみてください。ウインドウは表示されません。
「ムカツイ」ボタンが選択された今の状態。この状態は、続いてタップする登録単語を、さきほど設定したJavaScriptで処理し、処理結果をクリップボードにコピーする準備が整った状態です。
早速、「うんこなう」をタップしてみましょう。
少しの処理時間の後、「以下のテキストをクリップボードにコピーしました」というダイアログで、加工後のテキストである「う ん こ な う」がクリップボードにコピーされたことが通知されるでしょう。
Twitterクライアントを立ち上げてください。書き込みボタンを押し、ペースト。さらに投稿ボタンを押します。
しばらくしてからフォロワー数を確認すると、少し減っているかと思います。
おめでとうございます!! ムカツイートの完成です! そして、TextClip Anywhereによる以下の流れが体験できました。
一度JavaScriptを設定すると、タップしてもJavaScript実行アクションボタン編集ウインドウは表示されなくなります。
では、最初に表示させたJavaScript編集ウインドウはどうやって再度表示させられるでしょうか?
方法は、右上の「編集」ボタンを押し、編集モードに入った後で、編集したいJavaScriptアクションボタンをタップ。これです。
また、デフォルトではJavaScript実行アクションのためのボタンが四つしかありませんが、これは「設定>TextClip>追加列数」で増やすことができ、最大で16個になります。
仕事をしていれば、形式の決まったメールを送る機会はあるかと思います。
ただの定形メールであれば、いくつかそれ用途のアプリが出ていますが、日によって変わる定形メールというものを送る機会が、僕には絶えずあります。
例えば、メールの表題に送信日の日付を入れるパターンというのは結構あります。
また、月例のメールであれば、その月の数字を入れたりということも、ままありそうですね。
僕の場合は、毎月カウントアップされていく数字を含む表題を送る用があるので、TextClip Anywhereの以下の機能を見た瞬間ひらめきました。
日によって一部変わるメールのテンプレートの生成をTextClip Anywhereを使って実現してみます。
いきなり結論ですが、以下のスクリプトをJavaScript実行ボタンに設定。
var a = "hoge@hoge.com";
var d = new Date;
var y = d.getFullYear().toString();
var m = (d.getMonth()+1).toString();
var da = d.getDate().toString();
var dd = y+"年"+m+"月"+da+"日";
var h = "[レポート]";
var subject = encodeURI(h+dd);
var body = encodeURI(dd+"の報告です。\n\n"+TEXT);
var p = "mailto:"+a+"?subject=";
p+subject+"&body="+body;
「結果に対する処理:」は、以下を選択。
「ラベル:」は「定形メル」とでもしておきます。
「定形メル」ボタンを選択した後で、さっきと同じようにメールの本文にしたい登録単語(クリップボード履歴項目)をタップすると、その項目を本文に設定した形で新規メールが作成されます。
メールのサブジェクトと本文の冒頭には、JavaScriptで生成した今日の日付が埋め込まれています。
別な日に実行すれば、もちろん、その日の日付が埋め込まれます。
これは、単純な定形メール作成アプリではできないことです。
ただ、クリップボード経由での登録は、クリップボードの頭100文字までなので、長い文章はおしりが切られてしまいます。
何も、登録単語をJavaScriptの中で参照しなければならない理由はないので、登録単語を参照せずに生成したテンプレで新規メールを作成する用途で使うのも一つのやり方でしょう。
ただし、登録単語のタップという形でしかJavaScriptは実行できませんので、JavaScriptの中で使う使わないを問わず、登録単語をタップすることにはなるのですが。
どうでしょうか。駆け足でしたが、TextClip Anywhereの持つJavaScript実行機能の可能性をお見せしました。
非常に実用的なアプリケーションですので、興味を持たれた方は入手してみてはいかがでしょうか。
定形文入力-TextClip Anywhere
カテゴリ: ユーティリティ
価格: ¥85
JavaScript実行機能、クリップボードのJavaScriptによる加工方面で使い込もうとすると、住所録を使った単語登録技に起因する100文字制限が邪魔に思えます。
これに特化したモード、ないしは派生アプリケーションの開発を考えてみてはいかがでしょうか?
僕しか使わなそうですけれど。
なお、JavaScriptをTextClip Anywhereの中で書くのは正直つらい。エラーがあった場合に、詳細なエラーメッセージが表示されないし、JavaScriptを書いている途中での試行がやりづらいからです。iOSデバイス上での開発には、ExecScriptがおすすめです。JavaScriptの開発環境です。
以前のエントリで、iOS上のプログラミング環境について大調査するうちに浮かび上がってきたものです。
電卓が苦手なのでiOS用式入力計算機やiOS上で使えるプログラミング言語を大調査 | ひとりぶろぐ |
僕もこれを使っています。
ExecScript (Version 2.0) | ||
カテゴリ: | 仕事効率化 | |
価格: | 無料 | |
デベロッパ名: | Thomas Cherry | |
リリース日: | 2010/05/11 | |
対応デバイス: | 全機種 | |
現Ver.の平均評価: | (無し / 0件の評価) | |
通算の平均評価: | (無し / 0件の評価) | |
Game Center: | 非対応 |