パーソナライゼーションとプライバシー

ここ半年ぐらい、こういうことを思いついたときはScrapboxやDynalistにまとめて、思いついたときに随時書き足せるようにしておいた。それで、ある程度まとまってからブログ記事にしようと思っていた。しかし、結局それからブログ記事になったものは一つもなかったし、ある程度しっかり考えるにはそれに専念するような時間を持たないとどうにもならないことに気がついた。だから、やっぱり浅い考えでも書きたいな〜と思ったら、短い記事でも書くことにした。いま思えば、Scrapboxにしたのは、後から簡単に編集できる*1以外にも、公開度の問題や、話をうまくまとめる目的もあった気がする。まあそのへんのニュアンスは気が向いたら書くとして…。

更新しなさすぎてとうとう広告が出てきてしまったので、何でもいいから書いてそれを消したい、というのもある。最近書こうとしてもなんだか気張ってしまって書けなかった(某ブログに取り上げられた影響もあるかもしれないw)が、今回は日付が変わる前で眠いので、あんまりそういうことを考えずに打ち込めている。


パーソナライゼーションというのは、「〇〇さんにおすすめ」というアレとか、似たような広告がたくさん出てくるとか、そういうこと(サジェスト・レコメンドなどの用語があるが、眠いのであんまりちゃんと分別しないことにする)。ユーザとしては、別にあってもなくても困らないのだが、いろいろなサービスがこれを実装している。で、こういったパーソナライゼーションには、それを行うための素材となるデータが必要になるから、サービスは必然的にユーザの属性や行動を貪欲に探り当てていくことになる。そして探り当てたデータ(好み、年齢層、訪問する時間帯などの属性と行動)はサービスのデータベースに送られて、次のページで表示するレコメンドの材料になったり、蓄えられて未来のユーザとの比較対象になったりする。

ただ、この探り当てたデータが、ユーザを離れて事業者のサーバに移動されてしまうと何をされるか・何に使われるかわからない、プライバシーが守られない、というのでユーザが不安になったりGDPRが施行されたりした。パーソナライゼーションとプライバシーの2単語で検索すると、二者の「境界」とか「兼ね合い」という単語が目に付く。

しかし、購入履歴にせよ、年齢層にせよ、そのような懸念が生じるデータはもともとユーザが持っていたものであるはずだ。別の言い方をすれば、ユーザの持ち物をサービスが持っていってしまうから懸念が生じた。持っていたけれど、あまりに些細だったり当たり前だったり、集計するのがめんどくさかったりして放置されていたデータを、たまたまアルゴリズムが見つけ出して、サーバに持ち帰ったにすぎない。レコメンドエンジンがある商品を勧めてきたときに「これはいらないな」と思うのは、エンジンが(推論含め)獲得したデータと、ユーザ自身が判断に使う自己のデータに差があったからだ(ユーザ自身は自己のデータを全て持っているから、その判断は常に「正解」になる)。

そこで、ユーザが持っているデータを、サービスではなく自前で掘り当てさせれば、勝手に知らないサーバに投げられることもなく安心なパーソナライゼーションが実装できるのではないかと思った。「兼ね合い」ではなくて「両立」できないのかな?と。ここで自前で掘り当てるといっているのは、ユーザが自己啓発本を読んで自分の性格を分析するってことではなくて、ユーザの管理下にあるコンピュータ(だいたいの場合サービスを利用する端末)で、クライアントの立場でデータをアルゴリズムでかき集めてくる、という意味。

たとえばECサイトのレコメンドにおいて、必要なのは個々のユーザのデータ(嗜好、予算、訪問頻度…)と商品のデータ(商品の概要、在庫、価格…)、それからこれまでのユーザのデータが蓄積されたデータベースである。データベースを使うと、「このカテゴリを見にくる人は20代の男性が多い」など、やや抽象的な傾向が入っている。これらのうち、個々のユーザのデータはクライアントで取得できる。そもそも、サーバに送られていくユーザの行動は、クライアントとなるブラウザ・アプリとユーザの間で起こることの一部分でしかあり得ない。ユーザと直接対話するのはクライアントであって、サーバではない。

商品のデータはやや難しいが、スクレイピングAPIを使えば理想的にはなんとかなる気がする。もちろん、サービスが持つデータへのアクセスについては、レコメンドエンジンは一般ユーザやサードパーティー開発者と比べると特権的な位置にあるだろうから、現実的にはそう簡単にはいかない。最後にデータベースだが、これはレコメンドを使いたいユーザが集まってデータを出し合えばよさそう*2。ユーザがデータを出し渋るような気もするが、それまで一企業に嬉々としてデータを提供してきたのであれば、特に問題はないと思う。レコメンドの実装については詳しくないし、大手がどのようなエンジンを使っているのかも知らないが、小さなサービスであればOSSのエンジンを使用するものもありそう。その場合は同じOSSを使えばアルゴリズムの能力的には対抗できる。

だから、「パーソナライゼーションがほしい」というのはプライバシーを諦める理由にならないかもしれないと思った。

すげー眠くなった。もう寝るが、またなんか思いついたら追記する。

*1:簡単に、というのは「書く画面と読む画面が同じ」というレベルの話で、「編集ボタンを押したら編集画面に移動して、読むときとは違う記法(Markdown)だがすぐ書き直せる」ブログレベルの簡単さではない

*2:口コミの定量化と捉えられそう

たのしい潮寮生活 3

明石高専 電気情報工学科4年 (4EJ) のsei0oです。この記事では「潮寮」こと明石高専学生寮について紹介します。 一応高専 Advent Calendar 2019の記事です。大遅刻。言及してもらったのに申し訳ないなあ。数ヶ月ぐらい下書きのまま放置してしまい公開をやめようかと思いましたが、新型のコロナウイルスで春休みが伸びたので時間をとって修正しました(連続外出自粛記録更新中)。休校の暇つぶしにご活用ください。

「たのしい潮寮生活」について

潮寮についての記事のシリーズで、1年1つ書いています。3年生なので、この記事で3つ目になります。高専への進学を検討している中学生や、通学している同級生に寮がどんなところか知ってもらえればと思って書いています。毎年毎年同じことを述べてもしょうがないので、昨年との比較を主に書いています。入寮からの寮生活(と筆者の文体)の変化を追いたい人はたのしい潮寮生活たのしい潮寮生活 2も参照してください。

また、高専自体(授業など)についてはあまり書きません。その辺の話はTwitterで検索をかければたくさん出てきます。筆者は男子寮生なので女子寮のことはわかりません。B寮でのたのしい潮寮生活が詳しいです。 新入生は公式サイトも見ておいた方がいいです。あくまで個人の考えなので、「入ってみたら記事と違うじゃねーか」などあるはずです。実際の生活で困ったら誰かに相談しましょう。後輩曰く「親がこのブログを見ていた」そうなので、今年は予防線を多めに張っておきます。

そろそろ本題に入りましょう。さらっと潮寮の全体像をおさらい。

  • 居住区:A寮(低学年男子寮)、B寮(女子寮)、C寮(高学年男子寮)、B寮別館(国際交流センター・留学生用?)
  • 施設:食堂・浴場・中央棟(事務) あとは池とか花壇とか

全体的な環境

挨拶

先輩の姿を見かけたら挨拶するルールがあります。いや先輩後輩関係なく、お互いに挨拶するルールだった気もしますけれど、こういうのは一方通行にならざるを得ません。A寮だと寮長以外の上級生がいなくなるので、挨拶を返す側になることが多くなります。正直面倒だけど、しょうがない…。食堂に行くまでに4回以上挨拶を交わすとDoS攻撃を食らっている気分になります。また、ここで身につけた雑な挨拶を学校の外で使いがちでわりと困ります。

ところで、悪名高い大声挨拶(過去記事参照)は指導層に反対派が増えてきたのでなくなりました。すなわち今の1年生は大声挨拶を知らない世代です。いまこの記事を読んでいる次期指導寮生は「復活させよう」とか思わないように。低学年への指導方針が緩和傾向にあり(あるらしい)、それがまずいと考えている人もいるようです。

個人的には、皆が思いやりと誠意をもってやっていけば規律はそこまで厳しくなくてよいと思います(適当)。寮に慣れていない新入生は思わぬところで迷うので、そういうのを具体的に伝えるのが大事なんじゃないかなあ。シャワー室の掃除マニュアルは良いと思う。向こう1,2年はこのトレンドが続きそうですが、指導方針はそのときの指導寮生によってコロコロ変わるので以降はなんとも言えません。「理不尽に耐えよう」って3つ前の全寮寮長も言ってたし。

イベントとか

