豆腐メンタルは崩れない

小説家ワナビ視点で、主に執筆環境について書きます。

ツイ4というか『トモちゃんは女の子!』の更新チェックをする

Queryfeed | Read Twitter, Google Plus and Facebook on RSS を使います。

Queryfeedは、Twitter等の検索結果からRSSフィードを生成できるサービスです。検索条件としては、フリーワードの他、特定のアカウントからの投稿や、特定のアカウントへのリプライも利用できます。

この場合、「"twi_yon"アカウントから投稿された」「"トモちゃんは女の子!"という文字列を含む」ツイートを検索できればよいと言えます。

よって、「Search Twitter」フィールドにfrom:twi_yon トモちゃんは女の子と入力します。エクスクラメーションがうっかり半角になってたりしたら嫌なので、それは除きました。

結果、生成されるRSSフィードのURLが以下のものです。

これをフィードリーダーに登録すれば、更新チェックができます。

まあ、毎日更新なので、毎日見ればいいんですけどね。


ところで、知己にはバレバレでしょうが、私は群堂派です。

グランブルーファンタジーのバレンタインイベント攻略でiPhoneのウィジェットにメモする

超久しぶりです。

最近のPくうしさまとしての活動において、4人全員からチョコもらうのに役立ったことについて。

バレンタインイベントの特徴

今回のイベントは10回を超える連戦になります。ターン数が伸びるため、累積BUFF系のスキルが有効です。主人公のスキルでいうと、ハーミットのフォーカスが該当します。

本イベントでは複数登場する弱敵と単体で登場する強敵の戦力差が著しいため、ボス級の敵に合わせてフォーカスを解放する戦術が成立します。関係ないですがイカちゃんことシーエンプレス可愛いです。攻撃は可愛くないです。

ただし、フォーカスは10回目を重ねると効果がリセットされてしまいます。(しかも、現在の累積数は確認できない!)20連戦とかになると戦闘時間も数十分におよび、いちいち累積数を数えるのもホネです。モバイルでプレイしていると紙のメモを取るのも難しいですし、いちいちアプリを切り替えてメモするなどはもってのほか。

また、ミミックを倒した際に取得できる能力アップボーナスも、同種のボーナスは累積しません。(同種レベル違いの場合にどちらが優先されるかは未検証。)こちらは戦闘中には確認できますが、ボーナス取得はインターミッションで行うため、やはりメモを取っておきたい。

さてどうしたものか。

通知センターウィジェットでメモを取る

iOS8で追加された通知センターウィジェットを使えば、アプリを切り替えることなくメモを取ることができます。

クイックメモは日本語対応なのが嬉しいですが、ウィジェットから追加・削除はできても編集できないのはうれしくないです。この用途ではNeatoのほうが使いやすいでしょう。


ver. 1.0 - ¥300( ビジネス )
Mohammad Khoman

スクリーンショット

補遺:自重しない年増すき

スクリーンショット

スクリーンショット

スクリーンショット

入力した文章をツイートするだけのAppleScript

目的

  • Macで、ツイートするためにいちいちアプリを呼び出すのが面倒くさい
  • AppleScriptでなんとかしたい
  • ついでにAppleScriptの勉強

前提:Twitter Scripter

AppleScriptを作成

display dialog "ツイートする文章を入力" default answer "なう"
set TweetText to text returned of the result

tell application "Twitter Scripter"
    tweet TweetText using account "catfist"
end tell

使用方法

  1. AppleScriptエディタを起動し、「AppleScript エディタ > 環境設定」から「メニューバーにスクリプトメニューを表示」にチェック
  2. 新規スクリプトを作成し、上記スクリプトをコピペ
  3. 「~Library/Scripts/Applications」に保存
  4. スクリプトメニューから実行

補足

  • 文字入力ダイアログがポップアップし、入力した内容をそのままツイートする
  • 文字数カウントとかしてないのでオーバーするとエラー出るかも
  • 本当はエラーチェックとかもさせたい

