ぴんく色のゴミ箱

pwnのことは一切書かないし大嫌いです / 書いてあることは全てフィクションで事実は一つもありません / このブログに筆者は存在しません

ポンにゃ!のはなしをしよう

うわぉぉぉぉぉぉぉぉあわわわわわぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ。

研究する上で気をつけてること

さて、今日は進捗0でした。というわけで酒を飲んでます。サッポロ黒ラベルの500mLと、ファミマのからあげ醤油味(3個入)。おいしいね。

今日は進捗0だったけれども、まぁ大して気にしてません。というか、ちゃんと大学行った事自体を全人類は褒め称えるべきです。この酒はやけ酒ではなく、祝杯です。取り敢えず頑張った自分へのね。乾杯。

今日は全く進まなかったけど、取り敢えず研究を進める上で気をつけていることというのを列挙してみようと思います。整理は大事です。整理は、するだけで進捗に成るからね。

小まめにブランチを切る・ちゃんとメッセージつける・issue/PRで管理する

開発全般における話です。大したことないですが、大事なことですね。

今はこの学会に出すためにこの実装をするというのをしているわけですが、勿論締切があるわけです。そんな中で、まぁ大体は新しい機能をつけるとバグります。とりわけ今はハイパーバイザをいじっているため、デバッグもむずいです。ましてや、現在は実デバイスに関係するコードを書いているためハードの仕様的なエラーもたくさん出てきます。最近はどうしても解決しないバグを治すため、Intelのマニュアルとにらめっこしてエラーの原因としてあり得るチェック項目が100近くあったわけですが、そのチェック項目に対して黙々とテストケースを書いてエラーの原因を解明しました。そんなわけで、まぁバグるものと思って新機能を書いています。

バグったときには、当然問題の切り分けが大事です。特にハイパーバイザだとレイヤーが増えるので尚更です。ハイパーバイザのコア部分が悪いのか、ドライバが悪いのか、ゲストが悪いのか、デバイスが悪いのか、リモートホストが悪いのか。原因を突き止めるのに一番有効なのは、バグってなかった時点までcheckoutすることですね。というわけで、ブランチはこまめに切ることにしてます。デバッグ用のブランチも、おうちで酒飲んでるときに見返せるようにpushします。酒飲んでるときにバグを見つけるというのは、この2ヶ月間だけでたくさん経験しました。新しいコードを書くときは、どんなに小さくてもブランチを切ります。マージするときはPRを建てます。バグったら、issueを建てます。脳内の容量には制限があるので、ネットの海にちゃんと流しましょう。

また、stashするときもちゃんとコメントします。原因を切り分けるためのテストコードをこまめに書くことが多いため、stashのスタックが多くなりがちなので、いつでも戻せるようにstashはpopではなくapplyします。

また、論文書くためのコードは、卍妥協卍がたっぷりだと思っています。プロダクトとしてリリースするわけではないので。いざとなったら「時間の都合上実装していないが、XXXに対応するのは簡単である」で逃げられます。そんなわけで、まずは形にするためにも現在書いてる機能を泣く泣く捨てることも割と有ります。そういうのもあって、ブランチを沢山切るのは大事ですね。もしも取り敢えず形にした上でrefineしたいときは、過去に戻れます。すごいね。あれ、これgitの説明してるだけじゃね?きのせいです。ブランチだけにね。

人に聞く

これも当たり前体操です。幸いなことに、研究室にはいつでも聞ける先輩がいて、先生にも気軽に意見を求めることができる(但し、忙しいっぽいので頻度は低め)ので、なんかあったら雑に聞いています。

但し、情報系だと割と難しいポイントが有ります。電気系にいたときは、概念的にわからないところとか、実験でわからないところは十分口で説明できていました。こういうプロセスをしたところ、基板がこうなったみたいにいえば、先輩は大体原因を教えてくれます。けど、情報系の場合はコードを書きます。大抵の場合は、ドキュメントもなく、specificでspecializedなコードです。読ませるコードと対局にあるコードと言えるかもですね。それは、概念をコードに落としたPoCですが、それ故に質問を受けた人はそのコードを確認しないとアドバイスできない場合が多いように感じます。