予餞会、名ばかりの新入生歓迎会、などなど(2年前の「たのしい潮寮生活」参照)は健在です。体育大会などは出なくても何も言われませんでした。「3年からは上級生」という風潮はまだありますね。この辺はよくわかりません。

長期の留学生が増えた(気がする)

ドイツやザンビア(だったかなあ…)からも来ているみたい。イスラム教徒もいるので、食堂で隣り合わせたりすると左利きの筆者は「不浄の手でメシ食ってすいません…」と思ってしまいます。国際交流センターに加え、A,C寮にも滞在するようになったので顔を合わせる機会も多いです。夜は食堂が開放されていて、留学生のRA(Residence Assistant)として割り当てられた日本人学生と一緒に互いの言語を学んだりしているようです。

細かいことをいうと、A寮に指紋認証が入ってドアが閉まるようになったので、深夜は外に出づらくなりました。たぶん。

筆者の部屋

恒例の写真です。移動直前に撮ったのでかなり汚いです。

部屋全体像

一人部屋に移った でもちょっと書きました。潮寮では毎年2月・学年末試験明けに部屋が変わります。新入生・新2年生は二人部屋、新3年生以上は一人部屋というのが通例です。筆者は3階の一人部屋に住んでいました。昨年の改修は1・2階のみだったので、3階は ボロい 昔ながらの雰囲気が残っています。

昨年と逆側なので、部屋から食堂の様子が伺えないのがちょっと残念です。風呂に向かう人々の騒ぎ声は聞こえなりましたが、向かいのB寮の入り口から指紋認証のエラー音が聞こえるようになりました。寒い時期に6回ぐらい失敗しているのが聞こえると気の毒になります。

窓

窓も独り占めです。横付けでベッドを置いて寝られると、日光が入るので起床が楽になります。庭の木で春夏秋冬の移り変わりを感じられます。葉を青々と伸ばす夏、そして散らす冬。日の出と時を同じくして目覚め、オリオン座とともに眠りにつく…。仰向けになって空を流れる雲を目で追いながらぼけーっとするのが楽しいです。まあ普段はブラインド閉めっぱなしでほとんど外見ないんですけど。

周囲の環境

うるせえ! なんか無限に運が悪くて、周りの部屋に騒がしい人が集まってきました。

向かいの2人部屋

Pioneerのターンテーブルがあって、現地のDJによるEDMのミックスがほぼ毎日楽しめます。年度始めはどこかで聞いたことがある曲ばっかりかかっていた気がしますが、最近はそうでもないので、成長はしているようです。知らんけど。

寮務から注意してもらったようですが改善されませんでした。周囲がそこまで気にしないのに自分だけがいうのはまずいかなーと思って静観しつつ、たまにドア越しに怒鳴っていました。しかし当のDJはどこ吹く風。強烈なドロップは筆者の不満さえも吸い込んでしまうのでした。

隣の部屋

3E寮生御用達ゲームセンター。マインクラフトとモンスターストライクがメインだったけれど、最近は麻雀も楽しんでおられるようです。さすが旧ゲーム制作同好会の長。造詣が深い。

隣の大部屋

大部屋には2年生1人と1年生3人みたいなバランスで住んでいます。で、そこにお友達が大量にくるのがお決まりのパターン。ドアを開けたまま騒ぎやがるのでトイレに行くついでにしょっちゅう閉めています。新入生歓迎会・挨拶まわりで浮かんだ同情心がわずか数日で吹き飛びました。学年末試験が近くなると、「勉強するならよそでやれ」と ワード アート モリモリ の警告文がドアに貼られました。2年生が見かねて貼ったのでしょう。自分もそうすりゃよかった。

補食室

たまに人々が集まって料理してます。たまに夜中にチヂミを作って騒ぎ倒す集団がいます。

以上は極端なケースです。騒音が嫌な人は大部屋の隣を選ばないようにしましょう。平均の音量でいえば学校の教室よりかはマシなんですけれど、生活空間でこれだとちょっと疲れるので、耳栓でなんとかやり過ごしました。

3年になってから…

3年といえば、消灯なし! 個人的には前と変わらず23:30ごろに寝ていますが、ときどき資料作ったりレポート書いたりするのに夜更かしできると便利です。朝の点呼とラジオ体操もなくなりました。地味にいい話。鍵を自由に閉められるのも大きかったです。二人部屋だと同部屋がいるので閉められないんですよね。プライバシーが尊重される感じがして落ち着きます。

一言で言えば、気楽です。

対してデメリットを挙げるなら、上に挙げた義務がなくなるので、生活の崩壊リスクが高まります。何度か寝坊(絶起)しました。基本的に耳栓とアイマスクをつけた状態(この時期はマスクも)で眠りについているので、深い睡眠と朝の放送が重なると目覚められません。授業が始まって数十分経ったら寮務が起こしに来るけれど、それも、ねえ…。

人間関係

一人部屋になると「同部屋の先輩・後輩」として知り合うルートがなくなるので、1年生の知り合いはほとんどいません。コミュニケーションの機会は部活と週一度の掃除以外にほぼありませんでした。

同級生が隣の部屋だったので、互いの誕生日は人呼んで集まってカードゲームなどをしたり、たまに後輩の部屋で話したりするのは変わらない点でした。でもやっぱり、総合して人との会話量は減ったかなあ。ひどい日だと1日25分のオンライン英会話以外の会話をしていません(それは寮ではなく本人の問題では?)。

おわりに

楽しかったA寮ともお別れして、次はいよいよ壁の薄さが評判のC寮です。A寮でも隣の部屋のコンセントを使う音が聞こえるのに、一体どうなってしまうんだ…。とはいえ来年のこの時期は編入試験で忙しそうなので、書けるかわかりません。もっとこのシリーズパクられないかな〜

よくわからない箇所等あれば @sei0o もしくはコメントにお願いします。

フォローとミュート

Twitterフォローしているユーザを全員ミュートするスクリプトを書いた。このスクリプトTwitterアカウントに適用するとフォローしているユーザが全員ミュートされ、タイムラインには自分のツイートだけが表示されるようになる。ツイートを読みたいユーザだけをミュート解除する「ホワイトリスト」方式でタイムラインを再構築できる。

Twitter APIの実行制限により、実行にはちょっと時間がかかるので注意。自分の環境では200ユーザをミュートすると制限に引っかかって15分待たせると制限が外れた。この15分という値は公式のドキュメントから引っ張ってきたもので、もしかするともう少し短くても大丈夫だったかもしれない。

わりと「ミュートするぐらいならフォローを外せばいいのでは?」「ブロックしちゃえよ」というツイートをよく見るので、それらに対する反論とまではいかなくても、これを作った理由について書いてみる。

まず、フォローに関する考え方がユーザによって大きく違うということが挙げられる。たとえば自分の場合、個人的な知り合いはフォローするのが原則で、その次にツイートがおもしろいかそうでないかというのがフォロー・アンフォローの重要な判断基準として来る。同じ学校でも学級・学科が違えば知り合いでもないし、そんなに興味の方向が一致するわけでもないので最近はフォローしないし返していない。ただ相互フォローという状態は長くもつことが多いため、入学の時期などは新入生に情報を流すためにもフォローを返していた。

しかし他のユーザは他の判断基準を持っている。以前学校の人のアカウントのフォローを解除したとき、後にその人が「どうしてsei0oにフォロー外されたんだろう」というツイートが、例の「○○さんがいいねしました」によって流れてきた。フォローを外した理由としては単純にツイートに興味が持てなかったからなのだが、その人にしてみればそれだけでフォローを外されるのは少なくともツイートする程度には意外だったということだろう。自分がオタクである以上興味の範囲も狭く、どうしようもなさそうとはいえ、あえてそういう驚きを与える必要もないので相手に知られないミュートを活用するようになった。

別の言い方をすると、フォロー機能を「発言に興味があります」と「〇〇さんですね、知っています・仲良くしましょう」という2つの意味にまたがって利用しているところが自分にはあって、他にもそういう使い方をしている人がそれなりにいそうだと感じている。もともと意図されていたのは「あ、この人おもしろそうなことやってるな」という前者の使い方で、対して実際には、会ったらTwitter交換して相互にフォロー、というような流れが勉強会などでしばしば起こる。これには後者のニュアンスがある(発言を見て判断しているわけではないから)。「個人的な知り合いはフォローするのが原則」と先に述べたのもこっちの意味合いが強い。特にフォロワーが多い場合など、純粋に前者の意味だけにフォロー機能を用いているユーザもいる。

