2021年の目標リスト

  • 2021年は手を動かしていきたいので、漠然とするより具体的に手が動く範囲に目標を小さく分割したいと思いました。宣言すると後に引けなくなるので日記帳に書いてみます。
  • 今まで書き溜めていた日記ややりたいことリストを結合したものになります。

2021年の目標

  • #1 SNS作る。

Misskeyを使ううちに非中央集権的なSNSに興味が湧いて、ActivityPubというプロトコルに対応したSNSを作りたいなと思った。IIJの分散SNSを使って技術を覚えるという記事を見て、インフラと分散SNSというテーマでやると、僕が将来働きたいSREのようなレイヤに求められる知識もつくのではないかと思っている。あと、昔から好きだったサマーウォーズという映画で出てくるOZという仮想世界への憧れが未だにあって、SNSと格闘ゲームは作ってみたいとずっと思っている。

  • #2 CTF開催する

2020年は国内で多くの初心者向けのよいCTFが開催された。僕は競技(競技プログラミング、CTF、ICTSC、ISUCON...)のインフラがどうなっているのか、どうやってリクエストをさばいているのかに関心があるので、開催してみることで裏側が分かるかもしれないと思っている。しかし、2020年の初心者向けCTFの多くが非常に問題の質がよかったと思っているので、もう少し僕自身が強くなければ満足の行くCTFは開催できないだろうと感じた。したがって、サークル内など内輪向けにCTFを開催することを2021年の目標にしたい。

  • #3 ハリネズミ本を読む

ハリネズミ本は内容が古くなっているので修正しながら読んでいる。気になったところをすべて追いかけているのでだいぶ進みが遅いけど、そろそろ読み終わりそう。

  • #4 Kindleバイナリ本を読む

この本→はじめて学ぶバイナリ解析さらっと目を通しただけなので、ハリネズミ本を読んで現代版に修正した知識が合っているか答え合わせの感覚で読む。

  • #5 Car hackers handbook (humble)を読む

Humble Bundleのセールの時にたくさん購入したセキュリティ系の洋書、読めてないです...(:D)| ̄|_ なかでも一番関心のある車のハッキングについて読みたい、読みたいと思っております。

  • #6 cs-eduを充実させる

cs-eduは自分が書いているメモのことです。もっと充実させたい。最近はVimとgolangに力を入れている。漠然としているので、東大の理学部情報科学科のシラバスを見て内容を推測して教材を決めているやつを3年生終わり分までやること、にします。

  • #7 codereviewシステム作ってHiCoder内で運用

codereviewというか、もっと気軽にソースコードを公開しそれについて話をする文化をサークル内に生やしたい。

  • #8 Neovimに習熟する

kurenaifさんの動画、実践Vim、mercariのYoutube channelの高速にVimを操る動画を見て自分なりの高速なテキスト編集のやり方を身につける。Thinkpad X240をGUIなしでTextConsoleのみにして、マウスを使わずキーボードもchoco60で矢印を使わずにテキスト編集する練習ができるようにしたので、ここで英文やソースコードの写経をしてトレーニングする。

  • #9 やりきったログにやりきったことを書く。主に本と読み切ったら対応するブログをセットで書く。

やりきったことが大事なので、手を動かして本を読み切ることを大事にする。セットで外向けの形にして出力する癖をつける。kusuwadaさんのブログを見習う。

  • #10 FL Studio買ってデモ曲を作る

インターンでお金を手に入れてFL買おうと思っています。それまではピアノの練習して自分にとって心地よいフレーズを探して録音する作業を続ける。

  • #11 お絵描き 色塗って仕上げるまでやる。

Clip Studio Paint買いました。何枚か書いたけどてんでだめで悲しい。ikanagoさんの2020年振り返りで知ったこの記事が参考になりそうなのでこれ読んで計画立てよう。

  • #12 OS Slackに入る

osdev-jpへの憧れがうーちゃんさんのことを知った時あたりからずっとあって、今のところ自分にはOSについての熱い想いと言えるほどのものがなく、ただの憧れだけなので行動を起こして憧れを熱意に変換したいです。

  • #13 lang-sys slackに入る

