WordPress嫌いの覚え書き

これどっからどう見てもWo*dP*essなんだよなぁ、はっきり分かんだね

発達障害っぽい自分がどう生きてきたか,大学院をなぜ休学したか,これからどうしていくか

「退学AdventCalendar」をすすめられた (10月末ぐらいに執筆)

Twitterでフォロワーから突然こんなリプが飛んできた

f:id:To_aru_User:20161029034415p:plain

「今年こそQiitaで何か書くぞ」と考えていたんですが来年におあずけですね…いや,両方書いてもいいんだけどほら面倒だsこういうクズい感じのほうがプレッシャーかからなくてええやん?みんな正直そうやろ?

私の最も嫌いな1文字はこれだ

f:id:To_aru_User:20161029035026p:plain

f:id:To_aru_User:20161029035240p:plain

ドヤることじゃないが,私は本当に無責任な人間だ。

なぜ?

10月終日付けで休学届を提出,無事に受理された。やっとこれで不安から解放される。端的に言うと,以下のような要因が挙げられる。

大学以前の振り返り

ここで少し,自分のキャリアを決定するようになった過去,および自分を特徴付けているエピソードを振り返ろうと思う。自己紹介も兼ねて。

幼少期

日本の都道府県/県庁所在地をすべて暗記する
世界の国名/首都/国旗をすべて暗記する

小さい頃は本当に記憶力がよかったようで,暇があればこんなビデオを見て学習していたようだ。尤も自分からすれば好奇心を刺激されていただけで,学習する気なんてさらさらなかったと思うが。

おぼえちゃおう!シリーズ | 学習ビデオDVDのNiKK映像(にっく映像)

Macintoshを叔父から譲り受け,サンリオのゲームで遊ぶ

初めてPCを触る。

いじめ(?)

運動が自分が一番できなくて結構バカにされてた記憶はある。煽りに反応してムキになって自滅しちゃうほど素直だったなぁ。本気で嫌われてなんか無くて,相手に悪気はないだろうし,もちろん仲のいい友達もちゃんといたけどさ。

やんちゃな子供は,先生に怒られない過ごし方を知っている,あるいは怒られてもサラッと流してた。一方私はといえば,人付き合いとか公然の場での要領はかなり悪いほうで,やらかして怒られて真に受けすぎて凹んで泣いてた。ほんとにあの頃涙腺ゆるくて,ちょっとでも感情が負の方向に揺さぶられるとすぐ涙が出てきて,ずっと困ってた。これはドライアイを発症する高校生の頃までずっと続く。

小学校低学年

Windowsを使い始める
キーボードを見ながらのかな入力を習得 (1〜2年)
ブラインドタッチでのローマ字入力を習得 (3年以降)

「キーボードファイター大会」なんてものがあったんだけど,かな入力の部,ローマ字入力の部,どっちもぶっちぎりで優勝してました。センスはわりとあるのかな,どうだろ。

f:id:To_aru_User:20161029052903g:plain

スイミングスクールに通う

全然運動ができない体力もないやつだったけど,このときの頑張りのおかげで水泳はわりとできる。平泳ぎ以外は遅いけど,まあ得意な泳ぎ方1つあればいいだろう… (そういえばスイミングスクールでも多少人付き合いでいざこざはあったなぁ…いつも自分はハブられる人間だった)

公文式の学習を3教科始める

学研をやめてこっちに一本集中したのが小学校2年の終わり頃。最初は3科目全部がんばってやってたなぁ。親に入れられたんじゃなくて,全部やるって自分で言い出してやってたらしい。どこのガリ勉だよ。

休み時間に教室にこもって自由帳に迷路を描く

幼稚園の時から相変わらず,友達と普通に遊ぶのはできなかった。外で遊んだのはせいぜい鬼ごっこぐらいかなぁ。みんなが大好きなドッジボールが相当嫌いだった。かといって何で迷路を描こうと思うんですかねぇ…自由帳のタイトルに「めいろノート」ってつけてびっしり描き込んでたし相当の変態だよな。

あと…これは母から聞いたエピソードなんだけど,授業参観の日の休み時間にただ1人ぽつんとベランダに出てひなたぼっこしながら,校庭で遊ぶ多くのクラスメートを眺めながら 「何でみんなあれで楽しいと思うんやろ」という調子こいた発言を残していた,とのこと。

学級委員を務める

これもまた責任放棄野郎の自分からするとあり得ないんだけど,自ら立候補していたらしい。学級委員の仕事ってなんだっけ,整列させるときとかに仕切る輩?目立ちたがり屋だったのかな。自分で言うのもアレだけど,まわりからは「変人だけど真面目なやつ」って思われてたのかな。ともあれ,他の候補に勝って当選していたのは事実だ。

小学校高学年

学級委員に当選しなくなる

4年生の頃からちょっと雲行きが怪しくなる。どうやらみんなからこう認識されるようになったようだ。

「変人だけど真面目なやつ」→「真面目だけど変人で仕事はできないやつ

学級委員に与えられる作業的な仕事はちゃんとこなしていたが,臨機応変さには欠け,また人間的にみんなを取りまとめていくことはできなかった。完全に空回りしていた。テストはいつも満点,パソコンも得意なインテリ野郎だったけど,みんなと話が合わないし,全然空気も読めないし,という感じだったと思う。もちろん友達はちゃんと居て,その頃流行っていたデュエルマスターズなんかを相手してくれる子はいた。でも人付き合いの相手はかなり選び,趣味が一致することを前提としていた感はある。

いじめられる

5年生,最悪の思い出。4年生は幸いにも温かみのあるクラスメイトに恵まれ,浮いた自分でもなんとかやっていけたが,5年生のクラスで完全に死んだ。しょっちゅう家で泣いていたし母にも愚痴をこぼしていた。特定の数人を除いて話しかけても無視されることはあったな。中2の記憶が強烈すぎて思い出しにくくなってるけど,こっちはとにかく陰湿だった。このせいで,「目立ちすぎることは自分の損害を招く」という経験を身をもって得た。