Alfredから呼び出したいのでアプリケーション化

  1. AppleScriptエディタで「ファイル > 書き出す」
  2. ファイルフォーマットでアプリケーションを選択
  3. 適当な名前付けてアプリケーションフォルダに保存
  4. Alfredから検索して実行

PhraseExpress と日本語入力の干渉を解決する

後で気付いたけどスーパー車輪の再発明でしたー→[PhraseExpress]英数字が全角未確定状態になる問題への対処方法 - 流れるような一日を(旧)

PhraseExpress とは

このように、MacでいうTextExpanderのような定型文入力支援アプリケーションであると、公式サイトのtitleで堂々と謳い上げています。しかし、これはかなり語弊のある表現で、どちらかといえば、汎アプリケーション的なマクロ実行プログラムであるとするのが正確でしょう。

というのは、PhraseExpressには以下のような特徴があるためです。

  • キー操作、外部アプリケーション実行、スクリプトなどを登録できる。
  • Phrase(定型文)ごとにショートカットキーを設定できる。
  • Phraseごとにどのアプリケーションで実行するかを設定できる。

ここまで来ると、もはや文章入力支援という表現では足りず、あらゆるアプリケーションをコントロールできるマクロプログラムと考えるべきでしょう。どちらかと言えば、TextExpanderよりもAutoHotKeyに近いといえます。

日本語入力との干渉

当初はTextExpanderそのままの感じで使おうとしたのですが、PhraseExpressでは、Google日本語入力などが「IMEオン」の状態でPhraseを展開すると、「変換前のテキスト」として出力されます。つまり、エンターキーで確定する必要があります。

TextExpanderの場合、「TEIMPrefsetter」で日本語入力時にも実行されるよう設定すれば、確定済みのテキストが直接展開されます。辞書登録と比較した場合のTextExpanderの基本的な優位点は、「候補の中から選ぶ必要がない」ことと、「確定の手間が省ける」ことだといえますが、PhraseExpressではその半分が失われているわけです。

IMEオフ」の状態で展開すれば当然問題ないわけですが、いちいち切り替えるのは業腹です。しかし、PhraseExpressでは、Phraseにキー操作を含むことができるので、IMEのオンオフ切り替えを自動的に実行すればよいのではないかと考えました。

Google日本語入力の場合の設定

Google日本語入力のキー設定

PhraseExpressで実行できるキー操作は、「Modifier」+「"Function key" or "Char"」+「Count」です。

  • Modifier: Ctrl/Alt/Shift/Win の組み合わせ
  • Function key: F1~16/Enter/Tab/Esc/Del/Backspase/矢印キーなど
  • Char: A~Z、0~9のいずれか(必ずModifierと組み合わせる)
  • Count: 回数を指定

ここで、「Function key」には、日本語JISキーボード特有の「半角/全角」などは含まれないため、それを考慮した上でGoogle日本語入力のキー設定を行う必要があります。

例えば、「プロパティ>一般>(キー設定)>キー設定の選択」で、以下のように設定します。

モード 入力キー コマンド
入力文字なし Ctrl Shift F12 IMEを無効化
直接入力 Ctrl Shift F11 IMEを有効化

PhraseExpressへのPhrase登録

以下のようなPhraseを登録します。