プログラミング言語処理系が好きな人の集まりも憧れがあります。こちらは誰でもシュッと入れるようです。でも自分の中で憧れが熱意に変わるときに入りたいなと思っています。

  • #14 CPU Slackに入る

CPU自作のためのコミュニティがあるようです。最近FPGA周りを調べたり物を購入したりしているので、これも一定のかたちになったらこちらのSlackにお邪魔したいと思っています。

  • #15 サービスを立ち上げて世の中にホストするまでの流れを掴む。(rs-web-starterを完成させる)

2020年にインターンの面接で「実際にサービスを運用するまでの流れは分かる?」と言われて、運用まではやったことがなくうまく答えられなかったのが悔しく残っています。継続的にデプロイし続ける体験を積みたいです。rs-web-starterはRustで対ハッカソン用に高速にWebサービス作成を行うためのGitHub templateです。ただいろいろ限界を感じたので、高速性ならRailsじゃないかとか、goのnet/httpレベルのライブラリを作成すれば、Rustでもほぼ標準ライブラリのみで戦えるのではないかとか、いろいろ試行錯誤しています。2021年はRustでWebサービスを作ることについて、学生目線でロマンを追い求めた結論を出したいです。

  • #16 CTFのホスティングを自分が納得する形になるまで考える

任意コード実行環境を提供することに対する解を自分なりにずっと追っていました(Rootless Dockerがいいのではという結論になった)が、TSGのmoraさんの記事によって解決されてしまった感があります。ありがたいことです。これを試してみてなにか悪いことができないか調べることを2021年の目標にします。

  • #17 k8sを学ぶ

CTFでk8sを使うとリソース管理とか楽になるという話を聴いて気になり始めました。これと別にCyberAgentのインターンで行われたおうちk8sも楽しそうです。学ぶことがたくさんあって嬉しいですね。

  • #18 GCPをCTFのホスティングのために学ぶ

CTFはGCPでホスティングする例が多く、僕が調べた限り、セキュリティ周りの申請がAWSだと必要でGCPは不明(いらない?)という感じなのでGCPでホスティングしようと思っています。kCTFみたいなのもあるしgoogleでCTFやっても特に怒られない気がする(適当)

  • #19 今持っている物理本を読み切る

これは無理ですね。でもがんばります。

  • #20 今持っている電子本を読み切る

これはもっと無理ですね(洋書が多いので)でもがんばります。

  • #21 cs-edu サークル向けweb-eduを自分用に持ってきてupdateする。

web入門記事を書きたい。go+TypeScriptでWebサービスを作成する感じの。

  • #22 F#入門してみた記事を書く。構想として、自作言語からwasmターゲットのコンパイラを、F#の機能をフルに使いながら書くチュートリアルが欲しい。

kodaiさんのF#についてのツイートを見て、型推論/判別共用体/パターンマッチング/アクティブパターン/コンピュテーション式/型プロバイダ/SRTP (静的解決される型パラメータ)を調べるやつをやりきりたい。F#のチュートリアルとして、言語機能を無駄にふんだんに使ったものがほしいなあと思っているので、調べながらコンパイラを書けばよさそう!という楽観的な考えをしている。

  • #23 コード書く量の可視化と公開。generatedなコードも含まれるけど、それは含めて良いことにする。self.uta8a.netで公開したい。

自分のメトリクスを公開してプレッシャーを与えたいという気持ち

  • #24 自宅gitサーバ周りの環境のupdate self.にexportして自動ビルドまで行きたい。

一家に一台サーバの時代が来ると思っているので、それに向けた準備をしたい。

  • #25 ACMに入り、jicchoさんのコンパイラ論文紹介記事を読む。

Jicchoさんのサーベイ記事が非常によい指針になりそうなので、ACM契約して論文を読みたい。

  • #26 ACMに入り、オライリー日本語を読む

