あざらしとペンギンの問題

主に漫画、数値計算、幾何計算、TCS、一鰭旅、水族館、鰭脚類のことを書きます。

今年ももう49日が過ぎた

今更ですが、今年初投稿です。アニメ『スロウスタート』もいつの間にか折り返していました。遅刻癖は昔からです。49は『あんハピ♪』に出てくるあの数字です。

次の絵は深夜の一挙放送の前に3時間ほどもかかって描いたものです。林檎憎ければ iPad を割ろうと常々言っていましたが、近頃は削る方向にシフトしました。指紋も一緒に削られそうです。


【あんハピ♪】「はなことはな」イラスト/あざペン [pixiv]

まぁ、林檎以上に憎くなってしまった青い鳥がいるので、はんぶんこしよう、焼き鳥にしようなどと言うようになりました。最近は通知に不具合が出たりと青い鳥はやりたい放題です。野放しにすべきでありません。そういえば User Stream などの API が廃止されるようですね。自分で使うために書いているライブラリをいち早く対応させようと思います。(1日、2日でできるものにどれだけ時間をかけているんだ)

今年あったことを書くと、まず年明けからお遍路に行きました。以前に四国一周したときにいくつかの寺に言ったことはあるのですが、今度は本気で修行に臨むため、全身の毛を剃り、白衣に身を包んで防寒着もなしに四国の南西端へと赴きました。日中はそうでもなかったのですが、夜はひたすら寒かったです。ネットカフェがないところではファミレスに入って夜を明かしたりもしました。食事付きで1000円は価格破壊です。もっとも、仮眠を取ることができないという問題はありますが。

とにかく東京から離れたかったので、到達時間の意味で非常に遠い四国南西端をスタート地点としました。

そんなわけで、今年の初詣は40番・観自在寺となりました。伊予霊場の多くが松山以北にあり、少数が宇和島付近にある中で、ひとつだけ離れて愛媛県の最南端に位置するのが観自在寺です。ここから巡拝を始める人など滅多にいないと思いますが、般若心経が「観自在菩薩〜」から始まることから言えば、最初にふさわしい霊場のひとつだと思います。

元々は75番・善光寺を最初にする予定でしたが、初詣で大賑わいでとても納経できるような状況でなかったので、道具だけ買って後にし、列車に乗って南を目指しました。

四国ではいろいろ体験しましたが、話はここまで。

話は変わりますが、巡拝中から大腿部に痛みを感じていて、四国を出た頃には服に膿が染み出してきているように見えたので、下を脱いでみると、見るも無残に多数の出来物ができていました。それはゾンビか何かのような有様で、この数年でなかったほどにぞっとしました。巡拝の途中から服と擦れる痛みがあり、腫れがあることを確認していましたが、それが悪化して毛包炎(毛嚢炎、いわゆる「おでき」。主に黄色ブドウ球菌の感染による皮膚疾患)となっていたのです。

原因は毛を剃ったときについた傷、長距離を歩き続けたことによる服との摩擦、汗による不衛生、また、寒い中を防寒着なしに歩き続けたこと、および、アトピー性皮膚炎のために使用していたステロイド外用薬による免疫力の低下が相乗したものだったと思います。毛包炎は数個程度ならよくある疾患であり、抗生物質外用薬で十分なのですが、何しろ数が多かったので、ミノサイクリンの丸薬を飲むことになりました。炎症自体はその後数日で治りました。しかし、皮膚がめくれたりして目を背けたくなるような状態はしばらく続き、この文を書いている現時点でも跡が残っています。それを修行の証とするには悪くないかもしれませんが、不摂生が原因とあっては単に残念な傷跡です。

四国巡拝は満願成就して高野山に上るまで続けるつもりです。

1月はそれ以上のこともなく、2月を迎え、最初にあったイベントは2月4日、『天使の3P!』のアニメを締めくくる大イベントである『SPECIAL LIVE 〜ファンとのくさび〜』でした。

一言で言えば、アニメのイベントという概念に楔を打って壊すほど、凄まじいものでした。これはとても語り尽くせるものではないので、また今度。

次に控えていたのが翌週の2月11日に大阪で開催された『よんこま小町』でした。私はこれを年1回の本命と見なして準備をしていましたが、結果は、現地に行くことすら叶いませんでした。制作の遅れから新幹線以外で間に合う手段が無くなった状況で、1月のお遍路のために金を使い込んだことが影響して、新幹線の切符を取る金がないという最悪の結末を迎え、直前に参加中止の報告をせざるを得ませんでした。他で発表する機会のないほど特殊なネタだったので、本当に無念です。

などと書いているうちに、49日どころか50日経ってしまいました。

最後にヒバリちゃんからプレゼントがあるようです。


【あんハピ♪】「ヒバリ 2/14」イラスト/あざペン [pixiv]

プロフィールを更新しました。

https://azapen6.github.io

以下の私が管理しているコンテンツもよろしくお願いします。

