試験期間なのでラズパイでサーバーを建てた

最近は、Amazonの方が安い製品が多いですね。

河原町

ラズパイ3の機運だったので四条河原町のマルツへ。

京都寺町店 | マルツオンライン

実物を目で見てから買いたかったのと、電子工作用の配線がバラ売りされているのを購入したかったのと すぐに手に入れたかったのがあったので自転車で。

ラズパイにも種類が色々あったが、一番安い element14製のものを購入(4400円)。

サーバーとしてずっと刺しておくわけなので 5V/2.5Aの充電器も購入(1790円)。

ついでに近くに業務用スーパーがあったので業務用サイズのカルピスと梅酒を購入。

ついでに近くのじゃんぱらとかで色々眺めました。

百万遍

ラズパイのOSを焼いたりデータを保存するためのマイクロSDを生協で購入(1080円)。

動かない可能性があるとかブログで読んだことがあったので、RPi SD cards - eLinux.org にOKって書いてあるやつを選択。

常稼働するものなのでバックアップをrsyncしておこうと思い、USBを生協で購入(980円)。

ついでにTOEICも購入。

HDMIが刺さるテレビとケーブルは持っていたので省略。

USBキーボードを持ってなかったので部室から拝借。

1000円くらいのスピーカーも購入。

総額 9200円。

自宅へ

SDカードにOS(Raspbian Jessie Lite)をいい感じに焼きました。

Download Raspbian for Raspberry Pi

デスクトップ画面が欲しかったら、Raspbian Jessie with PIXEL なのですが…。

のなさん(@nonamea774)とそすうさん(@_primenumber)からはArchLinuxを勧められましたが、はじめてのラズパイだったので 資料が多いRaspbianにしてしまいました。 今度データが壊れたらArchLinuxにしようと思います(こう書くとデータを壊しに行きますと言われます(怖い界隈だ))。 そすう先生曰く、ラズパイは64bitなのでそれを最大限活かせるのはArchLinuxだそうです。ほえ〜。

はい。

設定

パスワードとかファイルシステムとかユーザー名とか、初期設定のままだと微妙そうなことをいい感じに調べて設定。

USBに定期的にrsyncでバックアップを取る設定をいい感じに調べて導入。

手っ取り早く音を鳴らしたかったので、 AquesTalkPi をapt-get してゆっくりボイスをコマンドラインから確認。

Dasherをnpmして、Amazon DashButton から青汁を無限に架空に注文できるように。

f:id:CHY72:20170131073829p:plain

SSH目覚まし

crontab で 0 0 * * * mpg321 ~/Music/hoge.mp3 を設定し、 0時(UTC)に自動で音楽がスピーカーから流れるように設定。 置く場所を手の届かない場所にすることで、 ラズパイにSSHしてkillしないと止められないようにすることで 強制的に目覚める圧倒的モダンな仕組み。

サーバー作成

nginx をapt-getしてサーバーを建てた。

Wifiルーターのポートフォワーディング設定をして、httpの80番をラズパイに通すようにして外からも見れるように設定。