オライリー日本語が入ったらしいので確かめたい。

  • #27 自作キーボードを組み立てる(ファーム書き込み調べる)

片手キーボードではんだごての練習から。

  • #28 iPad Air 2020 第4世代を買う。スタイラスペンを買う。

お絵描きを今はペンタブでやっているので、iPadほしいな〜と。物欲です。

  • #29 icedを使ってGUI softwareの素振りをする。

GUIのアーキテクチャ(Elm architectureを他で使う)に興味があります。XMLを使うようなアプローチよりもっといいGUIの扱い方があってもいいんではと思っている。

  • #30 アニメをたくさん観る。

dアニメで2020/12/31現在まで675話観たので2021年は300話ちょい観て1000の大台に乗りたい。

  • #31 講師としての素振りをしたいので、ハンズオンを発表できる場を立ち上げる。seccamp風のなにかをしたい。

これはsuburi-devやサークルでできそう。campをしてハンズオンをするやつやりたいので、まずはハンズオンできるようになるくらいに理解度を深く自分に要求していきたい。

  • #32 discordで精進を記録する。低レイヤ精進は特にgitlab wikiで管理する。リードタイムを意識する。

進捗の記録をしよう。これはやりきることとリンクしています。

  • #33 プログラム意味論の基礎を読み切る

TaPL, CoPLの前段階として

  • #34 uta8a/uta8a(GitHub)にsvgアニメーションつける

GitHubのREADMEで遊べるみたいなので、遊びましょう。

  • #35 rs-web-starterでterraformをやる。

rs-web-starter(対ハッカソン用のRust template)はもし完成させるならterraform含めて完成させたい。

  • #36 自作30日OS本を読み切る

前は半分くらいであきらめたので、手を動かして読み切りたいです。

  • #37 Raspberry pi OS 資料を読み切る

こちらの資料をやる。

  • #38 blog-osを読み切る

こちらの資料をやる。

  • #39 craftinginterpreterを読み切る

こちらの資料を途中までやっているのでやり切る。

  • #40 Rustからwasmでmini-reactを実装する。yewは使わない。

yewを触っていてどうもテスト周りがまだ不十分なこと、結局wasm-bindgenなどでjsを叩くしかない感じがすることから、自分でmini-reactを作れないだろうか?という気持ちが芽生えた。preactの再実装などの例もあるしチャレンジしてみたい。

  • #41 Verda(LINE private cloud)について、同時にCybozuやCyberAgentのprivate cloudも調べる

IT4社合同 エンジニア新卒採用説明会でプライベートクラウドが気になったので調べてみる。

  • #42 企業ブログを読む

企業ブログ読めていないな。RSSで流すなど、いい感じにしたい。

  • #43 oak, DeClangといったLLVM Obfuscutorについて調べる。言語処理系とセキュリティ。

このへん気になるけど知識がないから調べたい。

  • #44 プロダクトを作る。kusuwadaさんのqiita記事に沿ってやってみる。

この記事に沿ってサービスを立ててみたい。仮説検証などの部分も体験しておきたい。

  • #45 HTTF2021 復習 2-opt

マラソンをRustでやってちょっぴり改善できたのが嬉しかったので、復習をしたい。焼きなましなど理解したいな。

  • #46 TOEICに向けて英語勉強

リスニングの機会を増やし、英語の文章の写経をしてタイピング速度を上げたい。

  • #47 101/assume-roleが古いので書き直したい。

assume-roleがメンテされてない気がしたので書き直してみたい。これくらいならRustでやるよい題材になりそう。

  • #48 CS 6120 Compilerの講義。動画もあるようだし年内に手をつけたい。(翌年になって内容なくなるかもしれないので)

Advanced Compilersという講義でビデオもついているので、早めに手をつけたい。

  • #49 運動する。散歩と筋トレ(効果的、体を傷めない方法を調べる)

健康に過ごすことは達成できてきたので、健康のベースラインを上げて、体力値を上げたい。

  • #50 効率化 分割キーボードを使う。キーキャップをblankにしてタイピング矯正をする。