次に、同じ内容を繰り返し見たくないと思っていたから。自分がフォローしている界隈だと、高専ネタとか「科学技術予算が足りないぞ〜」系、診断メーカー系も見飽きている。数日〜数週間で過ぎ去る炎上なども同様で、最近ならISUCONやホワイトボードの落書き、ちょっと古い話題なら京アニCoinhive事件・さくらんぼ計算が良い例。普段興味深いツイートをしている人がこういうのをリツイートしていると、なかなかやりづらい。そこでミュートをよく使っていた。ところがユーザのミュートは時限を決められず、手動で設定・解除しなければならないので億劫かつ間に合わない。そしてそのようなツイートを一度見てしまったという不快感は取り消すことができない。

口が悪い人やいつもよく喋る同級生についても、普段はミュートして気になったらアカウント名で検索して見に行くという方法を採っている。なんとなくこれを広げて「全員ミュートしたらどうなるかな?」と思ってスクリプトを書いた。結果はこれから使ってみないとわからない。

ちなみにリストは作るのも面倒かつアクセスするのも面倒なので使っていない。Twitterアカウントを他サービスの認証に利用していて、連絡もTwitterで取ることが多いため、Twitterをやめるというのも考えていない。

言葉にしてみるととなかなか微妙な話題で、うまく理由としての論理がまとまっていない気がする。まあいろんな使い方があるツールだと思うので、自由に使ってください。

セキュリティ・キャンプ全国大会 2019 に参加した #seccamp

IPAが主催する セキュリティ・キャンプ全国大会 2019 の 集中開発コース リバースエンジニアリングゼミ (X-IV) に参加した。以下は参加記。ちょっと量が少ないけれど、一晩寝かせても特に何も思いつかなかったので公開してしまう。

来年度以降参加する人へ

  • ゼミのSlackと全体連絡のkintoneは両方見ておこう
  • 名刺はいつでも持ち歩こう
    • 財布や名札に十枚程度入れておくと便利
  • いろいろもらえるので、スーツケースには少し余裕を持たせておこう
    • OS自作入門換算で1.5冊

https://i.gyazo.com/db4e3b51d39f7b38556ed3c219736387.jpg ↑いろいろ


当日の朝、大阪から新幹線にスーツケースと頭痛を持ち込んで移動。中国から来たという人に熱海の場所を教えたりしていた。少し早く着いたので適当に時間を(あえて各停に乗るなどして)潰しつつ入場。荷物を預けてすぐにレストランで昼食を取った。いきなり名刺交換が始まっていた。それからは全体向けの講演を3つ聴いた。往路の疲れとオカムラの椅子の心地よさで途中少し眠くなってしまったが、アクエリアスに救われた。

LT大会

複数のLTが同時並行で行われたのでどれかを選ぶ必要があったが、優柔不断なので会場の中央からどのスクリーンも目に入るような位置で眺めていた。GPUをCPUにしていたり、reCAPTCHAにツッコミを入れたりしていて聞いていて楽しかった。

企業紹介

企業の方の仕事内容についてのプレゼンを見た。Incident Responseや社内環境の整備だけではなく、マルウェア解析といったリサーチ職を金融系の企業でも設けているのが意外だった。事前アンケートは答えましょう。

ところで就活はまだ先。コンピュータやセキュリティそのものは一応好きだ/興味があると言えるのに対して、それで食っていくとか向いているとかそういう話になるとまだ自信が持てないでいて、むしろこういうイベントに参加させてもらうたびにその自信が削れていく気がしてアレ。セキュリティ業界で働くのではなく、セキュリティの有用性を知ってもらうというのがキャンプの目的らしいので、受講生として歓迎されないわけではないものの。

https://i.gyazo.com/322291b82fab863db732835cbcea484d.jpg ↑いろいろ (2) あるところは企業紹介でTシャツもらったらしい

グループワーク

昨年までのやり方は知らないのだけれど、今年からやり方が変わったらしい。「キャンプが終わってから何がしたいか」という共通点でチームを作り、講師やチューターに話を伺いつつ「どうやるか」「まず何をするか」の部分を固めてまとめる、という内容だった。自分たちのチームは「技術商業誌を出そう」というテーマになった。(同人誌ではなく)商業誌、をあえてゴールにしているのも講師のアドバイスによるもの。聞くといろいろ情報を引き出せてやっぱりすげえなあ〜となる。いろいろな人がいて楽しい。

イベントが終わってから何かを続けていくのには仲間が必要というのはよく言われることで、しかしながら学校やオンラインではその仲間を見つけるのが一番難しいというのがあるある。今回のグループワークでは知識のアウトプットとして本を書くというテーマで他の受講生と集まることができたので、モチベーションを維持してなんとか形になるものを作りたいなあと思っている。

講義

事前課題では主にハードウェア面(SPIとかUARTとか)を扱う方法を学んでいたが、結局ずっとソフトウェア周りであれこれリバエンしていた。rootを取ったので root取っ太郎 になった(ゼロデイ見つけたとかそんな偉大なことをしたわけではない)。内容を詳しく書けないところからリバエンゼミらしさを感じ取ってほしい。見た目がわかりやすいので人が集まってきてワイワイしながらいろいろ教えてもらえたのでお得だった。他のゼミが隣のテーブルで講義していて、何をしているか見られるようになっているのがよかった。まだまだ気になる部分はあるので、寮に戻ってからいろいろやってみる。

講義が終わって風呂入ったらすぐに寝てしまった。もうちょっといろいろな人といろいろなことを話せればと思った。そういう点は相部屋のメリットかなあ(SecHack365と対比して)。積極性に問題があったかもしれないし、純粋に疲れてるのもあった。

最終発表

4分ぐらいで自分が何をしたか発表した。一番ネタっぽいプレゼンだったと思う。その証拠として本来ならばスライドをアップロード…したいとはいえそれもなかなかマズい感じなので1枚目だけ貼る。1枚目でも十分マズいかな。言い訳しておくと「root取っ太郎」は自分で名乗ってたわけではなくて、講師の黒林檎大先生が推してきたものです。

https://i.gyazo.com/9b79f24d59234070ad9e432a6171e6ab.png


インタビューを受けてほしいと依頼されたので部屋に向かうと、キャンプ前と後で変わったこと・感じたことを即席で考えてほしいと言われ、(ちょっと相談したけど)カメラの前で手短に喋った。その合間に(本業がマルウェア解析の)カメラマンの方と互いの経験とか思いについて話していたのだけれど、時間切れでその後続きを話せなかったのが少し残念。そういう途切れた状態のほうが印象に残るかもしれないが…。インタビューの動画は後日Youtubeにアップロードされるはず。修了証をゼミの代表で受け取った後にも感想を喋ることになった。前日のインタビューが考える準備になっていたとはいえ、やはりいきなりだったので何を喋ったか自分でもよく覚えていない。ツッコまないで。

他のいろいろな場所で会った人と再会できた。Life is Tech!とか明石高専祭とかミニキャンプとか。不思議なもんですね。あと案外お互い顔を覚えている。

寝る間もないとか、一発パンチを食らわされるような衝撃とか、そういったものは(残念ながら?)なかったが、GMの上野さんの閉会式での言葉を借りると「ボディーブローのようにじわじわと」自分に影響を与え続けるものにこのセキュリティ・キャンプはなる予感がしている。5日間ありがとうございました。

セキュリティ・キャンプ全国大会2019の選考に通った

セキュリティ・キャンプ全国大会2019の書類選考に通って集中開発コースのリバースエンジニアリングゼミに参加できることになったので例に倣って応募課題とそれに対する自分の解答を置いておきます。応募は2,3回目で2年前に応募して不合格になっていました。昨年はSecHack365などで夏の予定が埋まっていたので応募しませんでした。

応募用紙

問1: 今までにリバースエンジニアリング(分解や解析など)した経験を好きなだけ語って下さい。対象はソフトウェアやハードウェアに限定しません。

ICカードリーダ

秋葉原のジャンク街でSONYのRC-S310を300円で買いました。RC-S310は2001年発売なので私の同期です。公式のホームページに「NFCポートソフトウェア」なるものが転がっていて、現在公開されているRC-S310対応のプロダクトはこれだけでした。

当然Windowsでしか動作しないのでVirtualboxで動かしつつWiresharkでUSBの通信を見てみると、カードをかざしたり外したりするたびにずらずらパケットが流れるのが見えましたが、結局どれがどういう意味を持つパケットなのかわからずに終わってしまいました。FeliCa(NFC)規格とPaSoRi(カードリーダのブランド)のパケットがごっちゃになっているのかなあと予想しました。

libpasoriやlibpafeといったライブラリが開発されていましたが、いずれも動作しませんでした。中古のWindows機を手に入れたので、うまいこと解析して部室の鍵開けを使い道のないICOCAなどでできないだろうかと考えています(電通大MMAのKagisysのイメージです)。

MacのACアダプタ