偶然Web上で見かけた「ホームページを作ってみよう」に釣られてHTML/CSSを学び始める
スーパー正男の自作コースを掲載するWebサイトを作る
HTML/CSSの基本についてまとめたWebサイトを作る
VisualBasic.NET 2003 の環境用意して入門書を買うが挫折する

この頃になって,ようやく技術系に手を出すことになる。HTML/CSSは文法的に正しいところにはなかなか到達していなかったものも,雰囲気で使えるようにはなっていた。また,既に「自分がテキトーに学んで身につけたことをわかりやすく整理してアウトプットする」ということに対しては強いこだわりを持っていたのかもしれない。よくいう「右脳で入力して左脳で出力する」っていうタイプの人間だ。Qiitaで記事を量産してきた最近の自分に通ずるところがある。

…しかし,プログラミングが完全に未経験の状態では,VisualBasicの本質は全く理解できなかった。「フォームのインスタンスを生成」とか書かれてもわかるわけないやん。

中学校

ガラケーを購入

親からだいぶ早いとは言われたけど,まわりが持っているからという理由で中1ぐらいで買ってもらった気がする。

ソフトテニス部に入る

もっとラクな部活もあったけど,なぜかこれを選んだ。

女の子に泣かされてバカにされる
教科書入れにリコーダーを突き刺して破壊される
教科書の表紙に油性ペンで落書きされる
教科書の表紙が破られる
椅子で殴られる

この辺中学2年生の闇。猿山みたいなクラスに私みたいな人間が放り込まれたらどうなるか,言わなくても分かるよね?

テストはいつも1位か2位ぐらい

自分では公文式の学習を除いて本当に勉強していなかったのだが,「勉強してないよ〜」というのが余計にまわりの反感を買っていた可能性は否めない。本当に勉強していないので,みんなが対策を練って勉強する定期テストよりも,真の実力が問われる実力テストのほうが相対的に成績は良かった。3年頃で少し順位が落ち始めたが,「過去の栄光やな」みたいに言われるようになって,内心ホッとしたのは覚えている。

TPSやFPSなどのネトゲに染まる
深夜アニメを見始める

現実から離れられる,最もお手軽な方法を手に入れてしまったのがこの時期だろうか。

HSPに手を出すが挫折する
C言語に手を出すが挫折する

書籍に書いてあるサンプルコードを書き写すので精一杯,それ以上のことは何もできなかった。もちろん一生懸命読んでいたが,それを理解できるほど頭はよくなかったようだ。

高校

国際科学コースではなく普通科を選択

県下2番の進学校に入った。正直言うと,自分の点数だと普通科よりランクが上のほうのクラスにも入れていた。ただし,中学時代に「ガリ勉オーラがあるからいじめられた」というトラウマがあったので,もう高い目標を追うことが正義だとは思わなくなった。みんなはこれから真面目になっていくというのに,私はどんどん不真面目になっていった。

Twitterを始める

人生を良くも悪くも大きく左右するTwitterと出会ってしまう。アニメ関連でフォローを増やしていったところ,それだけでもうコミュニティが出来上がっていた。「現実の友達と接するよりもこちらのほうがラクだな」という思考をしがちになってしまっていた。

ぎこちないが異性ともコミュニケーションが取れるようになる

中学時代まで全くできていなかったが,ようやく少し改善の兆しが見られた。高2のときに奇跡的に両想いから彼女ができた。しかし…

  1. 学校の友人に後先考えずに自分のTwitterアカウントについて話す
  2. Twitterで彼女について無神経なツイートを垂れ流す
  3. クラス全員に自分のツイートが見られる (ご丁寧にもメールで拡散されていた模様)
  4. 彼女に嫌われる

という自殺行為をしてしまう。今なら少し考えればどうなるか容易に想像がつくことも,その当時は全く分からなかったようだ。こんなの一種のバカッターじゃないか。その一件で完全に現実の異性からは見放され,ネット恋愛に走りがちになってしまった。もちろんそんなものに期待するのも愚かだが。

課題の問題集やプリントを全然出さない,締め切りを守らない
定期テスト日の深夜,極めつけはセンター試験本番の前日までFPS

できるだけ努力せずにやってきた人間なので,今更特段努力ができるわけがなかった。もちろん成績はとっくに努力型の人間には大きく抜かれていた。それでも大学にセンター推薦で入ってしまった。本来の第一志望っぽいところを外してランクは落としたんだけど,国立だからいいかみたいな妥協で。

PHPを始める

みんな私と言えばPHPの印象が強いと思うけど,実は初めて触った言語でもなんでもないんだ。VBHSP,Cときて,ようやくPHPに入ったぐらいだ。尤も,テキトーに書いても動くという良いのか悪いのかわからない特性のせいで,我流で雑にやる自分にはかなり適合し,コーディングははかどるようになっていったが。完全に未経験者の状態から2週間ぐらいでTwitter連携アプリを作れたのは覚えている。

研究室に入るまで

さあ,人生の浮き沈みが激しくなったのはここからだ。

ネット恋愛中毒で必修単位を落としまくる

大学に行っても他のことが一切考えられなくなっていて,次第に家から出なくなった。大学1年の後半は完全にこれで潰れる。こぼした単位は2年以降の踏ん張りでなんとかなったが。しかし,低GPAが確定したため,研究室の選択肢はこの時点で大きく絞られてしまった。自分の首を絞めることになるとは知らずに。

また,それ以来素性の知らない女性に対しては強い警戒心を抱くようになってしまった。特別な理由が無い限り,できるだけ避けようとしてしまう。

ガラケー向けTwitterクライアントのGalaTwiをピュアPHPで作る

モバツイやMovatter全盛期の時代だったが,これらのレイアウトや機能にやや不満があったため,結局自分の欲しい機能は自分で作るというコンセプトのもとに自作を始めた。ガラケー向けでUIが雑でいいのもあって,フレームワーク方面には一切手を出さずに,完全に素のPHPで作ってしまった。もちろん人に見せられるようなソースコードではない。

HTTPプロトコルに興味を持つ
Twitterライブラリを自作する