あんハピ♪ ワンドロ ギャラリー
天之御船学園 放送部♪ (@anhpms) | Twitter
めげない!のけもの☆CLUB bot (@harunamao_bot) | Twitter

それでは、良いお年を(遅い)。

Leave Forever

少し前の話ですが、週末パスを使って旅をしていた途中でノート PC 用の AC アダプタを無くしました。

新潟県柏崎市にあるネットカフェ*1で運良くファミリー個室*2が取れたので、天気には恵まれなかったけどこれはラッキーと思った矢先、充電のために荷物を取り出したところで、AC アダプタがないことに気づきました。既に PC の電力は尽きていて、後に述べる重大な問題が発生することになりました。おそらく前日宿泊したネットカフェに忘れてきた(移動中は出す理由が全くないので他に考えられなかった)ものと考え、電話で確認したところ、忘れ物の中にそのようなものは無かったと言われ、途方に暮れるしかありませんでした。

忘れ物が多い

子供の頃からずっとそうでした。私はとにかく集団行動ができない性質で、よく遅刻したり迷子になったりしましたが、それだけでも目をつけらるに値するのに、何かとよく忘れ物をすることがありました。授業のプリントを無くすのはいつものことで、旅先で物を無くすことも多く、結構前に旅先でモバイルルータを無くしたときはやはり途方に暮れました。(幸い忘れ物保管所に届いていました。)私は日常生活に差し支えない程度の近視(視力 0.1 程度)であり、眼鏡を携帯していたのですが、それも無くして今は少し困っています。財布を無くしたらと思うとゾッとします。

私は Android のスマフォに加えて iPad を持っているので問題ないかと言えばそんなことはありません。PC がないとプログラミングや bot の操作などができないのです。SSH と Git などの開発ツールが使えなければどうしようもありません。ネットカフェにそれらを入れるなどはとても考えられないため、詰みました。

不運にも忘れたその日・11月19日は『あんハピ♪』の登場人物の『狭山椿』の誕生日(ハッピーバースデイなのに不運とは、私は『はなこ』でしょうか?)であったことが、事態をより面倒にしました。私はその日のために前日に bot に特別なコードを仕込んでいたのです。そしてそれを消さないと毎日が椿の誕生日になるという最高にハッピーなことになる、という事態に陥りました。もうハッピーなのかアンハッピーなのかわかりません。

bot のプログラムはリモートサーバーの Linux 上で動いているため、それを止めるには ssh で入って操作する必要がありました。PC が冬眠している以上、当然無理なわけです。仕方なく @anhpms のアプリケーション連携から bot を外すことで対処しました。まぁ、これができただけでも悪くなかったのですが。

さらに不運なことに、旅先から帰る先は PC がない田舎の家でした。そこで1週間ほど過ごす予定になっていたため、サポートに問い合わせて AC アダプタの替えを購入することもできないということになりました。私のノート PC はカスタム品なので、専用の AC アダプタ以外は使えません。万事休す。

というわけで、2週間ほど PC での作業が何もできませんでした。本当は東京の家に戻ったときに、共用 PC で入って操作することもできたのですが、Windows ではあまりにもやる気が起こらなかったため、AC アダプタが来るのを待ちました。自分用のデスクトップ PC は、マザーボードを共用 PC と交換したときに、取り付けをサボっていたため使えませんでした。部屋に物が散乱していて筐体の置き場所がないことも取り付けをサボる原因ではありました。掃除しろ。

現在はこのように復帰していますが、AC アダプタを無くすことがいかに面倒かを思い知っていい勉強になりました。結局替えを購入するのに5千円かかりました。私にとっては小さくない出費です。

今の PC が使えなくなった場合の保険として、次のことを行いました。

  • 開発環境を入れた Docker イメージを作って Docker Hub に上げる
  • 上でデータを取れるように全部 Dropbox や Bit Bucket に上げる

これで一応、たとえ Windows しか使えなくてもなんとかなる、はず。最悪の選択肢ですが。

以上、忘れ物の話でした。この記事の内容も明日には忘れていることでしょう。

*1:自遊空間・新潟柏崎店:駅から近く利便性が高いのと、自遊空間にしては設備が良いのが特長。ブースの壁がガタガタ動くこともなく、面積も典型的な自遊空間の店舗に比べて広い。当日の荒天によって列車が遅れて終電でここまでしか着けなかったため、自動的に宿泊地に決定した。

*2:通常は複数人でないと取れないが、空きが多いときは通常料金で取れることがある。完全な個室でブースとは別格の広さに加え、まさかのこたつ完備。

Rage Against the Twitter

メロスは激怒した。必ず、かの邪智暴虐の Twitter 社を殴らなければならぬと決意した。メロスには経営がわからぬ。(中略)けれども邪悪に対しては、人一倍に敏感であった。