グローバルIPアドレスは変わりうるので、無料のDDNSをmydnsでいい感じに調べて設定(http://mydns.jp/)。

これで、http://無.0am.jp からhttpがラズパイにつながるように。

#gacha

f:id:CHY72:20170131072459p:plain

KMCのSlackで全てのチャンネルからSSRの出る確率(1%)で発言を、 {Co,Cu,Pa}のSSRのフレーム(kurimotz氏作)を合成して拾うチャンネルを作成。 画像をPythonのPillowを使っていい感じに合成した後、UIDに依存するsha256したURLを作成し、 ラズパイサーバーに保存して投稿することで、外部画像保存サーバーを使わずに完結。

画像保存サーバー

せっかくなので、h5ai を導入し、見た目を圧倒的モダンにして、描いた作品の数々を公開するページを作成。

激エモ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜。

KMC超人ロック

この記事は、 ボドゲ紹介 Advent Calendar 2016 - Adventar の22日目の記事です。 前回の記事は、『HIT Z ROAD』と『ヴィア ネビュラ』について - Boardgame Bonus Trackでした。 この記事では、超人ロックについて書かせてもらいます。

ボードゲーム超人ロック」とは

漫画家 聖悠紀氏 の手がける「超人ロック」という漫画があります。 この漫画は、最強の超能力者「ロック」が主人公として宇宙で起こる事件を 解決したりするSF漫画です。 このボードゲームは、この漫画の16巻くらいまでをベースにして作成されました。 このゲームは少なくとも1980年後半頃までには販売され、 1990年頃には既に絶版になっています。 しかし、京大マイコンクラブでは世代を超えて受け継がれ、 2016年の今でも盛んに遊ばれています。 前述のように30年くらいもの歴史があるゲームですから、 宗派に近いものができていて、僕の知っている限りでは現在 京大マイコンクラブ、京大RPG研、名古屋大学のサークル… などのサークルで受け継がれ、独自の洗練されたルールで遊ばれているようです。 このゲームにもともと登場するキャラクターは25人程度なのですが、 名大ロックでは150人ものキャラクターが登場するらしいです。

以降は原型に最も近いと言われる、僕が所属している京大マイコンクラブルールでの運用について書きます。 京大マイコンクラブのルールは、他のルールとくらべて原盤のルールを最大限尊重しているらしいです。

遊び方

このゲームでは、プレイヤーは3つのチーム「Good」「Evel」「Special」に分かれます。 また、主人公である「超人ロック」が Good として必ず一名が参加することになります。 Good陣営はEvel陣営の基地を破壊することが、Evel陣営は基地を守ってGoodを殲滅することが、 Special陣営はそれぞれ個人個人の勝利条件を満たすことが、このゲームの目的になります。

簡単にゲームの流れを説明すると、最初に「惑星編」と呼ばれるステージをプレイし、 役に立つアイテムを集め、次に「秘密基地編」と呼ばれるステージで 基地をめぐる攻防が行われる、という感じです。

このゲームは所謂正体隠匿系ゲームです。 序盤で正体がバレると大抵の場合不利になるので、 最初は自分の能力を使わなければならない時でも 過小に宣言することが多いです。 後半になるにつれ、徐々に情報が集まっていき、 パーティを組んだり、あるいは裏切りを起こしたりしながら 自分の勝利条件を目指します。

f:id:CHY72:20161226005756j:plain

⬆京大マイコンクラブの超人ロック。経年劣化を抑えるため、 カードを自作しスレーブに入れてプレイしている。

ゲームの雰囲気

このゲームでは個人個人がそれぞれ勝利を目指します。 面白いことに、場合によっては一人以外全員勝利することが起きたり、 逆に一人だけが勝利する所謂「S級勝利」が起きたりします。 各人が自分の勝利を目指し徒党を組んだり裏切りを起こしたりする様は、 とても楽しいものです。

ここでは一度簡易シュミレーションをしてゲームの雰囲気をみてみましょう。 まず、6人全員に自身の隠匿するキャラクターが配られます。 キャラクターは25人程いるのですが、その中からバランスがよくなるように配られます。

今回は。「ロック3」「ヤマキ2」「ナガト」「ライオット」「Sスト」「ジェシカ」 のようです。 ロック3、ヤマキ2はGoodなのでEvelの基地を破壊することが目的で、 ナガト、ライオットはEvelなのでそれを阻止することが目的で、 SストはSpecialであり、「ロックを自分で倒す」ことが目的で、 ジェシカもSpecialで「独身男性とパーティ組んで最後まで生存する」ことが目的です。 まずは正体を隠しながら惑星編でアイテムを集めます。

f:id:CHY72:20161226005948j:plain

⬆惑星編。アイテムカードをそれぞれ頑張って回収していいアイテムを集めるフェイズ。

それぞれ、以下のようなアイテムを入手したようです。

  • ロック3:手下、エネ吸3、クローン
  • ヤマキ2:手下、ニケ、Pスーツ4、ジャマー4、ラフ7
  • ナガト:ラフ56、クローン
  • ライオット:クローン、ワイルドカード、Pスーツ5
  • Sスト:船、Eスーツ、エネ吸4、ジャマー3
  • ジェシカ:アフィ、フィールド4、スラム街

例えば、クローンは強いアイテムで、なんと戦闘によって死んでしまっても生き返ります。 他にも、船があれば場外から船(宇宙船)からの攻撃を毎ターン追加で行えることができます。 エネ吸(エネルギー吸収ボール)があれば、運が良ければ相手を数ターン何もできなくできます。

この後の基地編ではそれぞれが互いの思惑を利用しながら 長い長い戦い*1が行われるでしょう。

f:id:CHY72:20161226010045j:plain

⬆秘密基地編。基地をめぐる攻防が行われる。

面白さ

一つのアイテムが戦局を大きく変えることも日常茶飯事という ゲームバランスなので、毎ゲーム全く違ったゲームを楽しめます。 登場しうるキャラクターも25人いるため、毎回違ったゲームを楽しめます。 プレイヤーはたいてい25人の情報は覚えていることが多いので、 判明した能力などからメタ的にキャラクターを推測することが可能で、 それがゲームの面白さを更に引き上げています。

個人的にこのゲームの一番の面白さをあげるとするなら、 なんといってもそのゲームバランスだと思います。 ゲームというものは、「運」、つまりランダム性がバランス良くあると とてもおもしろくなります。 将棋や囲碁などの運要素の全くないゲームもそれはそれで戦略ゲームとして面白いのですが、 ロックは要所要所で「運」が占めるバランスが非常に大きく歓喜したり絶望したりできるのが とてもおもしろいのです。 このゲーム、基本的には経験的に培われる最適な戦略をとるほど勝ちやすくなるゲームなのですが、 例えば死んでしまったキャラクターが、毎戦闘ごとに行われる「実は生きていた」チェックで 1/36の確率で体力Maxで生き返ったり、この攻撃で死ぬ…という攻撃で変身チェック(与えるダメージは、 ダイスを二個降った値によって変わり、そこでピンゾロなどが出ると行われるチェック)で キャラクターが転生(!)して別のキャラクターとしてゲームをプレイすることになったり、 低い確率で起こる奇跡的な出来事が戦局を大きく変えるという「運」に依存した側面ももち、 ゲームの開始から終盤までチャンスがずっと転がっているゲームでもあるのです。

さいごに

いかがでしたでしょうか。 少々駆け足で説明してしまったので雰囲気程度しかつかめなかったかもしれません。 京大マイコンクラブでは KMC超人ロック公式ホームページ というサイトにて 詳細なルールを公開しています。 もしも興味を持っていただけたならば、 京大マイコンクラブに入部(京大マイコンクラブでは入部制限はありません!どなたでも入部できます!) して、是非一緒に超人ロックを遊びましょう。

*1:一ゲームおよそ3時間位

Pietでカラーゴルフ(有彩5色+白)をした

この記事は KMCお絵かき Advent Calendar 2016 - Adventar の 19日目*1の記事です。 前回の記事は @kurimotz による 【クリスマス】「クリスマスケーキ」イラスト/Motz [pixiv] でした。

はじめに 〜経緯〜

KMCでは描け麻雀というものを不定期で行っています。 描け麻雀は、勝者が敗者に好きなお題の絵を描かせることが出来るという麻雀です。 8月頃にこの描け麻雀を行ったのですが、僕が絵を描くのをずっとサボってしまい *2、 この12月に、4ヶ月遅れでこのように提出する運びとなりました。

このときのお題は「輿水幸子」「すずしい」でした。 お題が出されたのは8月だったので、「すずしい」というお題がでるのも頷けます。 8月にとった涼しげな仕事を12月に遅れて幸子が嫌々やらされる…みたいな絵を描くのも頭を よぎったのですが、結局Pietを描いてしまいました。*3

つくったもの

Pietで絵を描くのは過去に何度もやったことがあるので、 今回はいつもと違う制限をつけて描いてみようと思いました。

Pietは 有彩色18色 + 白黒 の計20色 によって 計17の命令が使える高級な言語なのですが、 実は理論上は上手く有彩色5色を選べば、全ての命令が表現できます*4。 プログラミング界隈ではコードゴルフというコードの短さを競う遊びがあり、 Pietではコーデル数の少なさ=コードの短さがよく部内でも競われています。 Pietの場合は別の方面、つまり色数の少なさ(カラーゴルフ)で競うこともできるのですが、 この方面に関してはKMC内ではあまり研究は盛んではなく、 どのようなものが出来るのか気になったのもあり、このようにやってみることにしました。

完成品がこちらです!! f:id:CHY72:20161224000119p:plain 実行すると「すずしい」と出力する、涼しい顔で締め切りを破る輿水幸子です。

(Pietの仕様を十分に満たしたUTF16のPiet処理系で正常に動作します。 (例えば、PietDevでは「要素数の足りないrollでスタックの先頭を消費する」という仕様に沿わない実装があるので動作しません。 未定義な処理は、「何もしない」というのがPietの正しい仕様なのです。dama氏のPidetや 自作のUltraPietでは正常に動作します) )

ひと目で分かる解説

f:id:CHY72:20161224162722p:plain 「いしずす」の順でスタックに積み、最後に逆順に出力しています。

カラーゴルフについて

色が少ないことによって以下のような制約ができます。

  • 黒を使用しない場合、方向転換、終了処理がかなり面倒くさくなる。
  • 基本的に一つの命令は一つの遷移にしか割当たらないので、欲しい命令を実行する時にその色遷移を頑張って作る必要がある。
    • 今回の場合 例えばduplicate命令は黄->紫の遷移でしか表現できない
    • 備考:18有彩色の場合は当然18個の遷移で表現できる
  • 実感として18色フルで使うほうが10倍くらいの情報を詰め込める気がする。
    • 今回の絵くらい大きければ、「もしも締め切りに間に合わなかったら桜の木の下に埋めてもらっても構わないですよ」くらいは詰め込められそう。

一応、色が少ないことで以下のようなメリットはあります。

  • ファイルサイズが小さくなる。
  • 色が多くないのでデザイン的に綺麗なものが出来る*5
  • 達成感がある。

今回の幸子の絵により、5色カラーゴルフは十分に可能であるということは示されたと思います。 今後カラーゴルフをする人口が増えることを望んでいます。

Piet用のお役立ちプログラム

今回の特殊なPietを描くにあたって実装したプログラムを公開します。 まず、絵を一番近いPiet18色に変換するプログラムとして

topietcolor.py · GitHub

をPython3で書きました。 まず下絵を描いてそれを徐々にPietにしていったのでこういうプログラムは大事です。

次に、どの5色を選べば17命令を達成できるかを調べるプログラムとして

search_piet5.cpp · GitHub

C++で書きました。 結果的に17命令を達成できる5色の選び方は4通りあることが分かりました。 このプログラムの結果から使用する5色を決めて書きました。

さいごに

もしも間に合えばこの絵のメイキングについて、 コミックマーケット91の サークル「いっと☆わーくす!」に、 寄稿しようと考えているので、コミケに行かれる方は是非手に取ってくださいまし。

明日*6の12/20のアドベントカレンダーは、@maztani による 【KMCお絵かきAdventCalendar】Illustrator で星輝子 - mz-log です。 彼はめっちゃすごい。

f:id:CHY72:20161224000119p:plain

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
f:id:CHY72:20161224174930p:plain

*1:5日遅れ…すみません

*2:描いていない間は他の描け麻雀に参加できないという制約はあるのでどんな人でもいずれは描く

*3:Piet絵師自体が絶対的に少ないので描く意味はあるはず!!

*4: (4+3+2+1)*2 > 17

*5:ある事物を表現する時に色は少ないほうがいいですよね

*6:明日…

ごちうさ速報Botを作った

この記事は KMC Advent Calendar 2016 及び ごちうさ Advent Calendar 2016 の15日目の記事です。

KMC Advent Calendar の前回の記事は uiureoさんの記事…はまだないので、その前の記事は walkureさんのゼネコンを九ヶ月で辞めた話 - (。・ω・。)ノ・☆':*;':* でした。 ごちうさ Advent Calendar の前回の記事は kivantiumさんの きんモザ・ごちうさ聖地巡礼記 - kivantium活動日記 でした。

はじめに 〜デキるエリートの場合〜

みなさんは、最新の社会情勢や時事が知りたい時、どうしていますか? テレビをつけてニュースを見ますか? それとも Yahoo!トップのニュースを見ますか? デキるエリートはそんな俗世的で時間のかかることはしません。

デキるエリートはまず「1」と検索窓に打ち込みます。 f:id:CHY72:20161214164244p:plain 素晴らしい。 誰でもこの方法で ご注文はうさぎですか? 第1羽「ひと目で、尋常でないもふもふだと見… を見つけられます。 デキるエリートはこの ニコ動のごちうさ1期一話 を見て最新の社会情勢をたったの30秒で把握します。

上の動画は 実際の2016/12/14/23時のごちうさ1羽の開始30秒です。 たかがアニメ動画と侮ることなかれ、この30秒で例えば

などのように様々なジャンルの社会情勢が分かってしまいます。

ごちうさ速報

このニュース速報は「ごちうさ難民」と呼ばれる人たちが投稿しています。 ご注文はうさぎですか? 第1羽「ひと目で、尋常でないもふもふだと見抜いたよ」とは にも詳しい説明がありますが、 ごちうさの「心をぴょんぴょんさせる性質」に救われ、この動画を毎日見続け、ごちうさという安住の地を手に入れた人々のことです。 やがて彼らはこの動画のコメントで情勢を報告しあうようになり、この動画を見るだけで昨今の情勢が分かるレベルまでに成長することとなったのです。

12月4日19時、我らがチノちゃんの誕生日には、一面シアン一色になりました。

ごちうさ速報は誰もが自由に書き込めるという性質上中立性があるといえます。 例えばテレビニュースの場合、スポンサーなどの影響で中立な放送をすることは難しいでしょう。 恣意的なニュースを流すことも可能ですが、日本中の人々が視聴するお茶の間のテレビ等とは異なり、 ごちうさ難民を扇動するニュースを流すメリットは皆無であるので、そのようなニュースは紛れ込みにくいといえます。 (逆に言うと、「ごちうさ3期決定!」「ゆゆ式二期決定!」などのように扇動するメリットのあるニュースはたまに紛れ込みます。)

Bot

このように有用なごちうさ速報をもっと簡単にシュッと確認できるようにしたいものです。 そこで、ごちうさ1羽を定期的に観察し呟くtwitterBotを作成することにしました。 以下、 KMCアドベントカレンダーらしく、そのPython3での実装について技術的なことを記述します。

ログイン

def login(mail_tel, password):
    s = requests.session()
    s.post('https://account.nicovideo.jp/api/v1/login?site=niconico', params={
        'mail_tel': mail_tel,
        'password': password,
    })
    return s

requestsモジュールを用いると簡単にログインできます。 引数のメールアドレスやパスワードはご自分のものをどうぞ。

コメント取得

ニコニコ動画APIについては、 ニコニコ動画APIとは 等に 掲載されていますが、詳しい使い方についてのドキュメントはあまり整備されておりません。 更にネットで検索して得られる情報は古いものや誤っているものも多く、 結局のところ実際の通信内容を見てコードに落とし込むのが一番手っ取り早いです。

def get_comments(thread_id, s, ok_time=3100, version="20090904"):
    movie_info = s.post("http://flapi.nicovideo.jp/api/getflv/{thread_id}".format(thread_id=thread_id))
    qs = parse_qs(movie_info.text)
    ms, user_id, userkey = qs["ms"][0], qs["user_id"][0], qs["userkey"][0]
    optional_thread_id = qs["optional_thread_id"][0]
    thread_info = s.get("http://flapi.nicovideo.jp/api/getthreadkey?language_id=0&thread={thread_id}".format(thread_id=thread_id))
    found = re.findall(r'threadkey=(.+)&force_184=(.+)', thread_info.text)
    threadkey, force_184 = found[0]
    xml = """<packet> <thread thread="{thread}" version="{version}" user_id="{user_id}" threadkey="{threadkey}" force_184="{force_184}" scocomments="1" with_global="1" /> <thread_leaves thread="{thread}" user_id="{user_id}" threadkey="{threadkey}" force_184="{force_184}" scocomments="1" >0-24:100,1000</thread_leaves> </packet>""".format( version=version, thread=thread_id, opt_thread=optional_thread_id,user_id=user_id, threadkey=threadkey, force_184=force_184)
    comments = requests.post("http://nmsg.nicovideo.jp/api/", data=xml)
    founds = re.findall(r'<chat (.+?)>(.+?)</chat>',comments.content.decode("utf-8"))
    comments = []
    for info, found in founds:
        found = found.replace("\u3000", " ") #全角空白
        vpos = int(re.findall(r'vpos="(\d+)"', info)[0])
        date = int(re.findall(r'date="(\d+)"', info)[0])
        mail = re.findall(r'mail="(.+?)"', info)
        mail = mail[0] if mail else ""
        if len(found) > 30 or len(found) < 4 or vpos > ok_time:
            continue
        comments.append([found, vpos, date, mail])
    comments.sort(key=lambda x: x[1])
    return comments

引数の thread_id には ごちうさ1羽は、http://www.nicovideo.jp/watch/1397552685 ですので、 1397552685 が入ります。 s には先程のログインで作成したrequestsのsessionが入ります。 ok_timeは、ごちうさ速報は開始31秒*1なので、31*100の3100を入れます。

getflvAPI,getthreadkeyAPIにて動画情報、視聴ユーザー情報、コメントサーバー情報を取得し、 判明したコメントサーバーに生成したxmlを投げることで最近のコメント一覧のxmlを取得しています。 コメントには以下の3つの属性があり、

属性名 意味
vpos コメントが動画上で表示される時刻
date コメントが投稿された時間
mail ue shita red cyan big など、文字への修飾

vposでソートし、処理しやすい配列の形で返却します。

動画生成

コメントを取得できたので、後はその情報を元にして動画を生成するだけです。 動画の生成には moviepy を用いると楽ちんです。 結論としては analyze_mp4.py · GitHub みたいな関数を作れば ニコニコ動画を再現できます。 make_textclip関数でコメントをmailとvposを元にして動画に合成します。 コメントのフォントに際しては、フォント変化と明朝化DR10行固定:meg_nakagamiのブロマガ - ブロマガ に詳細が載っています。 再生環境によってフォントは変わるようですが、今回は実行パスと同階層に置いた hiragino.ttc を合成することにしています。 テスト用の非公開動画を投稿し、コメントを投げて感覚を掴み、それを元にしたノリでコメントを流しています。

動画投稿

結論としては twitter72.py · GitHub のtweet関数のような感じで投稿できます。 tweepy 等を使ってもよかったのですが、mp4の投稿はうまくいかなかったので、twitter公式ドキュメント などを参考にして実装しました。

実際のコード

以上をまとめると、

twitter72.py · GitHub

gochiusa_sokuho.py · GitHub

が、最終的にコードとして完成されます。 ログイン情報やトークンをまとめたファイル gochiusa_token を作り、 あとは環境さえ揃っていれば $python3 gochiusa_sokuho.py mp4 で動画生成からツイッター投稿までできるようになります。

運用

以上のコードにより、目的のBotが完成しました。

このBotは一日に2回、30秒の動画を投稿し、 一時間に一度コメントをチェックして更新があればコメントを呟いています。 全部呟くと流石にキリがないので、赤色で大文字のもののみ呟くようにしています。

まとめ

こうして我々は社会情勢を簡単に知ることができるようになりました。 更に毎日投稿しているので、先程のチノちゃん生誕祭のように気になった日のアーカイブをいつでも確認できるようになりました。 毎日欠かさず情報を提供してくれるごちうさ難民のみなさまには感謝の意しかありません。 ごちうさ1羽 は、現在7777777回再生を突破*2し、その人気はまだまだ健在です。 これからも心をぴょんぴょんさせていきましょう。

明日のKMCアドベントカレンダーは pastak さんによる「多分ポエム」、 明日のごちうさアドベントカレンダーは hideo54 さんによる 「青山ブルーマウンテンさんから学ぶ対原稿術」です。

それでは また来るよ、マスター。

みーくんは起床のプロ

この記事は、がっこうぐらし! Advent Calendar 2016 - Adventar の 12/5 についての記事です。 昨日の記事は @utgwkk の めぐねえにはなれない僕らだから - 私が歌川です でした。

はじめに

みーくん と言えば、ショッピングモールの籠城生活が印象的かと思います。 彼女(達)の籠城生活は精神的につらいものであるはずですが、 精神力を強くもち、みーくんは生き延びることができました。 それにはきっと生活習慣も大きく関わっていたでしょう。 特に、規則正しい生活習慣には規則正しい起床が不可欠です。 この記事では、みーくんの籠城生活の起床のコマを参考にして よい起床方法を考察しようと思います。

みーくんの起床(7話 まいにち より)

まず、彼女はめざまし時計により起床します。 その後、中座し目をゴシゴシし、カーテンを開け朝日を浴び、目を覚まします。 そして、リンスとシャンプーで紙を洗った後、着替え、 ダンボール机の上にてカロリーメートと水を朝ごはんに食べます。 いただきます、ごちそうさまは欠かしません。

f:id:CHY72:20161205181913p:plain まず、明らかに彼女は規則正しく起床しています。 僕は二度寝をよくしてしまい、遅刻することが多々あります。 それに、そもそも起きるのが午後だったりして、一日を無駄にしてしまうことも多いです。 そうすると精神的にどんどん辛くなっていきます。 f:id:CHY72:20161205182034p:plain

見習うべくは、彼女の理想的とも言える起床方法です。 まず、めざまし時計。 これをセットすることで高確率で所望の時間に起床することができます。 こういう文明の利器は須らく使うべきです。 次に、中座して目をゴシゴシしている。 こうすることで、まず体が急に起き上がることで夢の内容を忘れることができ、 二度寝をしたいと思う要件の一つ、「見た夢の続きが気になる」を無くすことができます。 目をゴシゴシすることで、目やにが落ち、目が開きやすくなります。 そして、彼女は朝日を浴びます。 朝日を浴びることで体は起床に対して前向きになることは、理解できると思います。 このように段階的に起きることによって、起床を確かなものにしています。 一度起床してしまえば、規則正しい生活習慣を送るのも容易いものです。 さらに、彼女は着替え、朝ごはんを食べています。 着替えてから朝ごはんを食べるという順番は、一見不思議なものに思えるかもしれませんが、 ご飯を食べると眠たくなることは分かりきっていることなので、 先に着替えを済ましておくことで、それを回避していると考えれば理解できるでしょう。 「いただきます」「ごちそうさま」 と声に出すことで更に目が覚めます。 他にも考察すべきことがあるとすれば、彼女の寝る態勢が仰向きであることでしょうか。 この寝方は、起きる動作に最も移行しやすい態勢です。

まとめ

みーくんは起床のプロ

さいごに

毎日起床失敗しているのでみーくんを見習って起床のプロになりたい。 次の記事は 12/9 に @京橋ひよわ による がっこうぐらしの避難生活 | ひよわのらくがき です。 くるみちゃんかわいいよね

参考

がっこうぐらし! 2巻 www.amazon.co.jp

Macで(Windows風に)アプリをキーボードで切り替えるJXAを書いた

したいこと

Windowsでは以下の操作が簡単にできますがデフォルトのMacでは実現できません。

  • Win+0~9 キーで数字の対応するタスクバー(MacでいうDock)の位置のアプリの起動/切り替え
  • Win+↑でアプリの画面最大化
  • Win+←→ でアプリを画面の右(左)半分にフィットさせる

Win+←→キーなどは、shiftltなどのアプリを入れることでも再現することができますが、 それではDockをキーボードで簡単に操作することはできません。 また、SplitViewを使う手もありますが、他のアプリとの切り替えがめんどうなのであれはダメです。 以上の操作を実行するAppleScriptを書いてキーボードショートカットに割り当てて爆速開発環境にしたいわけです。

具体的には、

  • Ctrl + 0~9キーで対応するDockの位置のアプリを起動/切り替え
  • Ctrl + ↑キーで現在のアプリの画面を最大化する
  • Ctrl + ←→キーで現在のアプリを左右に寄せる
  • Ctrl + ↓ キーで隣のアプリと切り替え
  • Ctrl + _ キーでiTunesと切り替え

の操作ができるようにしたいわけです。

手順

  1. $brew cask install karabiner で、キーバインドのために Karabiner を入れる。
  2. $brew install cliclick で、shellからクリック操作をエミュレートできるcliclickを入れる。(/usr/local/bin/cliclick にcliclickが配置されているようにする)
  3. Karabinerを開き、private.xml(キーバインド割当設定)を生成する
  4. gist.github.com をprivate.xmlに書く。
  5. gist.github.com~/.mv_windows.js に書く。
  6. Karabinerで先程生成したキーバインドを設定する。
  7. うまく動作しない場合はKarabinerのアクセシビリティが正しいかを確認する。
  8. キーバインド完成!!

感想

初めてAppleScriptを書いてみようとして文法がアレだったのでJavaScriptで書きました。 JXAの日本語情報(特にDock周り)がとても少なかったのでなかなかめんどかったです。

600kmくらいママチャリを漕いだら9月が終わってしまっていた

概要

九州の横断(新門司->USA->別府),愛媛の横断(八幡浜->東予港),滋賀の横断(琵琶湖一周)を漕いだという話です. f:id:CHY72:20160927130101p:plain

9/11 出発日前日

  • この日はシャドウマッピングをUnityで実装しました. www.slideshare.net
  • サークルのメンバーが九州に行く機運が高まっていたので せっかくなので僕は自転車で行きたいなーと思いたちました
  • フェリーを予約して,早めの就寝.
  • 宿:部室

9/12 九州へ(出町柳->大阪南港 +64.0km 総計64.0km)

9/13 USAへ(新門司(福岡)->USA(大分) +51.7km 総計137.3km)

  • 九州住みのKMC部員と別府まで目指すも途中でバテてUSAで終了
  • USAから電車で別府に行き更に他の部員(電車に乗って楽をする人たち)と合流
  • 体調:快晴過ぎて日焼けして温泉に入れなかった(><).
  • 宿:5kくらいのホテル

9/14 別府へ(USA(大分)->別府(大分) +56.0km 総計193.3km)

  • 朝は雨が降っていたのでメンバーで別府地獄めぐり
  • 午後は別府まで自転車で山越え.2時間くらいコンビニすら無い区間があってやばかった.
  • 宿:雨が降ってきたので入ったネカフェ

9/15 博多観光

  • そにっく往復を用いて博多へUターンして観光
  • 太宰府,博多タワーetcを観光
  • 宿:深夜に別府に帰ったのでカプセルホテル

9/16 松山へ(八幡浜(愛媛)->松山(愛媛) +64.5km 総計257.8km)

  • フェリーで別府->八幡浜へ向かい,夕やけこやけラインをひたすら進む
  • 日本ではここでしか生産されないらしいポポーなどを購入
  • 浜がきれいかなーとか思っていたら消波ブロックしかなかった(><)
  • 宿:松山の部員宅

9/17 ~ 9/20 松山観光

  • ランタン祭り,大神輿総練,道後温泉などを満喫
  • 途中で台風が来てヤバみ

9/21 京都へ帰還1 (松山(愛媛)->東予港(愛媛) +68.4km 総計 326.2km)

  • ぐるっと海岸線を廻って港へ
  • 宿:フェリー

9/22 ~ 9/23 京都へ帰還2 (大阪南港->出町柳 + 64.3km 総計390.5km)

  • 体調:瀕死

9/24 琵琶湖一周 (➰ +217.0km 総計 607.5km)

  • 締めに軽く琵琶湖を一周しました(ママチャリでも半日半くらいでできる)
  • 体調:死

9/25

  • 体調:死

9/26

  • 体調:あし

9/27

  • 体調:よろし

こころえ

  • 一日にママチャリで走れる距離は70km.(それ以上すると翌日に負担が出る)
  • 自転車グローブは必須.(これがないと手にマメが出来て痛い)
  • 大阪のオバちゃんみたいにサドルにクッションを引いた.(確実にお尻が痛くなる)
  • 一日でも日焼けはするので日焼け止めは大切.(でないと温泉で疲れを癒せなくなる)
  • 運がよいと自転車を漕ぐときは雨が降らない.(そして僕の運はよいです)
  • 400km漕いだあとでも琵琶湖は一周できる.(但し翌2日死ぬ)
  • ロードバイクの方が自転車の5倍くらい効率が良い
  • 公共交通機関の代わりに自転車を使用しても費用は結局同じ(フェリーで自転車代が余分にかかったり,水分補給費等が高かったり)

まとめ

  • 沢山の人の支えのお陰で適当すぎる計画でも無事で済みました.とても感謝.
  • 公共交通機関は神.