Twitterではなぜか「爆撃」といって無駄にツイートを連投するような荒業が流行っていた。今となればアホらしいが,これのおかげでHTTPの仕組み,およびHTTP通信の並行処理などについて興味を持ち,手探りで実装をすることを楽しんでいた。しかし,私が興味の対象に考えていたのはTwitterが関連する極めて狭い範囲の内容であり,体系的に広く学びたいという意識は全く起こらなかったのが問題だ。

Qiitaで技術ネタを書き始める

体系的に学ぶ気は無いが,体系的にまとめるのは好きだ。ずっとこんなやり方で,とりとめもない内容,おもにPHP関連のネタをQiitaに書きまくってきた。しかしもうこのやり方には限界を感じていて,体系的に学ばなければ説得力のある文章は書きにくい,というのは痛感している。RFCを読めとか言われても可能な限り読みたくない,そんなやる気のない人間に見えてしまう。最近はもうネタ切れと疲れであまりすすんでアウトプットする気にはならない。

セキュリティキャンプの全国大会に行く
pixivインターンシップに行く

この2つのイベントが私の人生を大きく変えることになる。

まず衝撃を受けたのは,自分の知識が極めてWebの狭い範囲だけに限定されているということだ。WindowsでゆるふわにPHPを書いているだけの人間が,Linuxやらバイナリ解析やらパケット解析やらやってるような人間と初めて対面した。カルチャーショックという言葉では表現しきれないぐらい自分の無力さを感じた。Windowsを捨ててOSXに乗り換えるなど,技術向上に繋がるきっかけには確実になっているので,これはプラスの影響として評価できる。

もう1つは,社会的な常識が自分から欠落していたことだ。「これをやったらこうなってしまう」ということを想像して未然にその自体を防ぐのが極めて困難で,セキュリティキャンプインターンシップ両方で手痛いミスをやらかしてしまい,責任者の方に頭を下げることになった。ある意味身をもって経験するという意味ではプラスかもしれないが,「自分は不注意だから,そもそもできるだけ人とか関わらなければトラブルも起きないんだ」という回避的な思考をしがちになってしまった。

研究室に入ってから中退するまで

人と民事訴訟寸前にまでいきそうになるトラブルを3件も起こしてしまう

技術批判とかで。これが上記の回避行動に追い打ちをかけ,今の自分を形成してしまった。Twitterもいままではオープンをモットーにやっていたのに,今では非公開アカウントに引きこもりがちになっている。誰もが見ているここで書くのもアレかもしれないが,心を許した極めて狭い人間だけに自分のすべてを託し,それ以外の人間は表面上の浅い付き合いだけで済ませるというやり方は基本になってしまった。「普通の交友関係を築く」ということがなかなかできないのだ。

研究テーマが迷走する

他の人は「所詮卒論なんだし形式的に軽く済ませればいいよ」と言う。しかし,私がやりたかったのは好奇心のままに探求するというやり方だ。ゆえに,新しい技術を生まずに評価実験だけをやる,いわゆる評価研究と言うものには全く興味が起きなかった。そのため,必然的に難しい研究テーマに手を出してしまい,自分で自分の首を占めていた。

幸い,4年次はHTTP/2という新しいプロトコルが話題になっていたこともあって,それに関連した研究テーマを選択でき,なんとかはなった。通信の評価研究ではあるが,比較的ネタが新鮮であることと,自動評価ツールを自作することはモチベーションになっていた。

実験の自動化にこだわる

それまで研究室の評価実験は,とてもアナログな方法で行われていた。これが情報工学科のやることかよ,とバカバカしさしか感じられなかったので,真っ先に全自動化を考えた。評価用の模擬WebサイトをまずPHPで作り,通信を自動で記録するコードもシェルスクリプトとの合わせ技でPHPで書いた。また,Webブラウザの動きを監視するツールもSelenium+Node.jsの組み合わせで実現した。これにより,理論上研究室で漫画を読んでいるだけで評価実験が終わるツールが完成した。

研究テーマが決定したのが11月初頭とかなり遅く,そこからツールの実装に1ヶ月ぐらい使ってしまったため,それなりに焦りを感じていた。さらに,実際のハードウェアを絡めた自動化はそううまくいくわけもなく,LANケーブルの接触不良などで何度も失敗が起こってしまい,進捗が遅いことに関して教授から「時間の使い方を間違えている」と言われてしまったぐらいである。実験なんてささっとやって論文を書くことに時間を使えと。

論文への無関心

私は論文を書くことに全く興味を持てなかった。ここで矛盾していると感じる人はいるかもしれない,じゃあなぜQiitaで書くことは好きなのかと。

Qiitaに文章を書くときには大して責任は伴わないし,間違っていたら詳しい人が的確な指摘をしてくれるからそれでいい。なにより,考察を念入りに論述する必要がない。箇条書きで事実だけを淡々とわかりやすく書けば評価される。そもそも私としてはそれで評価されることは本来の目的ではなく,体系的にまとめることで自己満足を得ているだけである。

一方,論文はわかりやすさよりも,国語的な説得力の高さが求められる。私はそんな文章を書きたいのではない。わかりやすさのために箇条書きにしている部分を否定され,「ここは文章で繋がるように書け」と添削されて不毛さしか覚えなかった。

教授への不満

また,教授の添削もQiitaでもらうような指摘に比べると,相当頼りないというのが本音だ。頼りないというか,いろいろとひどい。添削はかなり雑で,「読む方の気持ちを考えて書いてくれ」と言いたくなるぐらい,汚い文字に気分を害されることが多かった。字が汚くても指摘が的確であればいい,でも実際には「違う」「なぜ?」のような片言ばかりだった。本人はきっと私に考えさせたいのであろうが,それにしてももうちょっと具体的なアドバイスがあるだろう。 言葉の裏の意味を汲むのが極端に苦手な私にとっては,婉曲な表現など全くの無意味で,ストレートに淡々とすべきことが書かれているほうがよほど感謝の対象になる。 なぜこんな不毛なことに時間を割かなければいけないのか,と不満は次第に募っていった。

自分はまだマシな扱いだったが,アカハラ事案で研究室を抜けていった友人は,印刷された下書き全体に大きく ✕ と書かれて,個人的な感情を冷静さの欠片もない,赤ボールペンで書き殴られた字でぶつけられていた。間近でそんな件の相談を受けていたのもあって,教授のことを信用するのはもう絶望的だった。