{#CTRL {#SHIFT {#F12}}}PhraseExpress{#CTRL {#SHIFT {#F11}}}

キー操作部分は、「Phrase content」フィールドで「右クリック>Macro>Simulate entering a special key>more…」などで入力できます。上記のソースをペーストしても大丈夫です。

IMEオンの状態で、上記のPhraseに対するAutotext(省略形)またはHotkeyを入力すると、

IMEオフ」→「文字列入力」→「IMEオン」

の順で実行され、結果として、確定済みのテキストが入力された状態でIMEがオンに戻ります。

補足

TextExpanderでも同様ですが、Autotextが例えば「pe」のようなローマ字変換される組み合わせの場合、文字数が減るため、Autotext以外の文字まで削除されてしまいます。IMEがオフになるのはAutotextが展開された後であるため、この現象は今回のテクニックで防ぐことができません。Autotextは基本的に子音+記号で構成すべきです。

また、テンプレートとなるPhraseを用意しておくと、Phraseの登録を省力化することができます。例えば、 {#CTRL {#SHIFT {#F12}}}{#CTRL {#SHIFT {#F11}}} のようなPhraseを用意しておき、これにはAutotextもHotkeyも設定しないようにします。あとは、このPhraseをDuplicate(右クリックメニューから選択/Ctrl+D)して、複製されたPhraseを編集すると楽です。

TextExpanderのAppleScript実行機能でメニューバー項目を実行

https://itunes.apple.com/jp/app/textexpander-for-mac/id405274824?mt=12&uo=4&at=10l8JW&ct=hatenablog

実は値引きのとき買ってたTextExpander。

nvALTで他のアプリに渡すのがけっこうめどい

nvALTは編集中のノートを他のエディタアプリに渡す機能があるのですが、ショートカットキーはデフォルトのアプリにしか割り振られていません。

一応「システム環境設定>キーボード>ショートカット」で他のアプリにも割り振りできるのですが(「アプリケーション>nvALT>Byword.app」とかで)、あんまり増やすのもいかがなものか。

でも、よく考えたらAppleScriptでできるし、ということはTextExpanderでもできるのでやってみました。

TextExpanderのスニペット

tell application "nvALT" to activate
tell application "System Events"
    tell process "nvALT"
        click menu item "Byword.app" of menu 1 of menu item "Edit With" of menu 1 of menu bar item "Note" of menu bar 1
    end tell
end tell

Contentでアップルスクリプトを選択します。

これで、ノートにAbbreviationを入力すれば、AppleScriptが実行されて他のアプリに渡してくれます。テキスト入力フィールドのあるアプリでないと実用に足りないと思われますが、やたらとショートカットキーを増やすより楽です。

ここで、TextExpanderにおいて、スニペットインクリメンタルサーチが可能であることが意味を持ってきます。事前に登録する手間はありますが、間接的にメニューバー項目のインクリメンタルサーチが可能になるというわけです。

メニューバー項目をインクリメンタルサーチして実行するアプリが見つからなかったともいう。

SafariのMakeLink拡張をAppleScriptで置換してみた

(2014-07-14一部修正)

きっかけ

参考

概要

実行

  • スクリプトメニューから実行
    • Safariがアクティブでなくても実行可能
    • スクリプトファイルを「~/Library/Services/Safari/」に置いておくとSafariアクティブ時のみ表示できる
  • BetterTouchToolから実行できるが、その場合は「~/Library/Services/」に置いておかないと動かない
  • アプリケーションとして書き出すとAlfredとかからも実行可能

コード

tell application "Safari" --または"Shiira"
    try
        set theUrl to (URL of document 1)
        set theTitle to (name of document 1)
    on error
        beep 2
        return
    end try
end tell

set theInfo to "[" & theTitle & "](" & theUrl & ")"
set the clipboard to theInfo

最後にペーストする場合は末尾に以下を追加。ただしすごい遅い。

-- ⌘Vを押す
delay 0
set timeoutSeconds to 2.0
set uiScript to "keystroke \"v\" using command down"
my doWithTimeout(uiScript, timeoutSeconds)

on doWithTimeout(uiScript, timeoutSeconds)
    set endDate to (current date) + timeoutSeconds
    repeat
        try
            run script "tell application \"System Events\"
" & uiScript & "
end tell"
            exit repeat
        on error errorMessage
            if ((current date) > endDate) then
                error "Can not " & uiScript
            end if
        end try
    end repeat
end doWithTimeout

Safariアクティブ時のみ実行する場合は以下のコード。スクリプトファイルは、スクリプトフォルダ内のSafariフォルダに保存する。

try
set theUrl to (URL of document 1)
set theTitle to (name of document 1)
on error
beep 2
return
end try

set theInfo to "[" & theTitle & "]()(" & theUrl & ")"
set the clipboard to theInfo