5年弱使っていた純正のMagSafe1 ACアダプターが断線してしまったのでAmazonから安い非純正品を買いました。

使い始めてから1年ほど経ったある冬の夜、部屋のベッドに座って壁にもたれつつ脚を伸ばし、そこに掛け布団を敷いた上にさらにMacBook Proを載せて使っていました。 そうするとすぐ寝落ちしてしまいました。1時間ほど経って目が覚めました。

Macを充電していたケーブルを取り払おうとアダプタに触ると…熱い!いままでとはひと味違う熱さと焦げ臭さを放っています。布団に長時間挟まれて熱がこもっていたようです。

Mac用ACアダプタは白い角丸ボディが特徴で、その非純正品もデザインを踏襲していました。しかし目の前にあるアダプタは変形して工業製品というより粘土工作のような形になっています。 つなぎ目の部分があらわになっていて、爪を入れて力を加えると中の電気部品が見えます。

その後数ヶ月ほどで完全に充電できなくなってしまったので、新しいアダプタ(やはり非純正品)を注文した後に変形したアダプタを分解してみました。 ケースのつなぎ目に(物理的な)鍵を差し込み「てこ」のようにしてこじ開けると、白い長方形の基盤にコンデンサやトランスが載っていました。2辺は金属板に挟まれています。よく見るとケース内部に焦げたような跡もあります。 基盤とケースもボンドのようなもので雑に固定されていたので、また鍵を隙間に差し込み外しました。 基盤の裏側には厚膜チップ抵抗(調べて名前を知った)が十数個ハンダづけされています。「新HD60P02A」と型番がプリントされています。

見るだけでも楽しいですが、せっかくなので部品を取り外すことにしました。 はんだごでではんだを熱して、液状になったのを向こうに弾き飛ばすという怪しい方法を使います。学校の実験で先生が「あんまり推奨される方法ではないけど...」と言いながらやっていたのを真似しました。はんだ吸い取り線は持っていません。

外側からケーブルとの接続部分、金属板、よくわからない素子、というように外していきました。小さい部品は大変でしたが一個一個外していくと基盤表面の印刷が見えてきました。金属板があった場所には「HS2」と書いてあったのでたぶん放熱用のヒートシンクではないかと思います。 大きなコンデンサやトランスも収穫できました。使いどころはありませんがそのまま取っておいて、いまの充電器が変形したら分解して比較するつもりです。

MacBook Pro (2012 Mid)

突然電源がつかなくなってしまいました。Macが動かなくなった際の常套手段であるPRAMやSMCのリセットを試しても変化がありません。 いろいろと調べるとバッテリーを付けて取り外すこと(放電)で直るかもしれないとわかったのでドライバーを借りてきて分解し、無事起動することができました。このMacは古いのでまだネジが公の場に姿を表しています。知り合いの薄いMacBookを見るとネジ穴もポートもないので、なんだかなあと思ってしまいます。この件以来Macの分解をよくするようになりました。

情報工学研究部の部長として、コンピュータの基礎的な部分を講義することがあります。そんなときもどこからともなくドライバーを取り出してMacの裏蓋を外し「これがSSDです」と見せると下級生もドン引きして印象に残るようです。 また、これは分解ではありませんが作業中にFキーとNキーのカバーが飛んでいきました。カバーの下のゴムが丸見えになって、メンブレンキーボードの仕組みがよくわかるようになりました。

CTFのrev, network, android rom