大学院には,自分がかすかに可能性を感じていた機械学習関連の講義への希望と,モラトリアム延長願望の惰性で入ってきてしまったが,結局お堅い研究をするための場所である,ということに気付く。また,教授も私をすでに研究室の学生として扱っていないオーラを常に放っており,研究テーマに関する相談も事実上放棄された。「この時期ずっと悩んでいたんですが」と相談しても「じゃあもっと前からやればよかったじゃん」の結果論しか言わない。自分も出来損ないの欠陥品なのは承知しているが,それにしてもこれは無いだろう。自分の回避ポリシーからすれば100%縁を切るのが正解の相手だ。というわけで研究室を抜けるのは心に決めた。

これからどうするか

研究室変更か,それとも中退か

研究室変更という選択肢も一応無くはなかった。但し特例であるためいつでも認められるわけではなく,また自分が教授個人ではなくアカデミア全体に対して嫌気がさしていたのもあって,新しい教授に迷惑をかけそうであるということも容易に推測できるので,ここは身を引くのが正解であると判断した。形式上休学にはなっているが,事実上は中退だ。金銭の都合で,こうしたほうが安くなるとのこと。

以前のバイ

以前名古屋のコードを書くWeb系の会社に雇ってもらったことがあるが,一度会社から離れてしまうと再び行くことが恐怖で近づけなくなり,今は幽霊社員と化している。一応プライベートリポジトリへのアクセス権限は残されているようだが,今再び出して見せる顔も無い。過去に一度だけ再び顔を出したことはあったが,不幸にも研究室関連でのストレスを抱えた時期と重なったため,出社する余裕は無くなってしまった。

9月のインターン

今回は,10月に戻ってきて教授から心無い言葉を浴びせられるまでの間,つまり9月中は東京のほうにまる1ヶ月,別の会社のインターンシップに誘われて出向いていた。某Panaなんとかっていう大企業のほうは書類選考の段階で落とされて凹んでいたが,こちらは快く通していただいた。お給料がそこそこ高めにもらえるかわりに滞在費とかの補助は一切無いから自分でやりくりしてね,という感じで。それゆえにまるまる1ヶ月ほぼネットカフェで連泊した。一般の人から見れば無謀に思えるかもしれないが,以下の点で私には最高の環境だった。

  • とにかく安い
  • WindowsPCが壊れてから失っていた趣味「ネトゲ」「漫画」を再び味わうことができた
  • 朝早めに強制的に追い出されるため,引きこもりを防止する強制力が働く

どうだろうか,1番目と2番目はおまけだが,3番目は至極真っ当な理由に見えないだろうか。最初は会社に対して不満もあったが,離れすぎて近づくこと自体が恐怖になるという失敗は一度も起こらず,結果的には大成功だった。食事が麺類ばかりになってしまってやや不健康そうにも思えたが,休日は引きこもらずに20km/日以上のペースでIngressをプレイして相当運動できていたし,なにより精神面の健康は何にも換えられないだろう。

しかし,「一旦これからどうするかを考えるために名古屋に戻る」といって東京から帰って来たのが運の尽き,それから1ヶ月ほぼ引きこもり続けて苦しむことになる。この記事をかいている今この瞬間もだ。持ち帰ってきたインターンの仕事をやる予定だったのに,結局全くやれていない。時間がたてばたつほど迷惑がかかるのはわかっているのに,なぜか手が動かない。以前に比べればコーディングスキルは確実に上がっているし,できないわけではないのだ,でもなぜかやらないのだ。なぜだ。

時間の浪費

さて,これから仕送りも止まるし働いて自立していかなければならないのだが,どうしようか。最近は家に引きこもり,ネットだけで時間が溶けていく。具体的にそれらが何かというと

このあたりだ,いっつもこいつらに時間を吸われる。ただの依存症。まだQiitaはマシかもしれないけど,知恵袋とか回答しててもあまり得るものは無くなってきてるとわかっているのに,張り付いて15分単位で新規質問が無いか確認してしまう。はっきりいって気持ち悪いと思う。正直アカウント消してしまいたいぐらいだが,いっときの勢いで消してしまうと(こういうことで仕事の話が入ってくるようになった面もあるのに)自分にマイナスダメージになりかねないと思い,一旦保留にしている。どうすべきかは解らない。

内定に関わるようなお話も他にもいくつか頂いているのに,メールを1週間以上放置するのはこの私だ。「今日こそ返す」がもうずっと続いている。また連絡に限らず,以前は自力で普通にできていた掃除や洗濯もかなり困難な状態になっている。やりはじめても5分経たずに気が散ってパソコンの前かベッドの前に戻ってきてしまう。風呂もなかなか入らないし,自分の不潔さを感じてようやく入ったかと思えば,脳が絶望に包まれて頭が狂った人間のように叫んでしまうことが多々ある。一体自分はどうしてしまったのか。

発達障害

さあ,ようやくこの話題か。タイトルにも書いているが,私は十中八九発達障害を持っているに違いないと確信している。過去のエピソードを振り返ってみると,アスペルガー症候群患者の特徴に該当している点は非常に多く,大学の保健センターで実施してもらった検査でも「得意不得意の能力差が激しい」と出ている。また最近の状況を見ていると,回避性パーソナリティ障害やADHDの併発も怪しい。厳密に診断が降りたわけではないが,実際に自分がそういう症状で苦しんでいるため,障害者手帳の申請を見据えて,心療内科の紹介状を書いてもらった。

ただ,初診が3ヶ月先とか言われた。まじで勘弁してくれ,こっちはこれからの人生かかってるところなのに。でも心療内科医や精神科医の数は全然足りてないというし,待つしか無いのが現状。どうしようもなくつらくなったときは,最近はお酒に頼っている。普段は飲まない人間だったが,やむを得ない。

近況報告 (11月30日追記)

