みずぴー日記

人間の再起動ボタンはハワイのビーチにある

🇸🇬シンガポール

シンガポール旅行をした。

ANAのプレミアムポイントを貯めているので飛行機で遠くに行きたいという気持ちと、東南アジア観光をしたいという気持ちが合致した。

🍽食事

ホーカーズという屋外のフードコートのような場所で食べていた。 おいしいし安いので最高。近所に欲しい。

f:id:mzp:20180730222442p:plain

南海チキンライス。

f:id:mzp:20180730222508p:plain

ラクサ。 ココナッツ風味のスープに麺がはいっている。

f:id:mzp:20180730222552p:plain

呼び方が分からないけど蝦麺と書いてあった。 そのままのものがでてきた。

f:id:mzp:20180725192959j:plain

あとは空港のレストランで肉骨茶を食べた。 胡椒の聞いたスープに肉がはいっている。

f:id:mzp:20180730222752p:plain

🚶‍♀️観光

動物園

シンガポール動物園がすごいと聞いたので見にいった。 檻とかがなくて見応えがあった。

カワウソかわいい。

f:id:mzp:20180730222953p:plain

バクをはじめてみた。思ったより景色に溶けこんでて写真に写りづらい。

f:id:mzp:20180730223017p:plain

水辺にはトラがいる。

f:id:mzp:20180730223119p:plain

マントヒヒ。

f:id:mzp:20180730223153p:plain

象。

f:id:mzp:20180730223420p:plain

すごいなーと見てたら急にタヌキがでてきてびっくりした。

f:id:mzp:20180730224601p:plain

植物園

広大な植物園も見た。 休憩しながら回っていたので5時間くらいかかった。

ほぼ森の中を歩いてるような気分になる。

f:id:mzp:20180730224128p:plain

f:id:mzp:20180730224136p:plain

f:id:mzp:20180730224145p:plain

広場みたいなエリアも広くて、おもしろい。

f:id:mzp:20180730224147p:plain

有料エリアで蘭が見れるのてたのしい。

f:id:mzp:20180730224209p:plain

f:id:mzp:20180730224154p:plain

f:id:mzp:20180730224508p:plain

ランドマーク

マーライオンマーライオン公園にあるやつを見て満足してたが、Wikipediaによると他にもいくつかあったらしい。

f:id:mzp:20180730224847p:plain

なんか上に船がのってる建物があるわ、ウケる、と思ってみてたら、有名なマリーナサンベイズだったらしい。

f:id:mzp:20180730224842p:plain

シンガポールのAppleStoreも確認した。

f:id:mzp:20180725153020j:plain

📱通信

空港の出口を出た瞬間にプリペイドSIMが販売されていて最高だった。

f:id:mzp:20180726162806j:plain

HISの変なSIMも持っていったが、日本での初期設定が不足してたためか、うまく使えなかった。

🛌ホテル

予算相場を把握しないまま予約したらやたら豪華なホテルになってしまった。調理器具一式がついてたが、いっさい触れなかった。

f:id:mzp:20180730230639p:plain

f:id:mzp:20180730230648p:plain

✨その他

歩道に鳥の足跡がのこっててかわいかった。

f:id:mzp:20180730231202p:plain

飛行機のWifiのパスワード入力例の主張が激しい。

f:id:mzp:20180730231230p:plain

🌓ダークモード

メニューバーからダークモード切り替えをするアプリケーションを作った。

f:id:mzp:20180729124035p:plain

ダウンロード: https://github.com/mzp/DarkMenuBar/releases

🖼デモ

🌑ダークモードの登場

macOS HighSierraからメニューバーおよびドックを黒にするダークモードが利用できる。さらにMojaveではウインドウ等も黒にできるようになった。

f:id:mzp:20180729124441p:plain (WWDC 2018 Keynoteより引用)

これらの変更はシステム環境設定から変更できる。

f:id:mzp:20180729124739p:plain

