2014年12月31日水曜日

Sublime Text : プラグインスクリプトからデフォルト、ユーザ設定値を取得する


このエントリーをはてなブックマークに追加
view.setting() で Settingクラス(公式APIリファレンス)のインスタンスが取得でき、この Setting に、デフォルト(Preferences -> Settings - Default)やユーザ(Preferences -> Settings - User)の設定値が含まれています。

has("tab_size") や get("tab_size") のように引数を指定すると値が取得できました。


プラグイン作成の練習に作った、現在カーソルがある行の文字数を表示するスクリプト(ダウンロード)で使ってみました(タブを tab_size 分の文字数としてカウントする場合の計算のため)。スクリプト作るのなかなか面白いです。

Sublime Text : 縦線(ルーラ)を表示する


このエントリーをはてなブックマークに追加


Preferences.sublime-settings で
"rulers": [20, 40, 60, 80]
のように、"rulers" をキーとして縦線を表示したい文字数の配列を設定します。

Sublime Text : プラグインでステータスバーにメッセージを表示する


このエントリーをはてなブックマークに追加
参考:Sublime Text 3 公式 API リファレンス

sublime.set_status(message) と view.set_message(key, message) の 2通りの方法があります。

それぞれの特徴は以下のとおりです。
  • sublime.set_status
    • 表示位置はステータスバーの後方(Line N, Column M の後ろ)
    • それまでその位置に表示されていた内容は消える
    • 一定時間後に自動で消える
  • view.set_message
    • 表示位置はステータスバーの前方(Line N, Column M の前)
    • 異なる key(str) を設定すれば複数の内容を表示できる(key でソートされ , で区切られる)
    • 同じ key を設定すると更新
    • 時間が経過しても消えない
処理の結果(ファイルを保存しました、など)を表示する場合は set_status、情報(現在の行の文字数など)を表示する場合は set_message を使うと良さそうです。

Sublime Text : コメントアウトコマンド(Toggle Comment)で挿入される文字列を設定する


このエントリーをはてなブックマークに追加
最終成果物は以下の2つのファイルです。
これらのファイルを Sublime Text の Preferences -> Browse Packages... で開くフォルダに保存すると、Toggle Comment コマンド実行時にテキストファイルでは > が、バッチファイルでは rem が挿入されるようになります。

BatchFileComments.tmPreferences
TextComments.tmPreferences

以下、忘備録を兼ねた解説です。


Sublime Text では Ctrl + / (Toggle Comment) でコメントアウト・アンコメントのトグルができます。

このコマンドでどのような文字列が挿入されるかは、*.tmPreferences というファイルで設定されています。

デフォルトの設定は、SublimeText 3 ではインストール先の Packages ディレクトリ(C:\Program Files\Sublime Text 3\Packages)の *.sublime-package を解凍して開いた中にあります。(ファイル名は Comments.tmPreferences が多いようですが、Python では Miscellaneous.tmPreferences でした。)

テキストファイル(.txt)にはデフォルトの設定がなく、Ctrl + / を押しても何も起こらないようだったので、">" が挿入されるような設定ファイルを作成してみました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>name</key>
 <string>CommentCommandToQuoteInText</string>
 <key>scope</key>
 <string>text</string>
 <key>settings</key>
 <dict>
  <key>shellVariables</key>
  <array>
   <dict>
    <key>name</key>
    <string>TM_COMMENT_START</string>
    <key>value</key>
    <string>&gt; </string>
   </dict>
  </array>
 </dict>
</dict>
</plist>

ポイントになるのは対象となるファイルの種類を設定する scope と、挿入する文字列を設定する TM_COMMENT_START です。name は適当で構いません。このファイルを (適当な名前).tmPreferences というファイル名で、Preferences Browse Package... で開くディレクトリ以下に保存しておくと、テキストファイルで Ctrl + / を実行した場合は行頭に ">" が挿入されるようになります。


他にも、例えばバッチファイルの場合に rem を挿入する、とする場合は scope を source.dosbatch、TM_COMMENT_START を rem にするなどで設定できます。

Sublime Text 3 : プラグインで出力ウィンドウに文字列を出力する


このエントリーをはてなブックマークに追加
基本的に SublimeTextのプラグイン作成方法 が参考になります。

ただし、Sublime Text 3 では 2 と違って begin_edit, end_edit が不要で、edit には run コマンドに渡された edit が使用できます。