11月中旬から再びインターンシップに行っていた会社に復帰し,9月のように精神状態は大幅に回復した。一度職務内容的に失敗を経ているため,今回は自分の得意を生かせる仕事を与えてもらうことができ,非常に満足している。正社員としての就職先の第一候補として前向きに検討している。経営面でこの先の不安はあるが,それ以外の面ではすべてにおいて満点をつけたくなるほど満足している。

強いて言えば,居心地の良すぎる環境を見つけてしまったため,それ以外の可能性を自分で積極的に潰してしまっていることだ。他の採用面接を受けても 「僕は本当はここに来るべき人間ではない,僕の家はあの会社だ」 という考えが全面的にでた態度をとってしまう。自分を一切飾らず,今思っていることを淡々と話し,できることはできる,できないことはできない,とはっきり言うのだ。「できないことはできるようにしていこう?」と問われても,得体の知れない相手に対しては「できるようになればいいですね」と,自分が周りに動かされているような物言いしかできない。 私は,信用できない組織においては,自分という存在を隠蔽してしまう。 すべてを委ねられるという確信が無ければ,「できるように努力していきます」という,責任の伴う発言をすること自体に責任を感じ,萎縮してしまうのだ

また,面接で自分の長所を言いにくくなってしまった原因はもう1つある…それはADHDっぽい症状の影響が強まることで,アスペルガーであるがゆえの利点,例えば優れた集中力を失ってしまっていることが挙がる。「今回はちゃんとやるぞ!」と決意して購入したDocker入門書も, 10分ぐらい読んで飽きてしまい,4日ぐらい放置してしまっている。エンジニアとしてこの状態は致命的であるので,本当にどうにかならないものかと苦しんでいる。

今自分が持っている将来へのビジョンはこれだ。

「確実に自分ができると自信を持てる仕事からこなしていくことで,新しい挑戦をする余裕を持たせていく」

Docker本待ってろよ,絶対読んでやるからな。

【Ingress】 コントロールフィールド(CF)の作り方を図で理解する 【超初心者向け】

このゲームの目的

  • ポータル同士をリンクでつなぎ合わせて三角形で囲んでコントロールフィールド(CF)とし、その合計面積を競う
  • AP(経験値)を溜めてレベルアップ

CFの作り方

初期状態

以下に示す状態から、CFを1つ作るまでの一例を示します。必ずしもこの順路が効率がいいわけではないので、どう動けば効率が良いか自分で考えるようにしてみてください。

  • はレゾネータを表します
  • はリンクを表します

f:id:To_aru_User:20141221162918p:plain

1. 中立ポータルの40m圏内に近づく

f:id:To_aru_User:20141221163053p:plain

2. 中立ポータルを占領し、自分のポータルにする

ポータルを占領するためには、自分のチームのレゾネータでポータルを埋める必要があります。レゾネータは、ポータルのステータス画面からf:id:To_aru_User:20141221172805p:plainをタップし、位置を選択してデプロイ出来ます。

レゾネータはこんな見た目です。レベルによって色が異なり、レベルが高いほど耐久値が高くなります。

f:id:To_aru_User:20141221164622p:plain

もらえるAPについて…

  • レゾネータを1個デプロイすると125APもらえます。
  • 最初の1個のデプロイにはポータル占領ボーナスがつくので、125+500=625APもらえます。最初の1個で所有者が決まるので、チーム行動しているときは喧嘩しないようにまんべんなく分配しましょう。
  • 最後の1個のデプロイにもボーナスがつき、125+250=375APもらえます。
  • 既に設置されている他人のレゾネータをよりレベルの高い自分のもので上書きすることができ、65APもらえます。
  • ダメージを受けているレゾネータをf:id:To_aru_User:20141221171440p:plainで修復すると、1回につき10APもらえます。また、ポータルキーを所持していれば、40m以上離れていても遠隔リチャージすることが出来ます

また、1人でデプロイ可能なレゾネータの数にはレベル別に制約があることに注意してください。

レゾネータレベル上限個数
18
24
34
44
52
62
71
81

f:id:To_aru_User:20141221163454p:plain

3. ポータルをf:id:To_aru_User:20141221170630p:plainしてポータルキーを入手する

ポータルキーはこんな見た目です。

f:id:To_aru_User:20141221164409p:plain

  • 既に持っているかどうかはポータル画面でf:id:To_aru_User:20141221165135p:plainがあるかどうかで確認できます。
  • 100%取れるわけではないので、どうしても必要なのに出なかったら、再ハック可能になるまで5分ほど待機するか後回しにして他のポータルに行きましょう。またポータルは最大で4時間に4回しかハック出来ず、それを超えてハックしようとすると「Burned Out!」と表示されて失敗します。
  • ポータルキーは複数所持可能ですが、既に1個以上所持した状態だと新たに出現することはありません。2個以上欲しければ一旦すべてをフィールド上にf:id:To_aru_User:20141221170729p:plainする必要があります。

f:id:To_aru_User:20141221170914p:plain

4. 別のポータルの40m圏内に移動する

f:id:To_aru_User:20141221171049p:plain

5. f:id:To_aru_User:20141221171154p:plainを張る

このとき、リンク先のポータルキーが1個消費されます。リンクにも使うし、ポータルを守るためには遠隔リチャージも必要となってくるので、自分がよく訪れるポータルに関しては複数のポータルキーを集めるようにしておくといいでしょう。

リンク1回で313APもらえます。

f:id:To_aru_User:20141221172507p:plain

6. 別のポータルの40m圏内に移動する

f:id:To_aru_User:20141221173145p:plain

7. ポータルをf:id:To_aru_User:20141221170630p:plainしてポータルキーを入手する

今回は中央上から右下のポータルに向かってリンクを張ることにするので、右下のポータルキーを取得して中央上に持ち帰ることにします。

f:id:To_aru_User:20141221173252p:plain

8. 最初のポータルの40m圏内に移動する

f:id:To_aru_User:20141221173607p:plain

9. f:id:To_aru_User:20141221171154p:plainを張る

ここでようやく三角形が完成します。

f:id:To_aru_User:20141221173649p:plain

10. やったぜ。

リンク1回分とCF1個作成分で合わせて313+1250=1563APもらえます。ここから後の内容はオマケです。