しかし、「周囲が暗いのでダークモードに切り替えたい」「気分転換にモードを変えたい」といったときに、都度システム環境設定を開くのは面倒である。 もっと気軽にメニューバーから切り替えたい。

🌟メニューバーからの切り替え

そこでメニューバーからダークモードのオン・オフをするアプリケーションを作った。https://github.com/mzp/DarkMenuBar/releasesからダウンロードできる。

f:id:mzp:20180729124035p:plain

f:id:mzp:20180729123947p:plain

🛠仕組み

ダークモードへの切り替え

切り替えはSkyLightというprivate frameworkを使うとできる。 こんな感じ。

@objc func enterDarkMode(sender: Any!) {
  NSLog("%@", "enter dark mode")
  SLSSetAppearanceThemeLegacy(1)
}

@objc func leaveDarkMode(sender: Any!) {
  NSLog("%@", "leave dark mode")
  SLSSetAppearanceThemeLegacy(0)
}

メソッド名にLegacyが含まれてるのが不吉だけど、とりあえず無視する。 /System/Library/PreferencePanes/Appearance.prefPane をディスアセンブルしてもこれ使ってたので、まちがってはいないと思う。

メニューバーへの組込み

WeatherBar by bgreenleeにある方法でメニューバーに組み込む。

アイコンはSketchで適当に書いた。

f:id:mzp:20180729125623p:plain

ログイン時に起動

ログイン時に起動はHow to launch a macOS app at login? - The.Swift.Devで実現した。

/Applications に配置しないと動作しないのでデバッグが面倒だった。

🚧IM@S Engineer Talks メイキング #imas_hack

IM@S Engineer Talks - connpassアイドルとして勤務する -理論と実践-という話をした。IM@S Engineer Talksで喋ってきた話のメイキングのおはなし #imas_hack - ツバメになったバリスタがたのしかったので、ボクもメイキングを書く。

アイマスハッカソンの打ち上げの帰りにtrebyさんから「今度長めにしゃべりませんか」と言われて「いいですよー」と答えてたら本当にしゃべることになった。 結果としてMisoca在籍中の最後の登壇となったのがおもしろい。

f:id:mzp:20180707130224j:plain

🤔狙い: 「実際にやってみた」を全面に出す

アイマスハッカソンでやってた心拍数ハックやライブフォト生成はid:banjunが話すので、別のネタで行くことにした。 ちょうどパペ文字によるVR出社をやりはじめたころなので、アバター出社で行くことにした。

そのまま作ると「FaceRigを使ってみました」という内容になって技術的な難易度は低い上に、担当アイドルへの愛の強さは他の人にはかなわないので、工夫が必要だった。

そこで「実際にアバター出社をやってみるとおきるあれこれ」というのを主題にした。 アバター出社をしている人はあまりいないので、実体験をメインに据えれば興味深いになるのではと考えた。

f:id:mzp:20180712104621j:plain

また会社に交通費補助がある場合はスライド会社の紹介をいれるのが自分のルールなので、出社の話をすれば違和感なく会社の紹介ができるなという狙いもある。スライドでは次のようなシナリオにして会社の紹介をいれた。

  1. Misocaで勤務しています
  2. Misocaではリモート勤務を推奨しています
  3. そこで発生する問題を解決するためにアバター出社を導入しました

f:id:mzp:20180712104120j:plain

📝スライドメイキング: マイドマップと原稿

マインドマップ風にがーと書いた。ドトールで書いてたら水滴をおとして文字がにじんでしまった。

f:id:mzp:20180722095312j:plain

そのあと原稿にまとめていく。 300文字/分と聞いたのでそれを目安に書いてたかデモを挿入すると崩壊すると学んだ。

f:id:mzp:20180722203813p:plain

このあたりで開催まで1週間をきったので、焦りだした。

🙌当日の反応

デモも問題なくできたし、みんなもりあがってくれてよかった。

