みろりHP


緑色さんの多目的ブログ
みろりえいちぴー
ごゆるりとおくつろぎあさーせ。
| カテゴリ:感想文 |
西尾維新『掟上今日子の婚姻届』



今日は閉じこもって、軽い本読もうー思って『掟上今日子の家計簿』『掟上今日子の退職願』そして『掟上の婚姻届』を読んだ。その順番で読んだのだけど、最後のがいっとう楽しめた。だから今回の表題はこれで。サマリと感想を書く。



冤罪体質の隠館厄介くんは、その体質をかわれ素敵なジャーナリスト囲井さんにインタビューを受けることとなった。インタビュー自体はつつがなく終了したが、囲井さんはその場で彼にプロポーズしてきた。は? って感じだが、事情があるようだ。彼女はこれまで付き合った男性が全員破滅しているという、脅威の呪い体質だったのだ。だから次なる恋に踏み切れず迷っていたのだが……厄介くんはあらゆる破滅を経験しつつもそのたびに回避してきた経歴の持ち主だ。であれば彼なら、彼女の呪いを物ともしないのでは? だから、「わたしあなたとしか幸せになれないと思うんです」とのこと。
でも厄介くんにその気はなかった。そこで彼は探偵の掟上今日子さんに依頼した。囲井さんのこれまでの男たちが本当に彼女のせいで破滅したのか? てか破滅自体気のせいなんじゃね? っていうのを詳らかにするつもりだ。呪いが解き明かされた暁には、プロポーズを断るつもりだ。誤解をもとにして発生したプロポーズなんて受けるわけにはいかないから。
掟上探偵は優秀なのであっという間に呪いは否定されたがプロポーズを断った厄介くんに囲井さんはガチギレした。そのガチギレがあまりに不自然だったので、掟上探偵はもっと踏み込んで推理してくれた。明らかになったのは、囲井さんの「呪い体質」は彼女自身の意図的でっち上げだってことだった。「破滅」した男のうち一件だけ、囲井さんが明確に原因になっているものがあったのだ。彼女はそれを忘れるため、多数の男たちを呪いで破滅したことにし、核となる一件をその多数の事例に紛れさせたのだ。
すべては解き明かされ、めでたしとなった。



掟上さんシリーズは全部、彼女を主人公としたロードムービーだ。でも俺はこれがベストで気に入ったぜ。厄介くんが素敵なんだよねー。ギャグ担当である掟上さんへの、台詞地の文問わぬツッコミが小気味良い。これを読んだら他のロードムービーに戻れねーよ。厄介くんだ、厄介くんを出せ。

最後の「僕はぜんぜん、びっくりするくらい気にしませんよ」がお話の締めとして格好よすぎる。今回の事件の内容を踏襲しつつ、囲井さんのこの後のやけっぱち行動を抑止する台詞だが、厄介くんの優しさ、ちょっと抜けてる性格が現れてる。ていうかこのキャラ、俺の大好きな『緑セレクション』に入れる性格じゃねーか。理性的で、人間的に完成してて、優しくて、人間らしい。掟上さんや囲井さんのイマイチっぷりとの対比でそれが際立ってる。ただなあ、お話全体として、彼が何かを能動的にするってことがあんまりないから、本の単位ではセレクトできないかな。


| 緑色 | 感想文 | comments(0) |
| カテゴリ:プログラミング |
Python InputGhost1.0 コピペ作業自動化ツール



みろりHPのファイル置き場 - InputGhost1.0

知り合いが「膨大なテキストを一行ずつコピペする」というスゲーしち面倒な作業をしてんだよ。ペースト先のアプリケーションの仕様で、まとめて全部貼り付けることができないんだ。貼り付ける先がテキストエリアじゃなくて改行不可のテキストボックスだから。だからそいつは、
  • 一行コピーする。
  • 対象アプリ開いてテキストボックスにペーストする。
  • またテキストへ戻って、一行コピーする。
  • 対象アプリ開いて次のテキストボックスにペーストする。
  • 以下ずっと繰り返し。
なんつーことをしてた。ねーよ。と思った。だからその作業の自動化ツールを作ってやったわけさ。



一行ずつコピペしたいテキストをこんなふうに用意しとく。


これ設定ファイル。一番下に、自動化する行動の順番を書く。今回は「改行して、一行コピペして、改行する」ってのをワンループとする。


実行すると、指定したアプリケーションが前面に出てきて、設定した行動を自動で行ってくれる。今回の場合、メモ帳が出てきて、改行コピペ改行が自動で行われる。


今回はユーザを上述の知り合いに限定してるから汎用的なツールではない。その知り合いに必要な入力が「改行、コピペ、『0』を入力」だけだったから、それ以外の行動は登録できない。あと、元テキストから空白を除いたり、空き行は無視するようになってる。だけどプログラムを使って入力を再現できるノウハウが手に入ったから、あとはいくらでも応用が効きそうだぜ。ネトゲのBOTとかもこういうのが元になってたのかな。すくなくとも連打ゲー用のチートツールくらいなら、もう作れそうだ。



ソースは冒頭の公開セットに同梱してあるんで、今回新出だったtipsを書いとく。

対象のアプリケーションを引っ張り出すには?
subprocess.Popen('call notepad.exe', shell=True)
こう。subprocessはビルトインモジュールなので簡単だね。んー、もしメモ帳が複数起動していて、そのうちのひとつだけを対象にしたい場合はこれじゃあダメだよね。複数のウィンドウのうちひとつを選択して引っ張り出さないといけなさそうだが……うん、そのへんは機会があったらトライかな。こないことを祈る。メチャ面倒そうな予感がする。