f:id:To_aru_User:20141221173715p:plain

よくある質問

壊されにくいポータルを作るためには?

f:id:To_aru_User:20141221174206p:plainからポータルシールドを設置しましょう。MODは1人2個まで設置でき、1回の設置で125APもらえます。

ポータルシールドはこんな見た目です。レア度によって色が異なり、レア度が高いほど防御力が高く破壊されにくい堅牢なものとなります。

f:id:To_aru_User:20141221174331p:plain

また、レゾネータを設置するときのコツとして…

  • 40mギリギリまで離れて設置する
  • レベルの高いレゾネータ同士の間隔を離して設置する

このようにすると相手が破壊するときに手間がかかるようになります。

敵のポータルを破壊して中立ポータルにするには?

XMPバースターを発射してレゾネータを破壊します。攻撃は円状に広がります。全てのレゾネータを壊し終えた時点で中立ポータルになります。

XMPバースターはこんな見た目です。レベルによって色が異なり、レベルが高いほど攻撃力と攻撃範囲が大きくなります。

f:id:To_aru_User:20141221180020p:plain

f:id:To_aru_User:20141221180343p:plainから選択するか、フィールド上の何もないところを長押しして現れるショートカットメニューから選択します。後者の方がラクでおすすめです。

もらえるAPについて…

  • レゾネータを1個破壊すると75APもらえます。
  • リンクを1個破壊すると187APもらえます。
  • CFを1個破壊すると750APもらえます。

レゾネータを破壊するとき、以下のようにするとダメージ効率がよくなります。

  • 破壊したいレゾネータの真上に移動する
  • f:id:To_aru_User:20141221180519p:plain長押しして溜め撃ちする

但し、シールドが張られている状態だとほとんどダメージが通りません。まずはシールドを壊すのが一般的です。

敵のシールドを壊すには?

XMPバースターが当たれば一定確率で壊れますが、以下のようにすると破壊できる確率が上昇します。

  • ポータル中心の真上から撃つ
  • XMPバースターの代わりにウルトラストライクを利用する

ウルトラストライクはこんな見た目です。XMPバースターと違って広範囲を攻撃することは出来ませんが、シールドを破壊できる確率はXMPバースターより高くなります

f:id:To_aru_User:20141221181206p:plain

攻撃中にXM(エネルギー)が足りなくなったんだけど…

f:id:To_aru_User:20141221180343p:plainからパワーキューブを使えばその場ですぐ回復できます。

パワーキューブはこんな見た目です。レベルによって色が異なり、レベルが高いほど回復量が多くなります。

f:id:To_aru_User:20141222030621p:plain

効率よくアイテムを集めるには?

  • ポータル密集地帯に行く
  • f:id:To_aru_User:20141221170630p:plainを長押ししてグリフハックによるミニゲームをクリアする

リンクやCFについてもっと知りたい!

ここでは簡略化して説明しましたが、実際にはもっと奥が深く、制約条件も複雑です。以下のページに詳しい説明があるので、概要を理解した後にじっくり読んでみてください。

【MMMMORPG】Ingress攻略(Wiki風味)【大規模社会実験】: ■Portal Key & Link & Control Field(ポータルキー リンク コントロールフィールド)

ビリーズブートキャンプ2014に行ってきました!

1日目

初日からすごくハードな運動でした!

SEO対策用

  • セキュリティ・キャンプ 2014 全国大会 Webセキュリティクラス
  • セキュリティ・キャンプ 2014 全国大会 Webセキュリティクラス
  • セキュリティ・キャンプ 2014 全国大会 Webセキュリティクラス
  • セキュリティ・キャンプ 2014 全国大会 Webセキュリティクラス
  • セキュリティ・キャンプ 2014 全国大会 Webセキュリティクラス
  • セキュリティ・キャンプ 2014 全国大会 Webセキュリティクラス

CTFの妨害コンテンツに普通に入ってきそう

ほんとの1日目

交通費支給が学割前提の計算だったんだけど、直前になって「学割証!?ファッ!?」ってなったので仕方なく差額は自腹切りました。まぁ普段ほとんど電車乗らないし、知らなくてもしょうがないね。多少はね。

会場に着いたら…そこには愛しのらまっこが!思ってたより一回り大柄だったけどむしろ抱き心地良さそうだったしこのまま屋上まで連れて行きたかったなぁ(意味深)

それにしても…Tシャツのアッピル効果絶大!

f:id:To_aru_User:20140818191449p:plain

みんなもアイコンベースにしてUT作ろうよ!

昼ぐらいから開講式始まって、そのままセキュリティ基礎で「脆弱性の正しい取り扱い方」「どこまでならセーフ?」といったものを再確認しました。SQLインジェクションを合法的に試すときはとりあえずO'Reilly入れとけって話は非常に勉強になりました。これ以上黒歴史を作りたくない自分にとっては肝に銘じたいものですね。

後はなにがあったっけ…(スケジュール表を見ずに記憶だけでブログを書く人間の鑑)

そうだ、この辺で睡眠不足から早速ダウンしかけて目を見開くことに必死になっていたんだった。何があったのかは覚えていません 技術力的にも精神力的にも法律的にもぶっ飛んでる筑波大学の某アヒルボート先輩の爆笑トークと、警察大学校の人のありがたいお話がありました。SoftEtherVPNにシリアルが仕込まれていると知ったのでついさっきアンインストールしてきました、今までありがとう!これからはTor君のお世話になることにしたよ!いや別に何もヤバいことしてないからね、してないからね、大事なことなので2回言いました

2日目

待ちに待ったWebセキュリティクラスの専門講義が本格的に始まりました!

専門講義

今回、主軸として扱ったのはFirefoxOSです。世界では既に発売されている国もあるそうで、日本ではKDDIから今年中に発売されるようです。このクラスで扱った、貸出用端末はFlameという名前でした。FireからとってFlameのような感じ?ちなみにFireとFlameには以下のような意味の差異があるようです(どうでもいい)

[調査] fire と flame の違い - 英語学習SNS Q-Eng

