mizdra's poem

雑なこと (日記/技術ポエム/メモ/…) を書くブログです.

2019年を振り返って

年の瀬なので1年の振り返りをします.

※年内投稿チャレンジ失敗したので, 各自「今年」を2019年, 「来年」を2020年に読み替えてください.

技術

まず技術関連の話. 今年作った技術的成果物一覧です.

  • Now Browsing ツール (1〜9月) (WIP)
    • Twitter で Now Browsing するツール
    • 普段 Tweet: Now Browsing!Omnitweety を使って Now Browsing してるのだけど, いまいちイケてないな〜と思って自作してる
    • 日常的に触るツールになるので, 結構気合入れて作ってる
      • ちゃんと要件定義したり, プロトタイプで実際に機能するのか確認ながら技術選定したりと丁寧にやってる
      • 丁寧にやりすぎて開発着手から9ヶ月経った今も完成してないのだけど, まあそれも個人開発の醍醐味だよねということでのんびりやってます
    • 来年の夏までにはリリースしたいな〜
  • ターミナルエディタ (3〜4月)
    • 大学のネットワークプログラミング実験の課題でターミナルエディタを作った
    • 実はエディタ自体は去年の10月に完成していたのだけど, コードは公開してなかった
      • 折角面白いプロダクト作ったので皆に見てもらいたいな〜と思って, 3月くらいからちまちま公開作業してたのでした
    • その成果がこちらです: mizdra/minimum-ot-editor
    • 見どころ
      • 複数人で同時編集できる
        • Operational Transformation というアルゴリズムを採用することで, 変更箇所が衝突しても良い感じに変更されるようになってる
        • 同時編集の様子: YouTube
      • サードパーティライブラリを一切使わずターミナルエディタを実装
        • ターミナルにはANSI Escape Sequenceと呼ばれる一部の文字列をターミナルを制御する特別な文字列として扱う機能がある
        • これを使って, エディタ画面のリフレッシュやカーソルの移動を実現してる
      • 現代的な C 開発環境
        • Language Server Protocol (clangd) 関連の設定仕込んだり, フォーマッタ (clang-format) 導入したり
    • 本当は記事も書いて紹介したかったのだけど, 力尽きてしまった
      • 今度 WebAssembly + WASI + Emscripten で ブラウザでデモ動かせるようにしようと思ってるので, それが出来たら記事書こうかな
  • フリーマーケットのレジシステム (10〜11月)
    • サークルの学祭の出し物で「ジャンク市」という怪しい市を開催していて, その市で利用するレジシステムを作っていた
    • レジシステム自体は今までの学祭で何度か作ってるのだけど, システムが複雑すぎて誰も継承できず毎年作り直す羽目になってる
    • 流石にそれじゃイカンだろう, ということで今年は巨大な出来るだけシンプルな構成で作り直してみた
      • 技術スタックは Node.js / express / REST API / prisma2 / Next.js / TypeScript / passport.js という感じ
        • 巨大なWebフレームワークは使わず, シンプルな技術を組み合わせで構築してる
        • 後はバックエンド・フロントエンドの言語をTypeScriptで統一したことで, TypeScriptさえ読み書きできればメンテできるようになってる
        • Next.js はWebフロントエンドのビルド周り任せるために入れたのだけど, これはまあ微妙な選択だった気がする
          • SSR要素必要ないので Parcel + React でも良かったと思う
    • 技術的挑戦という話だと, バックエンド・インフラ・ハードへの挑戦が挙げられる
      • passport.jsで部のLDAPサーバと連携してLDAP認証したり
      • 今話題のSameSite=Strictをセッションcookieに付けて「外部サイトからアクセスするとログアウトされた状態になってる〜」とかやったり,
      • 部のサーバにlxd入れてSystemdでサーバプロセス管理したり
      • DNSレコードやnginxの設定弄って部内サーバ上のWebサーバを外部に公開してみたり
      • レシートプリンタ使って値札やレシートを印刷してみたり
      • こういう普段触らない部分触れるのは色々勉強になって良かったです
        • 普段Netlifyで完結するようなWebアプリしか作ってないので, バックエンド・インフラ・ハード触る機会全く無いんですよね
        • 実際触ってみないと分からないようなところが分かるようになったのは大きかった
  • 今日のゆゆ式 (12月)

去年と比較すると成果物は半減してるけど, まあ今年は色んな分野に手を伸ばせたのでトントンという感じですね. 来年は色んな分野に手を伸ばしつつ成果物の量を増やしたい.

GitHub

去年

f:id:mizdra:20181229234343p:plain

今年

f:id:mizdra:20200101021201p:plain

ついに1000の大台に... と一見めでたいように見えるのですが, 300 contributions くらいはお仕事の分で実際には去年とほぼ変わらないです. 開発の速は次第に上がってるけど, 開発に割ける時間が減ってきていて伸び悩んでます. 来年こそ個人開発だけで 1000 contributions 超えたい.

アニメ

animetickを見ながら良いと感じたアニメを列挙するコーナー. 良い << 最高 << 優勝 の順でランク付けしていきます.

  • 2018冬
    • 私に天使が舞い降りた!: 優勝
    • 約束のネバーランド: 優勝
    • かぐや様は告らせたい~天才たちの恋愛頭脳戦~: 最高
    • 転生したらスライムだった件: 最高
    • 賭ケグルイ××: 最高
    • 五等分の花嫁: 良い
  • 2018春
    • 進撃の巨人 Season3 Part.2: 最高
    • 鬼滅の刃: 最高
    • ぼくたちは勉強ができない: 最高
  • 2018夏
    • 女子高生の無駄づかい: 優勝
    • からかい上手の高木さん②: 優勝
    • 鬼滅の刃: 最高
    • まちカドまぞく: 最高
    • 彼方のアストラ: 最高
    • ダンジョンに出会いを求めるのは間違っているだろうかII: 良い
  • 2018秋
    • BEASTARS: 優勝
    • 慎重勇者~この勇者が俺TUEEEくせに慎重すぎる~: 最高

「女子高生の無駄づかい」がめちゃめちゃ良かったです.

アニソン

今年ハマったアニソンの中でイチオシの曲を紹介するコーナーです.

しんみり/さわやかな曲に弱いことが分かる.

漫画

今年のイチオシ漫画を紹介します.

『微熱空間』が今年のベスト・オブ・漫画です. 最近ラブコメ結構好きだということが分かりつつある. 来年はラブコメ方面でもうちょっと漫画漁ってみたいですね.

おわりに

2019年もやっていきましょう.

*1:自炊(2日) + プログラミング(1日) = 3日