キー操作の代行
user32 = ctypes.windll.user32
user32.keybd_event(ここにキーコード, 0, 0, 0)
今回の主役。えーとこれはちょっと調べた感じ、「ビルトインモジュールctypesが、windllっていうWindowsのapiを呼び出して、その中のuser32っていうapiを使わせてもらう」って流れみたいだ。キーコードは十進数で表記(参考サイト:仮想キーコード一覧)。

コピペを代行
pyperclip.copy('対象テキスト')
time.sleep(0.1)
user32.keybd_event(cls._KEYCODE_CTRL, 0, 0, 0)
user32.keybd_event(cls._KEYCODE_V, 0, 0, 0)
user32.keybd_event(cls._KEYCODE_CTRL, 0, 0x2, 0)
今回コピペしたいテキストはプログラム側がもってるので、動作としては、「テキストをクリップボードに貼り付けて」「Ctrl+Vを代行させてペーストする」って方式をとってみた。クリップボード操作のpyperclipはビルトインではないからpipでインストールしないとダメ。クリップボード操作の直後の「0.1秒待機」が意外に超重要で、これを挟まないとコピペのとき想定通りの動きをしないことがある。クリップボードへの貼り付けが終わる前にCtrl+Vを押しちゃったりするのが原因かなあ? たぶん。


| 緑色 | プログラミング | comments(0) |
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>
+ みろりHP内検索
+ 閲覧記事
+ 過去記事アーカイブ
+ カテゴリ
+ 年月選択
  • 2017年 08月 (5)
  • 2017年 07月 (8)
  • 2017年 06月 (4)
  • 2017年 05月 (7)
  • 2017年 04月 (8)
  • 2017年 03月 (7)
  • 2017年 02月 (10)
  • 2017年 01月 (6)
  • 2016年 12月 (8)
  • 2016年 11月 (8)
  • 2016年 10月 (5)
  • 2016年 09月 (5)
  • 2016年 08月 (7)
  • 2016年 07月 (9)
  • 2016年 06月 (6)
  • 2016年 05月 (8)
  • 2016年 04月 (10)
  • 2016年 03月 (10)
  • 2016年 02月 (8)
  • 2016年 01月 (9)
  • 2015年 12月 (9)
  • 2015年 11月 (6)
  • 2015年 10月 (5)
  • 2015年 09月 (4)
  • 2015年 08月 (8)
  • 2015年 07月 (5)
  • 2015年 06月 (3)
  • 2015年 05月 (7)
  • 2015年 04月 (8)
  • 2015年 03月 (12)
  • 2015年 02月 (8)
  • 2015年 01月 (4)
  • 2014年 12月 (5)
  • 2014年 11月 (5)
  • 2014年 10月 (7)
  • 2014年 09月 (4)
  • 2014年 08月 (7)
  • 2014年 07月 (6)
  • 2014年 06月 (4)
  • 2014年 05月 (12)
  • 2014年 04月 (9)
  • 2014年 03月 (6)
  • 2014年 02月 (6)
  • 2014年 01月 (8)
  • 2013年 12月 (7)
  • 2013年 11月 (10)
  • 2013年 10月 (10)
  • 2013年 09月 (9)
  • 2013年 08月 (11)
  • 2013年 07月 (10)
  • 2013年 06月 (9)
  • 2013年 05月 (15)
  • 2013年 04月 (11)
  • 2013年 03月 (5)
  • 2013年 02月 (7)
  • 2013年 01月 (6)
  • 2012年 12月 (9)
  • 2012年 11月 (10)
  • 2012年 10月 (10)
  • 2012年 09月 (4)
  • 2012年 08月 (2)
  • 2012年 07月 (7)
  • 2012年 06月 (13)
  • 2012年 05月 (13)
  • 2012年 04月 (15)
  • 2012年 03月 (4)
  • 2012年 02月 (12)
  • 2012年 01月 (9)
  • 2011年 12月 (5)
  • 2011年 11月 (13)
  • 2011年 10月 (2)
  • 2011年 09月 (2)
  • 2011年 08月 (1)
  • 2011年 06月 (1)
  • 2011年 05月 (4)
  • 2011年 04月 (10)
  • 2011年 03月 (8)
  • 2011年 02月 (11)
  • 2011年 01月 (14)
  • 2010年 12月 (14)
  • 2010年 11月 (17)
  • 2010年 10月 (17)
  • 2010年 09月 (19)
  • 2010年 08月 (22)
  • 2010年 07月 (18)
  • 2010年 06月 (16)
  • 2010年 05月 (19)
  • 2010年 04月 (15)
  • 2010年 03月 (22)
  • 2010年 02月 (18)
  • 2010年 01月 (18)
  • 2009年 06月 (2)
  • 2009年 04月 (1)
  • 2007年 12月 (10)
  • 2007年 11月 (7)
  • 2007年 10月 (9)
  • 2007年 09月 (4)
  • 2007年 07月 (5)
  • 2007年 06月 (11)
  • 2007年 05月 (6)
  • 2007年 04月 (4)
  • 2006年 01月 (20)
  • + ブックマーク
    + 最近のコメント
    + アクセスカウンター
    全体(since 2010.02.03.)
    今日… 昨日…