テキスト編集の効率化について考えていて、分割キーボードがよいという結論になった。まだ使いこなせてないのでX240で練習してUbuntuデスクトップの方に導入していきたい。

  • #51 typingを暇なときにやるのを習慣づける。

友人が暇な時寿司打やっているのを見て真似したくなった。

  • #52 カメラを売る(Nikon D5100, Nikon Lens)

価値が下がっているのでもう二束三文だけどスペースとるので売りたい。

  • #53 TEEについて調べる(ComSysの復習)

TEE、何者か分からなかったので調べたい。

  • #54 raspberry pi OSのためにraspberry pi買う。できればおうちk8sに再利用したいので、どの世代のどのスペックを買うか要検討

物欲

  • #55 CTF作問 つまらないものも作ってみたら案外いろいろ調べるので、作り切ることを大事にする。ただ出題するのはつまらないのはよくない(初心者向けならつまらなくても教育的ならよいと思うが)

CTFの作問を頑張る。つまらなくても作るとなるといろいろ調べて勉強になるので、面白いものを作ろうとせずにいい性質と感じたら形にするまでの動作が大切だと思った。

  • #56 Blog OGP自動生成をGitHub Actionsで行う

OGPほしい。でも今のままでもいいかもしれない。

  • #57 Podmanについて調べる

k8s同様、このあたりの用語何も知らないので2021年は基礎的なことを理解したい。

  • #58 Crypto Nigel Smart本を読み切る

Nigel Smartの書いた基礎的な暗号の教科書を読み切る。今年6月頃ずっと集中してやっていたので続きから。格子もこの中に軽くあったのでそこで勉強する。問題はこのへんがCVP回りを扱っていて参考になりそう。

  • #59 リンカローダ実践開発テク本読み切る

リンカローダ本、何回か読んでいるけど理解できてないので今度は納得するまで時間かける。

  • #60 terraform pdf読み切る

クラウド破産回避本も読みたい。

  • #61 githubなどに公開されているCTFの問題、セットごとにすべて解き切ってブログに書く(まずはctf4b)

まずctf4bから。最近ソースコード公開してくれるCTF増えてきて嬉しい。

  • #62 CSS Painting APIを調べる

Houdiniとかどうなったんだろう?という疑問

  • #63 webGLをやる

VJとかやりたい。

  • #64 Rubyで作るRuby読み切る

内容は軽いらしいけどちゃんと手を動かして読みたい。

  • #65 TaPL読み切る

これは厳しいけど、プログラミング言語の基礎概念→CoPL→TaPLの順に攻めたい。

  • #66 京大の関数型について学ぶやつIoPLやる

これをやる

  • #67 Nand2Tetrisをする

bokuwebさんのツイートでこれだこれとなったので、ぼくのかんがえたさいきょうのNand2Tetris(FPGA上に実装したCPU上に載せたOS、言語処理系、ネットワークプロトコルスタック、ブラウザ)を目指す。

  • #68 golangでChatOpsソフトウェア作る

ChatOpsがシュッとできるようなプロダクトをgoで書きたい。

  • #69 Fargate自動デプロイ機構をterraform, CI化する

Fargate+CFnはやったことあるので、uta8a/gopingを改良したい。

  • #70 full stack reverse engineerの動画にあることを実践する

もっと低レイヤに強くなりたい。この動画を何度も見て憧れを募らせているので今年は少し踏み出したい。

  • #71 Slack, discordからデータExportして閲覧検索する手段を整える

検索手段が特に欲しい。

  • #72 情熱を持ってできることを探す

ハードウェアとソフトウェアの関わる技術的に困難な挑戦が最終的に楽しそうだと感じるので、自動運転などを調べてみる。

  • #73 インターンに行く、就活を自分の心の健康を守って進める

インターンどこに行くか、会社の業績など事前に調べて転職時も使えるような知識を頭に入れておきたい。お金や社会は大事。

終わりに

  • これ1年じゃ足りない気がする!