予想はしていたが、声に関する質問がおおかった。 「ビジュアルはいいけど、声はどうなんですか?」という質問、プロデューサーっぽいね、次はきっとダンスのこと聞かれるよ、という話を懇親会でしててたのしかった。

追加の質問は https://quesdon.rinsuki.net/@mzp@mstdn.jp で受け付けている。

⚡️後日の反応

ブログに発表資料と原稿を書いたら、めっちゃブックマークされてびびった。 今みたら431ブクマされている。

mzp.hatenablog.com

タイトルにハッシュタグを含めたせいでimachack SlackのTwitterエゴサチャンネルが崩壊した。

f:id:mzp:20180722205059p:plain

オモコロのトップページにも掲載された。

f:id:mzp:20180722205223j:plain

今週のはてなブログランキング〔2018年7月第2週〕 にも掲載された。 13位がMisocaの社長の記事なので、若干きまずい。

f:id:mzp:20180722205520p:plain

これで臨界点を越えたのかアバター出社する人が増えた。

👋転職

f:id:mzp:20180722200437p:plain

近況報告から4年、ふたたび転職することになった。思いなどはMisoca開発者ブログに👋Farewell song として書いた。

ここでは記録のためにいくつかの日付を記録しておく。 たまに必要になるのでブログに書いておくと便利。

  • 最終出社日 & 退社日: 2018年7月18日
  • 次の会社の入社日: 2018年9月1日
  • 東京への引越し日: 2018年8月15日〜20日
  • 有給消化期間はない。(有給を使いはたしていたので)

⛰富山ワーク

同僚のid:mugi1が富山からリモートワークしているので、富山に行って一緒に仕事した。

避暑になるかなと思ったがそんなことはなかった。

f:id:mzp:20180716222359p:plain

🏢コワーキングスペース

作業は南砺市福光会館 オープンスペースでしていた。

図書館の2階のエリアが解放されていて、自習スペースのような感じになっていた。空いているので気兼ねなく利用できる。

🍣食事

お昼は8番ラーメンを食べた。富山というか北陸周辺の有名なローカルチェーンの店らしい。

f:id:mzp:20180716223636p:plainf:id:mzp:20180716223647p:plain

夕食は寿司を食べた。タッチパネル式だったか操作を間違えて、大量のウニが届いた。

f:id:mzp:20180716223726p:plain

🏡宿

きときとのときと同じくBED AND CRAFTの提供する宿に泊まった。

砺波平原の付近なので、夕日がきれいだった。ご飯食べにいく途中でぱしゃぱしゃ写真を撮っていた。

f:id:mzp:20180716224135p:plain

f:id:mzp:20180716224144p:plain

宿の内装がおしゃれなのでものすごくテンションがあがる。

f:id:mzp:20180716224018p:plain

f:id:mzp:20180716224028p:plain

f:id:mzp:20180716224036p:plain

f:id:mzp:20180716224046p:plain

📷舞台訪問

きときとののときにゆるゆり なちゅやちゅみ!(2014)の舞台訪問をしたが、砺波駅は未訪問だった。

今回は砺波駅を利用する機会があったので、写真が撮れた。

f:id:mzp:20180716222126p:plain

f:id:mzp:20180716223121p:plain

駅の案内表示で油田行きの電車がでていておもしろかった。 石油王がいるのかと思った。

🛢おまけ

f:id:mzp:20180716224239p:plain

🏜InputMethodKit for Mojave

f:id:mzp:20180716210748j:plain

日本語入力を作るときに必要だった本macOS 10.14 (Mojabe)にあわせて加筆・修正した。 過去に購入した人も再ダウンロードすれば反映される。

非公開機能について記載していた部分がOSのバージョンアップにともない動作しなくなっていた。 今回の修正で2つのOSで動作するようになったので安定性が増したと思う。

🛠変更箇所

https://github.com/mzp/EmojiIM/pull/25

コードの差分は上記プルリクエストにまとまっている。