また、3 の APIリファレンスでは get_output_panel はなくなっていて、同等の API として create_output_panel がありました。get_output_panel も使用できましたが、create_output_panel を使っておいたほうがよいかもしれません。

TextCommand の run 関数内を想定したコード例は以下のようになります。

window = self.view.window()
output_panel = window.create_output_panel("WindowName")
window.run_command("show_panel", {"panel":"output.WindowName"})

output_panel.insert(edit, output_view.size(), "Hello, Output")


ちなみに print 文はコンソール(Ctrl + ` で開くパネル)に出力されます。 以下のように show_panel で console を指定すればプログラムから開くことができます。
window.run_command("show_panel", {"panel":"console"})
print("Hello, Console")

2014年12月30日火曜日

Sublime Text : view.find_by_classes は int を返す


このエントリーをはてなブックマークに追加
忘備メモ。
API リファレンスによると Region を返すことになっていますが、実際は int を返すようです。

Sublime Text 3 での Packages/Default フォルダの場所


このエントリーをはてなブックマークに追加

そもそもフォルダではなくなっていました。

Sublime Text 2 では Packages/Default、Packages/Python などという形で、インストール時にデフォルトで作成されていた Packages 以下のフォルダが、Sublime Text 3 ではその中身がアーカイブファイルとして固められて (パッケージ名).sublime-package として置かれるようになっています。

つまり(デフォルトのインストール先であれば)

C:\Program Files\Sublime Text 3\Packages

以下にある *.sublime-package という名前のファイルを、 7zip などの解凍ソフトで開くとその中身のファイルを見ることができます。

各種言語のデフォルトのスニペット(*.sublime-snippet)やビルド設定(*.sublime-build)もそれぞれの言語名のパッケージ中に含まれています。

見たところ圧縮しているわけではないようなので、誤って編集されるのを防ぐ、プラグインやユーザが自作した設定との区別をより明確にする、などが目的でしょうか。

参考 : Where are the default packages in Sublime Text 3 on Ubuntu?

2014年12月28日日曜日

Sublime Text : Python 実行時の [Decode error - output not utf-8]


このエントリーをはてなブックマークに追加
以下のページが参考になりました。
Windows の SublimeText3 で整える Python3 開発環境設定 (2014/02/23現在)

使っているものが Python 2系でも、指定するパスを変えるだけで原則は同じです。

Preferences -> Browse Packages... 開くフォルダに Python というフォルダを作り、そのフォルダ以下に Python.sublime-build というファイル名で以下の内容を保存します。
(参考先と比較して、shell_cmd の $file を " で括っている点と、python の path が 2.7系である点が異なります。)

{
    "shell_cmd": "python -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
 
    "windows":
    {
        "encoding": "cp932",   // Windowsコンソールの文字コード指定
        "path": "C:/Python27"  // 自分のPythonへのパスを追記
    }
}

Sublime Text 3 であれば
C:\Users\(ユーザ名)\AppData\Roaming\Sublime Text 3\Packages\Python\Python.sublime-build
のような場所に保存しておけば良いです。

これで Sublime Text 上から Ctrl + B で Python 実行が行えるようになりました。

もう少し詳しく Build について調べる場合は
非公式ドキュメントの Build Systems のページが参考になりそうです。

2014年12月22日月曜日

『虚像の道化師』、『禁断の魔術』 感想とレビュー


このエントリーをはてなブックマークに追加
ガリレオ短編シリーズは息抜きのための読書として最適ですね。
息抜き以上でもそれ以下でもない感じは否めませんが。。。

忘備録として、全話のネタのメモ。感想は特に無いです。


虚像の道化師


幻惑す(まどわす)

宗教とマイクロ波。

心聴る(きこえる)

脳内音声装置。指向性スピーカーと同系統で技術的にそんなのもある、といったところ。

偽装す(よそおう)

ロッキングチェア、銃、心中。特殊な技術のネタではない。

演技る(えんじる)

凶器の入れ替え、犯人を演じる。これも特殊な技術のネタではない。


禁断の魔術


透視す(みとおす)

赤外線。

曲球る(まがる)

スポーツ科学。犯罪自体と技術ネタは無関係。

念波る(おくる)

テレパシー。結果的には、予言は数を撃てば当たる系。

猛射つ(うつ)

レールガン。

2014年12月20日土曜日

Android : Material Design の color の xml


このエントリーをはてなブックマークに追加
colors.xml として ここ で公開して作成してださっている方がいました。
右下の Download Gist ボタンでダウンロードして、colors.xml を引っ張ってきて res/values にコピーして使用します。

他の参考情報として、
色のリスト(パレット)は Material Design -> Style -> Color
色を AppTheme にどのように指定するか、指定した色がどこで使われるかは Using the Material Theme をそれぞれ参照です。

『賭けの考え方』 と感想とレビュー


このエントリーをはてなブックマークに追加


オススメという話を聞いて『賭けの考え方』という本を読んでみました。

「どんなに技術を高めても、結果の多くが運に支配されるゲーム」という事がイメージしやすいポーカーが題材であることで、

  • 長期的な視野で考え、時に短期的なリスクは受け入れる
  • 結果よりも正しい判断ができたかを優先する
  • 合理的な決断のために自尊心、感情は排除する
  • 分析・改善を継続し学び続ける
  • 達成し得る、正しい目標を設定する
    • 結果を達成できるかどうかをコントロールする力は限られている
という、そのまま普通の社会人人生にも当てはめられることを納得しやすい形で学べる本でした。

一般論として重要な事の多くが 2章、3章、10章の後半にまとまっているので、その辺りを繰り返し読み返すと良さそうです。

ポーカーの専門用語が説明なしにバンバン出てきて、調べながら読み進める必要がありましたが、それはそれで新しい言葉を知ることができてなかなか面白かったです(使う機会はないでしょうが)。

そろそろ2014年も終わるので、この本で学んだ事を参考にしながら 2015年の目標でも考えようと思います。

2014年12月19日金曜日

『虚構推理 鋼人七瀬』 感想とレビュー


このエントリーをはてなブックマークに追加


虚構推理 鋼人七瀬を読みました。著者は、『絶園のテンペスト』(感想記事)や『スパイラル』といった漫画の原作、小説『名探偵に薔薇を』(感想記事。オススメ作品です。)の著者の城平京です。

妖怪と話す能力を持った隻眼隻脚の女性(男性の現彼女)、死んだ時にある一定の未来を選択できる不死身の男性、普通の警察官の女性(男性の元彼女)、という登場人物を軸に、鋼人七瀬という妖怪を消滅されるために「大衆に受け入れられる嘘の推理を生み出す」物語が語られます。

うーん。。。全体的な語り口調、テーマは面白いのですが、どことなく消化不良感があります。

「人は信じたいものを信じる」、「証拠よりも物語性」などをキーワードに大衆に対して推理を展開していくのですが、読者視点で見ると「大衆はこれを受け入れるのか?」と冷めた視点で観察できてしまう事、大衆を導くことを可能にする不死身の男性の能力(死んで復活する際に、直近の、可能性のある未来を決定できるので、ある程度説得力があり、大衆が受け入れる可能性がありそうな推理を展開できれば良いという条件になっている)の効果範囲が曖昧である事あたりが原因かもしれません。

推理に推理を重ねて伏線とする等の工夫はあって、ただのご都合主義ではないのですが、一つの真実をスパッっと提示するような物語の方がスッキリして好みではあります。

今回この本は図書館で借りて読むことができたのですが、借りて読めるなら読んでみると良いかも、くらいのオススメ感です。

2014年12月14日日曜日

超幻想郷級のダンガンロンパ 感想と考察 Part 17


このエントリーをはてなブックマークに追加
前回 : Part 16 の考察

(長くなりそうなので、少しずつやっていこうと思います)
2014/12/14 : とりあえず視聴完了したので犯行の時系列とマミゾウの能力への疑問について記載
2014/12/22 : 気になるキーワードについて見出しを追加
2014/12/25 : ルールカードのすり替えの可能性について少し記載

いよいよ始まりました裁判パート。クオリティ高い!スクリプトの有無を選べたり、ボイスの有無を(音声出力バランス調整で)選べたりするのも凄いですね。

最後には公式に犯人当てクイズもあったので、当てに行きたいものです。とりあえず Part 17 で明らかになったこと中心に情報をまとめていこうと思います。


犯行の時系列


マミゾウの行動が明らかになったのでだいぶ整理されました。
ルーミアの証言射命丸文のビデオ と Part 15 の後半 辺りを参考にしつつまとめると、霍青娥の部屋での出来事は

  1. マミゾウが模擬刀を持ってシャワー室で待機。この時マミゾウは左手に手袋をしている。また、マスターキーを所持。
  2. [0:55] 文が部屋に入る。部屋に鍵をかけ(実際は鍵は壊れていて施錠不可)部屋を捜索
  3. [0:59] ルーミアが部屋の前で「人が殺されている」と呼びかける
  4. [0:59] 文はカメラを取り出し録画開始
  5. [1:00:00] ルーミアが暗闇能力を発動
  6. [1:00:20くらい] ルーミアが暗視ゴーグルを装備し部屋の中へ。ほぼ同時に、マミゾウが『この部屋には誰も居ない』という条件で能力発動。
  7. [~1:03] ルーミアが忍び足で部屋の中を移動し、シャワー室のドアを開く。マミゾウがルーミアを殴打。模擬刀と手袋とマスターキーを現場に残し退室。
  8. [1:03] 暗闇解除。
  9. [1:04] 文がシャワー室のドアを開けるが、誰もいないと認識。カメラにも誰も写っていない。ここでカメラのバッテリーが切れる。
  10. 犯人が凶器で文を殺害
  11. ルーミアが気がつくと文は死んでいた。偽物のダイイングメッセージを残しルーミアは部屋に戻る
Part 15, 16 の考察辺りで散々悩んだ足音と気配については「ルーミアの忍び足」+「誰もいないという幻惑」で解明。

ルーミアの所持品(ナイフとゴーグル)とマミゾウの所持品(マスターキーと模擬刀)も明らかになりました。

ここでまず気になっているのは『超高校級の幻惑者』の能力です。Part 15 の後半の映像から、ルーミアが部屋の扉を開けたのは 1時0分20秒くらいと分かるので、マミゾウの能力の発動もほぼ同時の1時0分20秒くらいのはずです。で、その後いろいろあった後、文がシャワー室のドアを開けたのは 1時4分台となっています。『超高校級の幻惑者』の能力には「時間制限は3分まで」、「一度能力を発動すると、一時間は能力を使用できない」とありますが、1時0分20秒くらいに『この部屋には誰も居ない』という条件で能力を発動していたら、その幻惑者の効果は1時3分台には切れてしまい、1時4分台に文がルーミアを見つけられないのはおかしいのでは?と思うのですが、どうなんでしょう?

この矛盾の解決方法としてはパッと思いつくのは
  • ルーミアが死角にいて運良く(悪く?)文が見つけられなかっただけ
    • マミゾウのショーダウン後の議論 で「ルーミアがシャワー室にいるのは間違いない」とされているのでこれはなさそうですが…
    • ついでに言えば、カメラのバッテリーはシャワー室の扉を開けてから切れているので、このパターンを否定しておけば幻惑はカメラにも有効と言えそうですね
  • 「時間制限は3分」という解釈の問題
    • 3分59秒大丈夫とか(ぇ
    • もしくはその他、能力の解釈を勘違いしている可能性はあります
  • マミゾウは絶望であり、2度目の幻惑能力を使用した
の3パターンです。

マミゾウが絶望で、例えば「文を霍青娥に見せる幻惑」などで誰かを殺人に唆したとすると結構いろいろスッキリしそうなんですが…そのようなややこしいことをする動機は見当たりません。能力制限がなければ無双できる能力ですからね。

メタな話をするとマミゾウが絶望というのは能力として強力すぎる感があり、一章でマミゾウが絶望だと明らかになってしまうと今後の展開どうなるの?という疑問も湧くので、何か単純な事実を見落としているか勘違いしている気がしています。何か気がついたら更新します。

追記:咲夜が時間停止して回収、という手も有りましたね。もっともこれも動機が全く不明になりますが。。。


The 1st Murderer's Monologue


Part 14 の考察でちょっと考えていましたが、それ以後はまともに考えていませんでした。
メタ情報(視聴者は知っているが、霊夢などの推理メンバーは知り得ない情報)ではありますが、犯人を当てに行くのであれば重要な手がかりとなりそうです。

ポイントは、この絶望のルールカードを持っていたモノローグの話者が、絶望本人なのか、本人でないならルールカードをすり替えたのは誰で、いつ、どうやったか、ですね。

なんとなく、ルールカードをすり替えたのが黒幕、すり替えられたルールカードを見た(このモノローグの話者)が実行犯、という図式が浮かびますが、未検討です。

■ 絶望のルールカードをすり替えられるのは誰か


本命は、時間停止中に自由に活動できる咲夜、幻惑で咲夜とほぼ同条件のマミゾウ、認識されない古明地こいし、そして『超高校級の泥棒』である魔理沙

部屋に侵入し放題の霍青娥も候補ではありますが、自分が絶望だと知られてしまうルールカードを手放す事はないでしょうから上に挙げた本命ほど高い可能性はないと思います。

…と、ここまで考えると、そもそも見られたら絶望だとわかってしまうルールカードを、これほど多くのプレイヤーが奪取できうる、という状況はゲームが破綻してしまうような気もしますね。絶望の告知方法が不明だったとはいえ、危険性が高すぎます。となると

  • 絶望のルールを見るには何らかの条件がある
  • 絶望は個人に固定されない
    • 日替わりで絶望が選ばれ、選ばれたプレイヤーのルールカードに絶望のルールが配信される
    • 絶望のルールカード自体は変わらず、それを所有しているプレイヤーが絶望となる
  • あの絶望のルールカードはフェイクである

のような可能性も考慮したほうがよいのかなぁ。。。
ルールカードの起動について、本人しか起動できないかもしれない(不確定)、という話もあったのでその辺りと絡んでくるかもしれません。


手形


唯一の「残った証拠」でしょうか。まだなにも考えていないです。


ミサンガ


ミサンガのことは Part 16 時点での犯人当て考察(下の方)で少しだけ考えていました。

今回の裁判の引き際での、さとりの「証拠がないから犯人がわからない、という発想を逆転させる」という言葉が、「誰なら証拠を残さず犯行を実行できるか考える」という意味であれば、ミサンガを残していない、という点がキーポイントになるんでしょうか。


破壊されていないカメラ


射命丸文のカメラが壊されていなかった理由も、何かしら説明がついた方が良さそうです。
Part 16 の証拠品一覧にも残っている証拠品の一つです。


二日目夜の行動表


麻雀の点数表とかです。

文の手帳と一緒に消滅して、Part 16 の証拠品一覧からは消えているものの、気になることではあります。これもメタ情報ですが、推理の裏付けとしては使えるのかもしれません。

『夜の国のクーパー』 感想とレビュー


このエントリーをはてなブックマークに追加


夜の国のクーパー読了。『ガソリン生活』は車が語り手でしたが、こちらは主な語り手が猫。御伽話風という点で『オーデュボンの祈り』に近い印象を受けました。軽妙な台詞回しは控えめで、真面目な小説という感じです。

キーワードは「帰る」、「方針の変換」、「戦争」、「話し合い」、「上の立場と下の立場(猫と鼠、国と国)」、「やりたくないことは他人にさせる」など。

どちらかと言えばもう少し明るい雰囲気の小説の方が好きですが、これはこれで面白く読めました。猫達の動作の描写も臨場感(?)とかわいげがあって楽しかったです。

2014年12月11日木曜日

『ガソリン生活』 感想とレビュー


このエントリーをはてなブックマークに追加


ガソリン生活』読了。メインの語り手が車という異色な作品でしたが、荒唐無稽でほんわかした感じが良いですね。系統としては『陽気なギャング』シリーズを近い雰囲気を感じました。単純だけど人のよい兄、年不相応に頭の立つ弟、一家を支える母親、隣に住む校長先生など登場人物、家族が乗る緑のデミオ、校長先生のカローラなどの車といった、主要なキャラクターに裏がなく気楽に読めて好きです。

2014年12月6日土曜日

Android : Gradle DSL method not found 'zipAlign()' もしくは 'runProguard()'


このエントリーをはてなブックマークに追加
Android Studio をアップデートすると度々はまる Gradle 系のエラー。
Android Toos Project Site の更新履歴によると、
zipAlign は zipAlignEnabled、runProguard は minifyEnabled にプロパティ名が変わったようです。
build.gradle で zipAlign true と書いていた部分を
zipAlignEnabled true に書き換えると回復し、ビルドできるようになりました。

2014年12月2日火曜日

Android : アプリで認証したアクセス権の取り消し


このエントリーをはてなブックマークに追加
Google Developers Console で作成した認証した API を使ったアプリのデバッグ中、再度認証画面を表示したいなどでアクセス権を取り消すにはGoogle のアカウント権限のページを開き、アプリ名を選択して「アクセス権を取り消す」を押すと認証が解除され、アプリ起動時に再び認証画面が出るようになります(アプリを一度アンインストールする必要有り)。