メロス=私は Twitter の以前からの動向に苛立ちを覚えていましたが、最近の改変は目に余るものがあります。今回はその思いを綴ります。ちなみに、Twitter に the はつきません。

少し前に急にビジネスづいたウェブサイトに変わったかと思えば、開発トップからアプリケーション管理のページに飛べなくなったり、ドキュメントの構成が分かりづらくなったり、API リファレンスの文字が薄くて大変読みづらくなったりしていました。

でもって、Twitter 社が開発者向けに力を入れていると思われるのは、金を取って広告を入れる、データを売るといったサービスです。凍結祭りが未だ収まらず、一般ユーザは Twitter 社が金を得るためのデータ生成器と見なされているように思います(営利企業としては当然の姿勢とも言えますが)。あるいは、プレミアムアカウントなどと言って一般向けの課金システムを導入してくることもあり得ると、私はそう思わざるを得ないのが現状です。

ウェブクライアントにおいても、特にモバイルにおいて、放置しておくとタイムラインの更新が反映されないという、少なくとも前の記事を書いた時点ではなかった現象が発生しています。おそらくは文字数の制限が変更されたときからでしょう。これも仕様と言うのでしょうか?ただでさえタイムラインの順序を混乱させたりしているのに、また余計なことをしてくれますね!

ブラウザ上の振る舞いとしては、とにもかくにも重すぎてタイムラインを遡る気になりません。私のノート PC が貧弱な上に ChromiumFirefox がやたらリソースを食うので、ファンが高々しく唸りを上げて、これで暖房ができるのではないかと思うくらいです。(もっとも、これに関してはブラウザが悪い部分もありますが。)

仕方ないのでレート制限が厳しい statuses/home_timeline でババっと取得したりなどしています。公式では User Stream を標準のタイムライン取得 API としていますが、結構接続が切れるのと、そこまでして大量のツイートを見たいわけではないということから、bot 用にしか使っていません。

ところで、Twitter のストリーム API には、ツイートの中から特定のキーワードを含むものだけを取り出す(track)機能があります。しかしこれは日本語ツイートに対してはほぼ意味を為さないと思った方がいいでしょう。なぜなら、track はスペースなどで区切られた単語単位でしかマッチしないためです。英語などの場合はそれで十分と言えるでしょうが、日本語では例えば『あざらし』を含むツイートを検索したいと思っても、「私はあざらしです」というツイートにはマッチしないわけです。部分文字列マッチでええやろ、と思うのですがこれも仕様と言われるのでしょうね。結局そういう場合は app auth で bearer をいくつも取って search/tweets を投げまくるしかありません。

ツイートデータ取得ツールとしての twurl はあまりにも使いづらいため、自分でシェルを作った方がマシという結論に至りました。名前は特に捻りもなく twish がいいでしょう。検索してみたところで特に被ってもいないようですし。欲しい機能としては、次のようなものがあるといいでしょう。

// コマンドプロンプト
some_user>

// アカウントを azapen6 に変更
some_user> switch @azapen6
azapen6>

// azarashi のツイート一覧の取得
> tl @azarashi 3
statuses/user_timeline 899/900
1: 2017-11-15 10:20:30 あざらし
2: 2017-11-15 10:20:43 私はあざらしです
3: 2017-11-15 10:20:54 鰭脚類
=> $1 // データオブジェクトを $1 に格納

// 前の結果の参照
> $
1: 2017-11-15 10:20:30 あざらし
2: 2017-11-15 10:20:43 私はあざらしです
3: 2017-11-15 10:20:54 鰭脚類

// $1 のステータスオブジェクト
> $1:2
2017-11-15 10:20:43 私はあざらしです

// スクリーンネーム補完
> @aza // [tab]
> @azapen6
@azapen6 [auth]

// 任意のフィルタリング
> $1: あざらし
1: 2017-11-15 10:20:30 あざらし
2: 2017-11-15 10:20:43 私はあざらしです

// $1 のユーザオブジェクトを取得
> $u = $1.user
@anhpms
=> $u

// $u のユーザ名を取得
> $u.name
あざペン
=> $2

// ツイートの投稿
> post (˘ω˘っ)Зスヤアザラシ
2017-11-15 23:35:29 (˘ω˘っ)Зスヤアザラシ
=> $3

// $1:2 にリプライ、結果のステータスオブジェクトを $r に格納
> $r = reply $1:2 そうですか
2017-11-15 12:34:56 @azarashi そうですか
=> $r

// $1:2 をリツイート、
> rt $1:2
2017-11-15 22:46:24 私はあざらしです [RT @azarashi]
=> $4

2018-02-17 追記:

現時点でβ版となっている Twitter Account Activity API への移行のため、ストリーム API などの主要な API が今年6月中に廃止される見込みとなっています。これに伴い、私は1から Twitter ライブラリを書くことにしました。3月中には公開できるように頑張ります。

とまぁ、この先こんな感じで、Twitter とは何かある度に闘っていくことになるでしょうね。