⌨️キーボード配列の取得

⌨️キーボード配列の取得で以下のコードでキーボード配列の種類を区別できると書いた。

let r = TISGetInputSourceProperty(inputSource, "TSMInputSourcePropertyScriptCode" as CFString)
let n = unsafeBitCast(r, to: NSInteger.self)

// 39なら英語
return n == 39

しかしこれは誤りであり、Mojaveで動作しなくなった。 TSMInputSourcePropertyScriptCode に対して取得できるプロパティは定数ではなくオブジェクトへのポインタであった。 OSのバージョンが固定されている場合はポインタのアドレスも固定されているため、定数と混同していた。

正しくは以下のコードで英語キーボードかどうかを取得する。

let r = TISGetInputSourceProperty(self,  "TSMInputSourcePropertyScriptCode" as CFString)
let n = unsafeBitCast(r, to: NSString.self).integerValue

return n == 0

これに加えて、https://github.com/mzp/EmojiIM/pull/25ではBridgeHeaderを用いて TSMInputSourcePropertyScriptCode という文字列定数を直接埋め込むのをやめた。

🌓入力モード

🙊入力モードの非公開機能で入力モードの統合について書いたが、これには不足があった。

<key>tsInputModeIsVisibleKey</key>
<true/>

のように tsInputModeIsVisibleKey キーに対する値を YES にしないとメニューバーに入力モードが表示されない。

💄その他

これを機会に体裁を整えるための変更を行なった。

謝辞を載せるといっておきながら忘れていたので追加した。

f:id:mzp:20180716211934p:plain

電子版は印刷する必要がないので左右の余白サイズの統一も行なった。

🖥研究室の暮らし

大学生活の後半はほぼ研究室ですごしていたので、様々な影響を受けた。そのときの影響は今も残っている。

f:id:mzp:20180713115802j:plain

🖥環境

研究室には学部4年のときに配属された。

配属時にマシンが割り当てられるが、そのときにMacマシンかLinuxマシンを選べた。ボクはMacマシンを選んだ。これが、Macとの出会いであり、今にいたるまでずっと使いつづけている。

学部のときはMac miniだったが、修士にあがるとタワー型のMac Proとなり、たいていの用途では不自由を感じないスペックとなった。

さらに、広い机とよい椅子も与えられた。この机がなかなか快適で、今の職場よりも広い気がする。イスは快適だったが叩くと埃がどんどんでてきて歴史を感じた。

f:id:mzp:20180712143355p:plain

輪講と論文紹介の当番が順番にまわってくるので、卒論・修論の研究と並行してこれらの準備を進める必要があった。

そのプレッシャーから逃避するため、潤沢な環境でいろいろなプログラムを書いた。 画像クローラーを作り、研究室共有のDropBoxに保存し続けてたら、研究室全員のディスクが足りなくなって楽しかった。

f:id:mzp:20180712152433p:plain

🙊雑談

研究室の中央にはいくつかのソファーが置いてあり、よく雑談していた。 ソフトウェア工学とソフトウェア科学を扱う研究室だったので、設計手法とか開発手法の話が多かった。

プログラミングのバイトをしている人も多かったので、仕事の進め方に関するtipsも聞いた。 「仕事をふられたときは自分の思う3倍の時間を言え」とか「雑でもいいから返事を返せ。返事を返せば相手のボールになる」とかはここで学んだ。

f:id:mzp:20180712152459p:plain

💼今も残る影響

研究室とのつながりが切れておらず、ICSE勉強会に「名大OB」という不可解なチーム名で毎年参加している。この勉強会自体はとてもおもしろいが、いつまでたっても大学が昔の思い出といった感じにならない。

f:id:mzp:20180713111558j:plain

このときの影響で、研究室っぽい会社にあこがれがある。 Misocaを選んだ理由の1つでもある。

きっとこの先も同じ理由で会社を選びつづけると思う。

f:id:mzp:20180713111013j:plain