いろいろ弄ってみて、出たての端末にあるような初々しさを感じていました。そりゃね、コピペ機能が無いテキスト入力中のボタンが無い状態だもんね。現在開発中ということなので、これは待つしかないですね…その他に、未修整のバグと思われる挙動によってundefinedが現れて、「あーほんとに全部HTML+CSS+JavaScriptで動いてるんだなぁ」ということを改めて実感しました。あらゆるもののクラウド管理に関しては大賛成なので、今後の発展に期待したいところです!

さて今回事前課題として「FirefoxOSアプリを作る」というものが出ていましたが、何と…6時間で作りました!まぁセキュキャンの応募用紙も締切直前に2時間で書いたような奴だし、しょうがないね。

  • 7月20日週
    大学の期末テスト3つ、レポート1つ、ホモ4人でのナガスパオフ
  • 7月27日週
    大学の期末テスト5つ、レポート2つ
  • 8月7日週
    夏休み前の焼き肉オフ、ホモ9人での1泊2日熱海オフ

ほら忙しかったし(ホモ特有の言い訳)もっと前からやっとけって?締切が近づかないと動かないのは自分の悪い癖です。ほんとにすみません。許してください。何でもしますから。

普段は真性のPHPerJavaScriptとか全然触らないので、問題を見つけるとググっては修正しての繰り返しでした。そうしてたたき上げで煩雑に作ったアプリがこちら、YouTube Viewerです!

f:id:To_aru_User:20140818192138p:plain

みんな大好きBootstrap使ってます!え、手抜き?うるせーよ(開き直り)せっかくなのでjQueryも今回初めて使ってみることにしました。

f:id:To_aru_User:20140818192435p:plain

下までいくとこんな風にMoreボタンが現れて、タップすると残りの分を読み込みます。最初は領域外に引っ張ると(スマホ特有のビヨーンって伸びるアレ)をやりたかったのですが、やり方が分からなかったので今回はパスしておきました。

f:id:To_aru_User:20140818192820p:plain

画像かタイトルをタップするとこのように再生用画面が立ち上がります。

よくある質問

  • 画面小さすぎィ!
    うるせーなとりあえずモーダルダイアログ使ってみたかったんだy察しろ
  • HTML5のvideoタグなんで使わないの
    ようつべ兄貴は直接APIで提供してくれなくて結構めんどいんだよ察しろ
  • これ公式Webの完全劣化だよな?
    そうだよ(便乗)
  • どうせならニコ動でやれよ
    最初そうしようとしてたんですがニコ動は更に敷居が高かったので諦めました(もっと早く着工してたらやってたかもしれない)

ってな感じでいろいろ突っ込みどころはあるんですが察してあげてください。

今回このアプリを作る上でネックとなったのが、CSP (Content Security Policy)ですね。知らない人はググってね。単刀直入に言えば、HTML・JavaScriptCSSの完全な分離を強制させ、XSS攻撃等を根絶することが狙いのセキュリティポリシーです。どうやらFirefoxOSのアプリでは、これを必ず守らなければならない仕様となっているようです。

ハマりポイント

  • styleタグ, style属性などは一切使ってはいけない
  • onclick属性, onload属性などは一切使ってはいけない
  • javascript:といったスキームも使用出来ない

だからこうする

  • CSSの内容を全て外部に分離させる
  • JavaScriptの内容を全て外部に分離させ、イベントにはイベントリスナーを用いて対応する
  • イベントの取り消しにはe.preventDefault()を用いる

一般的なブラウザにおいてはこれでCSPは守ったことになるのですが、FirefoxOSはこれだけでは不十分で、manifest.webappにて以下のような対応が必要です。

  • typeをprivilegedに設定する
  • permissionsにsystemXHRを追加する
{
  "version": "1.0",
  "name": "YouTube Viewer",
  "description": "絶賛手抜きアプリ",
  "launch_path": "/main.html",
  "icons": {
    "128": "/logo.png"
  },
  "developer": {
    "name": "mpyw",
    "url": "http://mpyw.hateblo.jp"
  },
  "type": "privileged",
  "permissions": {
    "systemXHR": {
      "description": "ようつべAPI用"
    }
  }
}

これで行けると思ったのですが…なんと、jquery.min.jsの修正まで必要でした。XMLHttpRequestコンストラクタに特別なオブジェクトを渡さなければならないようです。というわけで、ライブラリに対して検索をかけて、

...new XMLHttpRequest...

となっていた部分を

...new XMLHttpRequest({mozSystem: true})...

と書き換えて、ようやく動いてくれました。いやー、ほんとに大変でした。フォロワーさんにもいろいろ教えていただいて勉強になりました、ありがとうございました。

…というように事前に大事な内容を自ずから予習するような状態だったので、講義の方も復習するような感じでしっかり頭に入ってきましたね。ちょうどよかった。

BoF(Birds of Feather)

その後にあった、講義を聞きたいグループのところに行って自由に過ごすやつですね。形態としては悪くないと思うんですが、何せ…

うるさすぎィ!

なんであの広さの空間で4グループもカオスにしゃべり倒してんの?何も聞こえないよ!

というのが率直な感想です。正直これは中身が良かったとしても、その中身が聞き取れなければ時間の無駄にしかならないので、幾らかの改善はあったほうがいいと思いました。

3日目

企業見学

トレンドマイクロさんの東京本社の方にお伺いしてきました!

f:id:To_aru_User:20140818201335j:plain

f:id:To_aru_User:20140818201933j:plain

2枚目の写真はベリサイン本社です、トレンドマイクロじゃないです。最初はこんな感じのオフィスをイメージしていたんですが、東京の一角にあるビルの各階に飛び飛びで存在しているような感じでした。厳重にロックされたマルウェア解析ルームと、営業向けの広々とした部屋が対象的でしたね。

出迎えで3人の方にプレゼンをしていただきましたが、最も強く心を打たれたのは3人目の女性社員の方でした。「先方の2名が真面目なプレゼンをしたので私は軽~く」という出だしのようでしたが、学生時代にPHPスクリプトを書いて大金を稼いだという点に真性PHPerの自分に通ずるものを感じ、その後の

「道具や手段を愛しすぎてはいけない。創造こそ愛すべきものである。」