それをちょっとでも緩和するために、誰かに聞くときは、今やりたいこと・やってること・実装概要・結果(バグ)・推測の5点をできる限り伝えるようにしています。それも、別日でも何回も繰り返して言います。研究室なんて無限人いる(というのは嘘で、今いる研究室はそんな人数多くないけど)ので、自分の現況を相手が覚えていないこと前提で毎回ちゃんと説明します。そうすると、コード自体こそ見ていないものの、先輩は原因としてあり得るポイントをなんとなく共有してくれます。勿論コードを見ていないので大抵の場合はそれが正解ではないですが、そこから視点が広がって解決することもしばしばありました。

また、ラバーダックはあなどれません。ラバードックがテディベアを背負って歩いてくるかもしれません。現状をまとめて取り敢えず投げるというのは、やっぱり大事だって近所の小学生が言っていました。

そんなときに役に立つのがやっぱりissueとPRですね。現況を共有する上でも、もらったコメントを忘れずに記録しておく上でも、全員が見れる場所に置いておくというのは大事です。

息抜きする・諦める

無理な日は無理ですね。そういう日はそういう日で、ドトールのコーヒーを飲むための一日もあれば、サンダルで散歩するための日も有ります。その日はバグが治る日ではなかっただけです。責めるなら梅雨を責めてください。世の中の大半の悪は、湿気が高かったり雨降ってたりすることが原因です。つまりは気象庁が悪いです。ぼくはなにもわるくない。

というわけで、今日もそんな日だったので、諦めて研究室のソファでネット麻雀して、スマブラして、お家帰って酒を飲んでます。だってそうするべき日なので。そうしないのは寧ろ自然の理に反してますよね?

ISの地下とスマブラについて

学部は電気系でしたが、まぁ言ってしまえば行きたくて言ったところではないので、そんなに楽しくはなかったですね。院で同じ轍を踏むのもあれだったので、院試では行きたい研究室だけを狙い撃ちしました。その専攻の研究室全てに対して、行きたい・どっちでもいい・行きたくないの3つの印をつけていくタイプだったのですが、今いる研だけにマルをつけて、あとは全部バツで出しました。そうすると、面接のときに落ちたらどうするんですかと聞かれます。胸を張って、取り敢えず一晩寝ますと答えましょう。

さて、大学のISと呼ばれる学部には、地下というエリアがあって、そこにパソコンが置いてあってIS民達がたむろしています。外部の人が行くと怖い先生に怒られる可能性が有りますが、一度見に行ったところswitchが置いてあってスマブラができる状態でした。もともと学部はISに行きたかったのもあって、地下に置いてあるスマブラに対してある種の憧れのようなものをずっと持っていたわけです。というわけで、今の研究室になってから、速攻でスマブラを導入しました。スマブラは、桜井さん曰く卍楽しいパーティーゲーム卍です(本当はDLC蔓延るカズヤ最速風神拳ストレスゲーです)。研究室の人ともこれがきっかけで話せるようになったと言っても過言ではありません。まぁ良いことかと言われれば知らんけど、知らんことは、知りません。多分やることやってればOKです

インターンというものについて

なんかこの世にはインターンというものがあるらしいので、何個か出してみました。大抵コーディングテストとかいうものがあるので厳しいですね。コーディングなしで通してくれた会社さんは大好きです。あと、この前やったやつは奇跡的に解けたので大好きです。あとバームクーヘンとか、大好きです。覚えといてね。乾パンは最近あんま食べてないです。これ、トップシークレット。

おわりに

なんか書こうと思ってたことが他にもあった気がするけど、忘れました。

最近は週7で研究室に行っていて、家の中が荒れ気味なのでちゃんと掃除したいです。良い息抜きを見つけようと思います。雑に人を誘ってはま寿司行くのにハマってます。はま寿司一緒に言ってもいいよという人がいれば、大歓迎です。

ちなみに、この記事は https://wywiwya.smallkirby.xyz/view/xR3bLi5AaFxVMONXJKBW の転載です。天才ですね。

乾パン is everywhere...