最近はあまりプレイできていないのですがCTFが好きです。その中でもpwn/Binary exploitation・reversingといったジャンルを好んで学んでいます。低レイヤに興味を持ったのも、NICT主催のSecHack365というハッカソンに参加したのも元をたどればCTFがきっかけで、そこではコンパイラ(LLVM)やエミュレータ(QEMU)の改造をしていました。成果発表会で使った[ポスター] (https://sechack365.nict.go.jp/achievement/2018/?2018-34) が公開されています。

Android, iOSアプリを解析する問題もあったので、mitmproxy, otool, Fridaなども使ったことがあります。ARMアセンブラは勉強中で、まだx86とPICのそれしか読めません。

ブログ

普通の電卓

昨年の夏頃に中華人民共和国・某省某所のとある工場長の方からTwitterのDMで連絡をいただき「電卓を作りたいんやけど手伝ってくれん?」と連絡があり、いろいろと自分なりに調べていました。 とりあえず既存のものにどういう部品が含まれているか見てみようということで安い電卓を仲間で集まって分解してみました。 外から見える部品には7セグのディスプレイ・光電池パネル・ボタン用に穴が開いたフレーム・多数のボタン。ボタンはシリコンで出来たシートの突起と噛み合っていて、ボタンを押すと突起の裏側にある黒い膜がPCB基盤の丸い部分に触れる仕組みになっています。

PCB基盤をひっくり返すと「CT060」という型番らしきものが刻印された緑色の面があります。7セグディスプレイがフラットケーブルで接続され、ボタン電池が基盤のホルダーのようなものに入っています。電卓を買ってきて光電池を充電しなくてもすぐ使えるのは基盤に直でボタン電池を取り付けているからだとわかりました。明るい緑色で少し光沢を持った線が多数伸びています。その線は基盤中央から少し上にある黒い円に入っていきます。この中に計算を処理するチップが入っているのではないかと推測しました。黒い円はエポキシ樹脂という熱硬化性をもつ素材です(おそらく)。 円形の黒いエポキシ樹脂を溶かして覆われたチップを取り出す方法も見つけました。「熱硬化性の素材は一度固めると特殊な溶剤なしには溶かすことができない」というオンライン辞書の記述は一度無視することにしました。

https://www.youtube.com/watch?v=OiPe6f4Oh8E では熱湯に基盤ごと入れて熱する方法が紹介されていました。一般的なエポキシ樹脂のガラス転移温度(Tg; この温度を越えるとやわらかくなるらしい)は75℃のものから250℃を超えるものまであるので、水を沸騰させて100℃にすれば電卓の樹脂も溶けるかもしれません。実際に試したところ、何の変化も得られませんでした。

次は https://www.wikihow.com/Remove-Epoxy で見つけたはんだごてで熱する方法を試してみました。普段使っているはんだごては30W, 480℃なので熱湯よりは期待できます。実際に熱したはんだごてを当てて数十秒待つと黒い樹脂の表面がぬるぬると溶けてこて先が滑る感覚がありました。これならいけそうだと思い1時間ほど当てて見ると、1mm四方取り除くことに成功し下の基盤が見えました。円は半径8mmほどで、面積はπ88=201mm四方です。201時間はんだごてを当て続けるのは定年退職後の暇つぶしにとっておきたいので、別の方法をあたることにしました。

とにかく高熱に当てればよいことがわかったので、部屋にあったオーブントースターで基盤を熱してみました(これもどこかのサイトに書いてあったことですが、リンクをなくしました)。しばらく放置しておくと「ポン!」と破裂音。基盤を取り出すと小さくて気づかなかったLEDが赤く光っています。ボタン電池を取り外さずに熱して、回路がショートしてしまったようです。電卓の筐体の外から見えない場所になぜこのLEDが存在するのかはわかりません。基盤は熱でプリントが膨らみところどころ気泡ができていました。PCB基盤の層構造を体感しました。

見つけたアプローチの中でまだ試せていないのがヒートガンで熱する方法です。これ以外に使用する場面がなさそうで購入をためらっています。

関数電卓

エポック樹脂が剥がせなかったので、他の電卓を探して分解することにしました。古い関数電卓なんかは樹脂で覆われていない場合もあるそうなので、メルカリの500円クーポンを使って490円の中古関数電卓を買いました。複素数の計算すらできないCASIOのfx-290です。届いてからさっそく分解してみると…そこには黒い光沢のエポック樹脂がありました。蓋をそっと閉じて、いまは机の引き出しの奥に眠っています。

BLEな電球

どこかの勉強会のスライドを見て触発され、IoTなハッキングがしたくなったのでAmazonで安いBluetooth対応の電球を買いました(「Matchdor」というブランドで今は見つからず)。 スマホと機器間のBluetooth通信を取ってくる方法としてAndroid端末でHCIスヌープログという機能がよく紹介されています。しかしiPhoneしか持っていなかったのでApple公式のデバッグ用プロファイルを導入するなどしてなんとかログを取ってきて読んでみましたが、これもGATTなどプロトコル周辺の関係がよくわからないまま放置されています。

家の古いルーター

802.11nにすら対応していない家のBUFFALO製無線LANルータ(型番はWHR-AMG54)につながりづらくなってきたので新しいルータを卒業式の帰りに買ってきました。

古いルータは特に使い道がなかったのでバラしてみました。どことなく年季が入っていてホコリだらけです。中に緑色のPCB基盤が入っていて、BroadcomとEtronTechという会社のチップが見えます。

基盤の印刷を見ていると端の方に「WHR4-AG54A REV:XC」という表示を見つけました。製品の型番と似ても似つかない名前なので検索してみると中国語のフォーラムが出てきました。JTAGのポートが装備されているようです。データを読み出す方法がわからなかったり調べてみるとbaudrateを特定するのに別途キットが必要だったりすると知って以降は触ることができていません(Bus Pirate・Shikraといったハック用のツールや、汎用的に使えるオシロスコープ・ロジアナもどれがよいのかわからなくて定期的にAliexpressを覗いては足踏みしています)。

問2: あなたが今一番リバースエンジニアリング(分解して仕組みが知りたい)したいものを紹介して下さい。

この前頼まれて実家のテレビでAmazon prime videoが利用できるようにFire TV Stickを購入・接続しました。 Fire TV Stickは無線LAN経由でインターネットに接続して動画をダウンロードし、それをHDMI経由でテレビの画面に流すものです。あの小さい筐体の中に何が入っているのか気になります。

パソコンでprime videoを視聴しようとするとContent Decryption Module (CDM)なるものをインストールされました。DRMのために使用されているようです。prime videoで利用されているのはWideVineという種類で、他にもPlayReadyというのが人気のCDMです。よってパソコンの代わりとして映像を受け取るFire TV Stickにもそういった復号モジュールが入っているのではないかと予想して、楽しそうだなと思いました。

これを操作するリモコンにはAmazon Alexaに対応した音声認識機能がついています。後述するように昨年Amazon Alexaスマートスピーカー(Echo)を使った開発をして知識が少しあるので、それとの違いにも気付けるかもしれません。スマートスピーカの分解も楽しそうです(https://vanderpot.com/Clinton_Cook_Paper.pdf )。https://www.amazon.co.jp/Fire-TV-Stick/dp/B01ETRGGYI#tech (技術仕様) によると、プロセッサはARMアーキテクチャのものを採用しているようです。詳しい型番は書かれていません。

問3: 以下の技術用語について解説してください。またどのようなところで使われているかも述べてください。

「UART」「JTAG」「SPI(Serial Peripheral Interface)」「I2C(I-squared-C)」

UART

Universal Asynchronous Receiver Transmitterという原語が示す通り、マイコン等と非同期通信をするための規格。データ転送速度はボーレートで示され、9600baudがよく用いられる。 一つのパケットに入るペイロードの長さは5〜9bitであり、その前後には送信の開始・終了を知らせるための特定のビットを付け加えるためデータ量は大きくなる。また誤り修正のためのパリティビットが付けられる場合もある。

端子は信号送出側のTXと受信側のRXのみであり、互いのTX端子を互いのRX端子に接続するので送信と受信は同時に行える。JTAGやSPIのように3つ以上で相互に通信するにはTX, RX端子をまた別途用意する必要がある。 たいていのマイコンではUARTやその同期通信バージョンであるUSARTが利用でき、センサ等と通信できるようになっている。また、外部からのデバッグや検査のために機器と通信できるように基盤にUARTポートを設ける場合も多く見られる。そういった機器の例としては家電製品やIPカメラが挙げられる。

JTAG

Joint Test Action Groupの略で、基盤の検査・デバッグに用いられる端子・検査方法(バウンダリスキャンテスト)の規格。半導体技術の進歩で基盤上の素子の密度が上がり、プローブを手で差して測定器(オシロスコープとか)を見て検査するやり方が難しくなったために作られた仕組み。端子にはTDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS(Test Mode Select)、オプションのTRST(Test Reset)がある。

もともとはバウンダリスキャンテストに用いられていた。バウンダリスキャンテストは基板上でICとICをつなぐ導線がショートしたりちぎれたりしていないか確かめるためのテストで、検査用のビット列を入力して、それに対応する出力を見ることで検査する。JTAGが普及する以前は導線を一部太くしてテスト用のランドを設けプローブで検査できるようにしていた(イン・サーキット検査)。代わりにJTAGではIC内部(入力・出力ピンと処理部分の間)にテスト用のセルを設けることで、ICの外の基盤の構成をよりシンプルにできるようになっている。また、単なるランドではなく回路としてのセル(プローブとランドを合わせたようなもの)を挿入することで、導線を横切るようにセル同士をつなげられる。さらにそれぞれのICでつなげたセルたちを(TAPコントローラのTDI/TDO端子を介して)デイジーチェーン接続することで機器全体の検査が少ない端子で行えるようになった。

ICごとに付けられるTAP(Test Access Point)コントローラはTMS端子からの入力によって「ステート」を切り替え、TDIから命令をIR(Instruction Register)に流し込むことで動作を切り替える。

DRにはBYPASSレジスタ, IDCODEレジスタ, バウンダリスキャンレジスタなどいくつか種類があり、IRの値に応じてどのDRを操作するか決定する。 IRに格納される命令は規格で定められているものもあれば、メーカが独自に拡張するものもある。

  • BYPASS命令はTDIから入力されたビットをBYPASSレジスタに入れてそのままTDOから出力する命令。1ビットのBYPASSレジスタに一度貯めることで1クロック出力を遅らせる効果があり、機器全体ではTAPコントローラの数だけクロックが遅れる。その遅れを観測することで機器内のTAPコントローラの数が合っているか確かめることができる。
  • SAMPLE命令とPRELOAD命令はバウンダリスキャンレジスタを通じてデバイスの入出力を取得し、同時にバウンダリスキャンレジスタにテストパターンを書き込むことができる。厳密にはこの2つは異なる命令だが、同じSAMPLE/PRELOAD命令として動作させることが推奨されている。
  • EXTEST命令はバウンダリスキャンレジスタの値をそれぞれのピンから出力する命令。また、その出力を入力として受け取る側でCapture, Shift, Update-DRステートに移行することで入力を取りだせ、テストパターンを比較することでバウンダリスキャンの結果を知ることができる。
  • 他にもINTEST, IDCODE, RUNBIST, CLAMP命令などがある。

ステートについて、

  • Shift-IRステートではTAPのIR(Instruction Register)にTDIから命令(メッセージ)を流し込むことができる。同様にShift-DRステートではDR(Data Register)にデータを流し込むことができる。
  • Capture-DRステートでは回路の情報を取得してDRに格納する。逆にUpdate-DRステートではDRの値を回路の別の場所に格納する。具体的にどのような情報を取得するかは命令に依存する。
  • Update-IRステートではIRに格納された命令を実行する。Capture-IRステートでは「ステータス」と呼ばれる値をIRに格納する。

JTAGでは先述したようにメーカ・モデルによってさまざまな拡張がなされている。拡張の一部を知るためにはメーカが提供するBSDLファイルを用いることができる。他にもARM製プロセッサに搭載されているCoresightというデバッグシステムや、JTAGの4本の導線を2本に減らして派生したSWDという規格があるようだが、JTAGとの関連はよくわからなかった。JTAG-ICE(In-Circuit Emulator)と呼ばれるデバッグ用の装置もあるが、単純にJTAGポートに接続してデバッグを行うこととの違いは不明である。

製品検査のために策定されたということもありUART同様さまざまな機器の基盤にデバッグ用のポートが設けられている。逆に、機器内で完結する通信(センサ-マイコン間など)については他のプロトコルがより用いられていると思われる。個人的には最も身近な例として先述した実家のルーターが挙げられる。この基盤のBSDLファイルは入手できなかった。

SPI

Serial Peripheral Interfaceの略で、機器に入っているICが他のICと通信するためのプロトコル。数Mbps程度で比較的高速に通信できる。 端子にはSCK(Serial Clock), MISO(Master In Slave Out), MOSI(Master Out Slave In), SS(Slave Select)がある。SCK(Serial Clock)があることからわかる通り、SPIはクロックで同期を取って通信する点が非同期通信のUARTと異なる。また、SPIでは接続されたICは1つのMasterと複数のSlaveに分けられる(Masterは多くの場合マイコン)。MISOはSlaveからMaster、MOSIはMasterからSlaveへの通信に利用する。SSは複数のSlaveのうちどれと通信するか選択するために用いるもので、通信したいSlaveとのSS出力だけを0にセットする(通信しない状態では常に1)。これらのためにUARTやI2Cよりも必要な接続線が多くなっている。

JTAGではTDIとTDOにデイジーチェーン接続を用いていたが、SPIのMasterとSlaveの接続はスター型をとることもできる。それぞれのSlaveと別々に通信したい場合はSSを分けMOSI, MISOをスター型に接続する。逆に複数のSlaveをまとめて一つと捉えたい場合はSSを一本にしてMOSI, MISOをそれぞれ前後に隣接するSlaveにデイジーチェーン接続することができる(MISO, MOSIのMaster側は必ずしもMasterそのものである必要はなく、Masterからの信号が間接的に渡されてくればよい)。この場合は1クロックずつずれてデータがSlave間で転送される。しかしながら、デイジーチェーン接続に対応していないデバイスも存在する。

またMaster側のSPIコントローラのレジスタを通じてCPOL(Clock Polarity)とCPHA(Clock Phase)を指定することで、アイドル時のクロック信号を1と0のどちらに固定するかやクロックの立ち上がり・立ち下がり時の処理を指定することができる。

Intelが拡張したeSPI(Enhanced SPI)という仕様も存在する。Alertという端子を追加して、SlaveからMasterにイベントを通知できるようになっている。

どちらかといえばセンサとマイコンマイコンとアクチュエータ間といった機器内の通信用に主に用いられている。

I2C

Inter-Integrated Circuitの略。SPI同様機器内の通信に用いられる。UARTと違って同期通信ではあるが、先頭と末尾に一定のパターンを加えてからメッセージ単位で送信する。 端子にはデータを送受信するためののSDAとクロックを供給するためのSCLがある。

UARTでは1対1の通信しか行えなかったが、I2Cではメッセージに宛先アドレスを含めることで多対多のネットワークを構築できるようになっている。SPIと同じくMaster・Slaveという区別を採用していて、通信はMasterから始める。Masterも複数接続できる。メッセージのRead/Writeビットを切り替えることで、MasterからデータをSlaveに投げるのか、それともSlaveからデータを送るよう要求するのか区別している。

メッセージには任意個のデータフレームを含めることができる。それぞれのデータフレームの長さは8ビットで固定である。データフレームを送信する前後で受け取り側は送信側にACK/NACKビットを返答する。ACK(Acknowledge)はTCPのそれと同じ意味で、データを正しく受け取った場合はACKとして1を、そうでない場合はNACKとして0を返す。

こちらは機器の基盤にポートが設けられている例は見つけられなかったが、温度センサなどでSPIを介して通信できるようになっているものは多数見受けられた。

参考文献

問4: 安全なファームウェアアップデートとは何ですか? もし、それができると攻撃者はどのような攻撃ができますか?事例などもご存知であれば合わせて紹介してください。

実はこの設問の意味が理解できていなくて(「それができると」のあたり)、全くトンチンカンなことを書いているかもしれませんが容赦ください。 安全なファームウェアアップデートを行うためには、ネットワークを経由してダウンロードしたファームウェアがベンダ正規のものであり、改ざんされていないか確認するため、アップデート時に署名を確認させるのが有効です。

バイス側の鍵は(使用するのであれば)専用のセキュリティチップ、TPM(Trusted Platform Module)やARMでいえばTrustZoneのような仕組みを活用して隔離した場所で管理すべきです。そのような鍵にはたとえばベンダの公開鍵そのものの正当性を確認するためのルート認証局の公開鍵や、共通鍵暗号を利用する場合はその共通鍵が考えられます。また鍵を別に用意してファームウェアそのものを暗号化するベンダもあります(Philips, Samsungのテレビなどがそうだったように思いますが、リンクを失くしました)。

これらの対策ができる場合でも、攻撃者はアップデートに関係しない部分からファームウェアを改ざんするなどして攻撃を加えることができます。基盤のデバッグポートを利用したりチップを取り外したりして、もしくはファームウェアそのものの脆弱性を突いて(スマートテレビのOSコマンドインジェクションがわかりやすい例)ファームウェアをダンプし、解析・改造して書き込み直すといった方法があります。

問5: 何か他にアピールしたいことがあれば、自由に書いてください。誤ったことを書いていても減点はしません。書いておきたいことはなんでも書いてください。

問1で述べたとおり、何かを分解するのはそれだけでも楽しいのですが、毎回その仕組みがよくわからないまま終わるので何か一つでもしっかり解析してみて流れ・コツを掴みたい、またseccampでしか学べない最新の技術に触れたいと思い応募しました。

昨年度の全国高専プログラミングコンテスト(高専プロコン)の課題部門に出場しました。私の学校のチームは「スマートコンシェルジュ」という民泊事業者と外国人宿泊者をスマートスピーカ(Amazon Alexa)を使いつなげるシステムを構築して出展しました。例えば家電の操作を宿泊者の母国語でできるようにしたり、近所の有名なスポットを教えてあげたりということができます。当日はブースを構えてデモを行う必要があったので、何らかの家電を見に来た人に声でライトの電源を操作してもらうことにしました。そのためにはコンセントからの電源入力を遮断・導通できるいわゆる「スマートプラグ」が必要になります。Amazonで普通に買っても良かったのですが、せっかくなのでいろいろと調べて自作しました。電源ケーブルの片側を切断したところにRaspberry Pi制御のリレーを差し込むという単純なものです。そうやって切ったり付けたりして何かを作るのはずっと好きですし、学校でもなぜか電気のことを学んでいるので(コンデンサ・共振・三相交流etc…)何かハードウェアにも活かせないだろうかと考えています。

以上です。よろしくお願いします。

前回応募時との比較

2年前の5月に応募して不合格だったときといろいろ比べてみました。スキル面でいえば、もともとWebとiOSメインだったのが、競プロやってAtCoder水色になったり(もう一年半近く参加してないけれど…)CTFの手で動かしていろいろ学んだり、それが転じてSecHack365に応募してコンパイラを改造したり、というレイヤが下がっていった感じです。結果的に知識を広く浅く身につけることになったと思います。選択問題のあるコースでは今のほうが選べる手札が多いはずです。何かに絞ってがんばろうというのは何度かやってみましたが飽きて続かなかったので諦めました。

SecHack365でお世話になったトレーナーさんにもキャンプ講師を務めている人が多いので、なんとなく書きやすかったような気はします。もっとも応募したゼミの講師はトレーナーではないので、本当になんとなくです。不思議ですね。

そして前回と違ってコース・ゼミ選択で迷う時間がほとんどなかったと思います。特に選択コースは幅が広いのでどれどれに行きたいな、ああこれとそれは被ってるなと考えてしまいがちです。Twitterでフォローしている人がゼミの講師をやるというのを知って空リプしたら是非応募してねとリプライが来たのでそこに決めてしまいました。もともとリバエンゼミは2年前のときも第1か第2候補でした。そのままストレートに用紙作成に移れたのはよかったかなあ。というか書いたり調べたりしている内にそれについてさらに興味が出てきました。

文体は変えました。前回ははじめから終わりまで真面目に書いていたように思います。今回もまあ誰が読むかわからないからきちんとした文章を書こうと思っていました。とはいえ設問の内容が「問題を解いてください」系ではなく「好きなだけ語ってください」系で、何かもう一つ書けることないかと繰り返し繰り返し探しているうちに内容そのものがよくわからないモノになってしまったのでブログのノリで書くことにしました(読んだ方はわかると思います)。

これも文章に関わる話ですが、熱意を伝えるとかそういうことは考えないようにしました。もしくは熱意≒文章量という近似式で捉えるようにしました。結局熱意ってなんだ、となって筆が進まなくなったからです。また、いろいろなタイプの人に会ったときに熱意を表現するのが上手な人とそうでない人といて、自分は後者じゃないかなあと思ったからです。もちろんその感覚が間違っている可能性も多いにあります。とりあえず書けることをわかりやすいように書きました。

アウトプットをしようというのはよくある話です。不合格になってから実際自分もCTFで解いた問題のwrite-upなどをブログやScrapboxにまとめるようにしていました。またこういった場で使うことを予想して部活での資料等もなるべくまとめて公開するようにしていました。普段から作業メモをScrapboxの一箇所にまとめるようにしていたのもかなり役立ちました(記事にしなくても箇条書きで残している思考過程やログ)。文章ベースのアウトプットは何かを「作るプログラミング」をしていない人にはなおさら必要な気がします(競プロとか)。また、自分で書いたプロダクトは未完成のもの小さいものが多くて説明を書くときにあまり自信を持てなかったのに対し、ブログの記事等は特に見返さないのでしょうもないものでもURL貼ってハイ終わりで済ませてしまえたのも用紙を仕上げるという観点からいえばよかったかもしれません。完成形のモノ作るのって大変ですよね…。設計や開発技法もそのうちどこかで勉強してみたいです。

どこかでseccampの選考は運ゲーだという話を見ました。自分より優秀なのに落ちてしまった人もいるかもしれません。選考に通ったら優秀、というのもなんだかプレッシャーを感じるのでなんだかなあと思います(いやプレッシャーも少しは感じたほうがいいのかもしれない)。このへんの議論もまた「優秀ってなんだ?」という話に流れるなどして上手い人に持ってかれそうなのでやめておきますが、確かに定員がもっと増えてくれればな〜とは思います。GCCアラブ諸国と一緒にやって石油王に賛助会員になってもらうとか…やっぱり難しいんですかね?


過去にはミニキャンプ(北陸)とジュニアキャンプ(高知)に参加していました。だいぶ前だと思います。ロボットカー動かしたりXSSしてみたりして楽しかったです。夕食で刺身のツマを食べようとしていたら店の人に持っていかれて残念がってたとき、隣に座っていたのはかの有名なバグハンターの方でした。夜の講話のときに「全国応募する人〜!」という質問があってほとんどの人が手を挙げているなか、「もうちょっと実力貯めてから行きたいな」と思って手を挙げなかったのを思い出します。数年で貯めた実力を発揮できるよう、そしてさらに伸ばせるよう手を動かしていきます〜〜〜

筑波GLP(香港)に参加した

筑波GLPに参加して一週間香港に滞在したのでその感想を覚えているうちに書いておく。…つもりだったが帰国してから1ヶ月以上経ってGWに整えた。

出発

羽田空港から出発。ずんだシェイクエクセラがおいしかった。SecHack365の山形回を思い出す。バスの運転手さんも外国人相手に大変そうだ。"have your seat"の発音がやたらと上手だった。数時間を飛行機で過ごす。テキサス時差はすでに解消されていたようで寝なかった。JALのいいところはJAL名人会だと思うんですよ。

香港の空港に着陸。とりあえず何か買おうと思ってセブンイレブンで豆乳と思われしものを買った。まずかった。500mlより一回り小さいペットボトル飲料は$11.5なので日本よりちょっと高いぐらい。

↑Tencentの広告がある。

他の人と合流してバスでホテルへ移動。高速道路には英文・中文両方の文字サイズに合わせた電光板が設置されている。窓の外からは空港とビルしか見えない。農地も工場も一軒家もない。香港のビルは1F(イギリス式なので本当はG/F)が店でそれより上がアパートになっているケースが多い。

↑汚いビルと綺麗なビルの差が大きい。日本のオフィス街のビルのように空の色を反射してビルが青色に光っていない。ほとんどがパステルカラーの壁面から小さな窓が顔を出しているのみ。海が近いからだろうか、ガラス張りのビルでも汚れて黄色くなっている。建築中のビルも多く見受けられたが、足場が鉄骨ではなく竹で組まれている。

バスを降りると目に湿気が入る感覚がする。すぐ慣れた。

生活

HKU(Hong Kong University : 香港大学)の学生以外には英語は通じないと思ったほうがいい。お店の人に英語でトイレの場所を聞いたら理解できなかったのか不愛想に返された。

昼食はだいたい大学に散在する食堂でとった。Chongqing(重慶) Rice Noodleはチープな味がした。自分が無理やり辛ラーメンを作ろうとしたらこうなりそう。U-Deliカレーうどんは普通に日本食だった。割安だった。ケバブは辛くて結構大きい。一般的なSUBWAY等のチェーン店も出ていた。コーヒーがデフォルトで甘い。かといってそのデフォルトに変更を加える語学力もない。

夕食はあまり摂っていなかった。たぶん疲れすぎていたんだと思う。最終日は有志で近くの店に夕食に行った。中華を食べた。「中国」料理とは書いてなかったけれど、「中華風味」と看板に書いてあったので中華であることは間違いない。

↑出前サービスのdeliverooのシールが貼ってあった。他の店にも貼ってあって普及しているのがよくわかる。

新しめのトイレにも和式便所があった。でもこれは「和」式なのだろうか。表記を見てくるのを忘れてしまった。そういえば空港で買ったお茶には「港」式と書いてあったなあ。

この香港ツアーとして設定された日以外にも学校が終わってから夕食のついでにスーパーマーケットに行ったり周辺を散歩したりした。スーパーでは日本語がよく見える(Wellcomeと後述するYATAに行った)。というかスーパーのほとんどが日本語が書かれた商品を取り扱っている。中には日本で知られてないものも日本で有名なフリをして進出している。スーパーの時給が600円ぐらい。物価は日本と変わらない(HKUの教授曰くいろんな経済階級がいるので物価にもバリエーション?があるらしい)。

Cyberportへの標識を見つけた。他の都市でいうITパークみたいなものだろうか。行ってみようかと思ったが日が傾いていたのでやめておいた。車道をテスラがちょくちょく走っている。

↑公園が高層ビルに囲まれて存在している。瞑想したり運動したり。

企業訪問

事前に訪問する企業について調べてレポートにまとめて提出していた。

@cosme

入居するビルの入り口でWestern Union中国支店の激しいネオンがお出迎え。現地法人の代表の方の話を聞いた。日本人。マーケティングの話かと思ったら「若い人へのメッセージ」のような内容だった。人生における点と点が繋がって星座になっていて、その星座がどんな形になるかは後からじゃないとわからないとおっしゃっていた。どこかで聞いたことがあったけれど、それだけ広く受け入れられている例えだとわかったのでよかった。

そのあと同じビルにある実店舗を見学。日本の商品がほとんどなので、現地の顧客にもわかるように広東語のPOPが数多く貼られている。化粧品の気の遠くなるような匂いは相変わらずだ。

おもしろ日本語の宝庫だった。こういうのが好きなので店中の棚の日本語を探っていた。あとから聞いた話だが、彼女にプレゼントする用のコスメを熱心に探していると勘違いされていたらしい。勘違いされたのはこっちなのに、なんだか申し訳なくなった。

YATA

次は西友が香港に進出してできたスーパーマーケット・百貨店のYATA。騒がしくて説明はよく聞こえなかった。日本の商品が普通に売っているが、モノによってはそんなに高くない。ラーメンの種類がやたらと豊富。蒙古タンメンは置いてなかった。

講義

↑これを撮ったためにオタクがバレた。

香港英語の洗礼を受ける。聞き取れないというほどではないのだけれど、アクセントが中国語っぽい。Globalization, China, Presentation, Creative Industriesについての授業がそれぞれ休憩込みで3時間ずつだったかな。いかつい感じなのかと思ったら全然そんなことなかった。まあ高校生向けのプログラムだしなあ。楽しかった。

学校は広いかつ山の斜面に建っていて高低差が激しい。上のほうからは市街地がよく見える。

イノベーション・起業のためのiDENDRONという施設があって、投資家と学生のマッチングをしているみたい。

他にも幼小中高(大?)一貫校を見学した。どの教室でもスクリーンを使っている。IT Clubはあったがそんなにガチっぽい感じではなかった。

↑教室の柱にあった落書き。「就考試!」定期試験が近いのだろうか。誰も見ないようなところばかりに目が行ってしまう。

観光

1日香港ツアーが用意されていた。ちょっとこの辺は記憶があいまい。順番が前後している。

ルームメイト共々絶起したので何も食べずに出発。バスには日本同様後ろの方に非常口がある。外からも開けられるようになっていて、「EMERGENCY EXIT」の下には「太平門」と書かれている。漢字と英単語のイメージが真逆の方角を向いている。

大きな川があって、そこの沿岸を歩いた。隙を見計らって近くの店でラーメンを食べてきた。早食いはグローバル社会の必須スキル。ブルースリーの彫像も見てきた。よくわからないオブジェがたくさんある。都市っぽい。大陸からの観光客が多い。

そこから香港貿易発展局(HKTDC)の建物や時計台を見てきた。ガイドの方が日本の有名人の名前を出しながら解説していた。そういう解説の手法だけ覚えていて、何を解説していたのかは忘れた。人民解放軍のヘリコプターが着陸するのを見ることができた。

黄大仙へ。有名なお寺らしい。すごく人が多かった。たくさんの人々が何かを拝んでいるのを見るとおもしろいなと思う。不思議な日本語の説明書きの通りにくじを引くと数字が出てきて、お店で数字に対応する札を買う。40円ぐらい。読めない。宗教的なスポットなので周辺には政治・宗教的な運動の人がビラを配っていた。

↑占いの店が並んでいる通りがあった。資格(!)を有する占い師しか店を出せないらしい。

↑長いエスカレーターに乗って市街地を上っていく。街並みがよく見える。昔は世界一の長さだったらしいけれどいまは分割されている。

イギリス統治時代に造られた裁判所と監獄がセットになった場所にも行った。建物自体は観光スポットとしては微妙だった。不思議な現代アートがたくさん置かれていた。店もそこそこ入っている。

エッグタルトなる人気のお菓子を食べた。昼食は飲茶+香港料理。夕食は日本人が多くて食器を扱う音がうるさい北京料理店だった。両方おいしかった。回るテーブルだった。

途中のお土産スポットなどで何度か自由時間を設けてくれていた。そういった場所はやはり観光客で賑わっているのだけれど、いったん地下に入れば閑散としていた。低い天井を支える両側の壁には店が並んでいて、営業しているものとそうでないのが半々ぐらいだった。蛍光灯がガラスを通って薄暗い店内を照らす。ショーケースに並んだルータや扇風機の箱の間から、雰囲気に似合わないスマートスピーカーやIoT機器がちらほらと顔を出す。日曜日だったので店を閉めていただけのようだ。うれしいような残念なような。

企業見学のときに乗った島と島をつなぐフェリーは10分弱。あれぐらいがちょうどいい長さだなあ。飽きない。働いている人の制服がよかった。大きなショッピングモールに入って昼食。WeChat Payが使えた。本屋は行きそびれた。SHIBUYA 109の支店があった。

また別の日にDialogue in the Darkという目が見えない人の世界を体験する場所に行った。光がないので何も見えない真っ黒な空間に杖を持って入ってグループ間とガイドとで助け合ってなんとか頑張る。フェリーに乗ったりものを買ったり食べ物触ったり。勉強になった。

↑初心者のフリをして煽ってくるタイプの大型車(もちろんこのマークは日本でしか採用されていない)。

日本人高校生との交流

まるで自分が日本人じゃないような書き方だが自分は生粋の日本人。高校生と交流することで2年間高専で過ごすということの重大さを思い知らされる結果となった。同じ日本人でも違う学校の人だったのがカナダ短期留学との違いだった。

  1. 帰国子女は英語が上手
  2. 小学校で見せられた「インターネット安全教室」のビデオの中でしか存在し得なかったはずの若い東京弁
  3. 普段のクラスと逆の男女比

T.K.O.(と書いてみたかっただけで、1と3のダメージはコーヒーがデフォルトで甘かったときとさほど変わらない)(2は慣れるまでつらかった)。

進学校生といっても案外そんなに勉強勉強してないな〜と思ったらホテルの部屋で微分してバスの中で世界史の資料集を開いていた。代わりに自分はLLVMメーリングリストを見ていた。学校の話ばっかりしている人がいた。受験近い人は大変だなあ。さすがにそういう話は馴染めないしどうでもよかった。東京の進学校の名前がわかるだけでも健闘したと思う。

班に分かれて期間中に議論して、最終日にプレゼンをすることになっていた。テーマを決めて、プレゼンの流れをどうのこうのという話を深夜1時ぐらいまでしていた。香港の映画についてのテーマだった。カンフー映画を部屋で集まって見た。そこまで暴力的じゃなかったのでよかった(いや結構暴力的だった気もするけれど脳が記憶を洗い流してくれたのかもしれない)。

女性4:男性1のチームだった。こういう国際なんとかという類のものは女性のほうが多いらしい。明石高専の同級生の知り合いがいた。彼は顔が広いなあ。

なんか自己主張が激しいなーと思った。良い意味ではいろいろと意見が出る。悪い意味では人の話に割り込んだり、行き詰まると口調がキツくなったりする。標準語で問いただされるのもなかなかコワいですね。こういう話し合いに慣れていないので面倒くさいな〜と思っちゃう。

こういうところからもグローバルな匂い(正確にはグローバル意識が高い学生たちの匂い)がする。議論を積極的にする風潮。経済系の雑誌で描かれているディベートクリティカルシンキングといったワードが飛び交う世界。それともたまたまそういう性格の人が集まっただけだろうか。まあこういうのに申し込む人やその家庭というフィルターは少なからずかかってるよなあ。SecHack365とはまた違った議論のやり方があって新鮮ではあった。

さらにこのプログラムは事後課題があって、あとからチームでいくつかあるテーマのうち一つについて500 wordsの英語でエッセイを書くことになっていた。メンバーの一人がその辺で拾ってきたキュレーションサイトを英語に翻訳して「これでいいじゃん」と言っていて出そうとしていた。他のメンバーはまあそれでもいいか、という反応をしている。頭の中の遵法意識がささやき始める(あと個人的なキュレーションサイト嫌いも発動した)。かつてレポートコピーで留年者を大量に出したマイコンの授業を思い出す(自分の学年ではレポートコピーはなかった)。

結局翻訳したそれを提出するのはやめさせた。グループで分担して書くのはどう考えても面倒だったので、自分でCPTPPについて調べて書いて出した。勉強になったのでよかった。自己満足に溺れていた。

みんなInstagramを使っている。Twitterなんか誰もやってない。アカウントを持っていてよかった。いや訳のわからないネタばかり投稿しているのでアカウントを交換した相手からしてみれば災難かもしれない。あとから見てみるとプライバシーを気にするわけでもなく参加者の集合写真を投稿している。そういう意識はどこで醸成されるんだろう。

帰国

空港の搭乗口に移動する途中本屋があったので寄った。オタク雑誌が置いてあったので寮のオタク向けのお土産にした。

CATHAY PACIFICの便に乗って帰った。機内の設備が先進的でよかった、新幹線みたい。座席に設置されているタブレットAndroidだった(画面の辺からスワイプするとそれっぽいのが出てきます)。客室乗務員のアナウンス中はちゃんと触れないようになっていた。


ここ数ヶ月は表情筋が痛むので笑ったら意識して戻すようにしていた。それが裏目に出てしまって怖いといわれてしまった。まさか成人する前に表情筋トレーニングが必要になるとは…

一人部屋に移った

たまにログインしてアクセス解析を見てみると特に何もないのに急にアクセスが増えることがあって面白い。

寮の部屋移動を済ませた。待ちに待った一人部屋である。今までは一つ上の先輩もしくは一つ下の後輩との二人部屋だった。 前の入居者がなかなか出て行かなかったので荷物を運び込むのが遅くなってしまった。前の入居者について文句を言いたいわけではなくて、その人はその人で来年度過ごす部屋に住んでいる人が…というのをくり返して卒業予定の5年生が早く出て行ってくれないと動けないので仕方ない話である。閉寮が早すぎるんじゃないかと思った。

荷物を運び込んで、前の二人部屋を掃除して、新しい部屋を掃除して(一応出る人が掃除することになっているとはいえ明らかにそれほどされていなかったのでやり直した)、レイアウトというほどでもないが適当に考えてモノを収納した。同級生の助けを借りても6時間弱かかった気がする。学校でもらってきたマット数十枚を掃除機で一枚一枚吸うのが大変だった。しかしながら、一人部屋の気楽さというのは移動が終わる前から始まっていた。何をどこに置くかは(だいたい)自由で一番納得いく形になるよう工夫することができて楽しい。あくまで物理的な存在という制約が課せられているのでちょうど良い難易度というか、考えの余地になる。

部屋自体は棚のサイズが2倍になった。一人当たりのコンセントの差込口が3倍の6つになった。代わりにタコ足をどこかに失くしてしまった。それでもパーキンソンの法則よろしく両方使い切ってしまうんだろうなあ。 窓を独占できるが、建物の反対側なので新幹線ではなくB寮が見える。部屋で縦に吊るしていたカナダ国旗は他にいい場所がなかったので大胆に窓側にぶら下げてみた。B寮からはこれが見えるのだろうか。見えたらどんな気持ちになるだろうか。上下逆さにしたら気づくだろうか。

ドアを閉めると自分の目に動くものは何も動いていなくて「ああ帰ってきたなあ」という感覚がとても強くなる。大阪に住んでいたときの自分の部屋がスライド式のドアで、寮もそれと同じなのがその感じを補強しているように思える(ドアを開ける方向は違う)。 目の前に他人がいるとどうしてもそっちに気持ちが向いてしまうのに対して、なんだか居場所がちゃんとそこにあるような安心感がある。

夜中に作業しないといけないことになっても相手の迷惑を考えなくていいし、好きな時間に寝て起きられる。考え事をするときに無意識に部屋の中を歩き回っても何も言われない。どうしても人に会いたくなければホワイトボードに「作業中なので入室は後にしてください」と書いて部屋の鍵を閉めてしまえる。わざわざ夜に散歩に出なくてよくなる。散歩は多分するけど。なんか言葉にするとどうでもいいようなことのように思われそう。

一方で一人部屋になっても変わらないこともある。夜中になっても物音・話し声はするし、むしろ向かいの部屋の人がスピーカーでEDMを流している上に隣は大部屋で不吉な予感しかしない。3階なので廊下にドアが設置されておらず声がよく通ってしまう。

昨年度二人部屋になったときは「人の目がある方が勉強とかできていいかな」と思っていたが全然そんなことなかった。この発見を裏付けるためにもそれなりにうまくやっていきたい。

しかし明日には寮が閉まり大阪に帰る。さらば一人部屋…