というような言葉が、創造的なことを怠るようになってしまった自分の胸に強く刺さりました。まさに最近自分が悩んでいたようなことだったので、ハッと目を覚まさせられるような感銘を受けました。その後時間が無くてサッと流されたネタスライド内の「恋愛はUDPで行け」という言葉もかなりウケましたwww

その後の座談会では偶然にも(運良く?)お隣に来ていただき、そこまでの自分の思いを打ち明け、直接のお言葉を頂くことが出来ました。本当に素敵な方でした。もうちょっと歳が近かったならなぁ…

脆弱性探し

「あのお姉さん絶対モテるよね」という話をこあつう氏とTwitter上で交わしながら、バスの中でらまっこと彼の大好きなXSSについて熱いトークをして帰路を辿ってゆきました。

戻ってからは専門講義の続きとして、オレオレSNSという、わざと脆弱性が仕掛けられたWebサイトを見つけて攻撃していくゲームが始まりました。以前名古屋のミニ・セキュリティ・キャンプで参加させていただいたときはサーバーサイドへの着眼点が多く、今回はFirefoxOSアプリを使用するということで、クライアントサイドの脆弱性が中心とな

…るはずでしたが、

講師陣「CSP強すぎィ!(脆弱性作り込めない)」

まぁしょうがないね、多少はね(納得)

また、「さすがにこれは脆弱性としてはあり得ないだろwww誰がこんな酷いシステムにするんだよwww」と突っ込みたくなるようなものまで見つかりました。

さすがにちょっとこれはやりすぎ?普通はあり得ないかも…

  • クエリにIDを付加するだけでその人になりすませる
  • クエリをちょっと操作するだけで管理者権限になれる

着眼点としてはいいかも!

  • 秘密の質問への回答に成功するとすぐログインが完了する
  • 画像のEXIFデータ出力部分にXSS脆弱性がある
  • 符号化を暗号化として謳っている

4日目

午前中に前日の演習のまとめを発表した後、午後からお待ちかね、CTF(Capture The Flag)が始まりました。脆弱性を突いて内部にあるフラッグファイルを回収したり、暗号の問題を解いたりすることによって得られた点数を競い合うゲームですね。

さぁ、張り切っていくぞー!

…解けない!Webの問題なのに全然解けない!開始直後からこんな状態でした。CTF自体はほとんどやったことが無く、初心者と言えば初心者なのですが…全く解けないのはつらかった。

そしてようやく最初に解けた問題が、スマホについた指紋跡の画像からロック解除パターンを特定するというものでした。15回まで回答出来るのですが、何と一発で正解しました。今回のCTFで自慢できるのこれだけですね(人権喪失)

  • CSPの問題は解けそうだったのですが、最後の詰めが甘く、末尾に"をつけ忘れているというような凡ミスになかなか気づけずに苦しみました。最終的には仲間のサポートもあって正解までこぎつけることが出来ましたが、得たのはたった50ポイント…
  • SQLインジェクションの問題は、MySQLload_file 関数の結果を UNION でくっつけて任意のファイルの情報を読み出せるところまでいきました。PHPファイルのソース自体や、データベース内の任意のユーザーのパスワードのハッシュ値も特定可能でした。そして、この問題を作成したやぎはしゅさんのアカウントが管理者権限を持っていることも突き止めました。それなのに………解けませんでした。時間をかけたのに解けなくてすごく悔しかった。
  • スクリーンキャプチャの500点問題(100×5)は、頭が固すぎて、最初の1問目の解き方に気付いたのが終了10分前でした。2問目以降もPHP好きな自分ならば解けてたような問題だったらしいので、本当に勿体なかった…

(途中でアタックチャンスに出てなかったら違ったけど)最終成績は最下位です。こんな感じで非常に悔しい結果となりました。解けそうで解けないような問題が多かったのも痛いですが、深刻に感じたのは

他のクラスの人はWebの問題が理解出来るのに、Webの人は他のクラスの問題が理解できない

ということです。講義の内容は良かったのですが、バイナリ系の問題の占める率が高いCTF目線で考えると、この場では役に立たないようなものが多いと感じました。

  • 「いや、そこは自分がWeb選んでやってるんだから、自習が必要でしょ」
  • 「レイヤーの差が気になるのは抽象化が足りていないだけだろ」

こういう意見もご尤もなのですが、何ともいえない「実力の差」を見せつけられたような気分になりました。5日目の帰り際にどうしてもそういった気持ちが抱えきれなくなったので、講師陣のにしむねあさんはせがわさんにお伝えさせていただきました。

来年のセキュキャンでは是非、ネットワークの内容もやってください!

と。

…とはいっても、もう自分には参加の機会はやってこないので、自分で何とかしていくしかありません。ちょうど大学で夏休み明けから始まるネットワーク性能評価という講義で、パケット解析のような低レイヤーの内容も触っていけそうな感じなので、この講義は是非履修しておこうと考えています。単位は出にくいらしいですけど

高レイヤーばかり触っていて、低レイヤーのことを(大学で触れた内容以外で)ほとんど知らなかった自分の実力不足を痛感させられたCTFでした。自分の憧れの存在であるフルスタックエンジニア(低レイヤーから高レイヤー、はたまたデザインまで何でも出来るエンジニア)には程遠いかもしれませんが、トレンドマイクロ訪問時にも痛感した同じ方法を繰り返す適用するだけで満足するようになってしまったアスペルガーのような自分を何とか打開するいいきっかけになればいいなと思います。

5日目

5日目はグループワークでネタに走ったよーーーーーーーーwwwwwwwwww中身スッカラカンサーセンwwwwwwwwwwwww

いやーまぁいろいろあったけど5日間楽しかったです!みなさんお疲れ様でした!

ブログ移転しました!

長年使っていたFC2ブログを捨ててはてなブログを始めてみました。旧サイトにはリンクから飛んでください。いやーそれにしても

<?php
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html>
  <body>
    <p><?php echo 'こんにちは' ?><?='世界'?></p>
  </body>
</html>

Markdown記法使えるって最高ですね!プログラマがブログサイト選ぶならここ1択でしょ!