Write and Run

it's a simple way, but the only way.

2018年に個人でウェブサービスを開発するときの気持ち

  • (ウェブ系の)最近の技術のトレンドは組織のスケールにフォーカスしている気がする
  • 企業などのデカい開発組織で開発をするための技術(ツールや方法論)が充実してきた
  • 従来は企業での開発もあまり規模が大きくなかったので、個人での開発と同じような技術を利用していた気がする
  • 今では企業と個人では開発の規模に大きな隔たりがある気がする(昔も当然あったが、それはどんどん拡大している)
  • 規模が違うと適切な方法論やツールも違う
  • たとえばマイクロサービス化
  • 個人の規模でやっても不幸になりがち
  • サービスを分割したからといって自分以外のだれかがパラレルで開発をやってくれるわけではない
  • 運用・管理コストが自分に跳ね返ってくるだけ
  • シングルスレッド CPU でたくさんスレッド走らせたときの不毛さに近い
  • コンテナ技術とかもそう
  • デカい組織での便利な使い方と、個人での便利な使い方は違う
  • うっかり個人で企業の真似すると不幸
  • いずれにせよ便利な技術だけど、適切な使い方は違う
  • kubernetes とかもむずかしい
  • そもそも運用だるいがち
  • 組織だと運用コストよりスケーラビリティのメリットのほうが大きいかもしれない
  • 個人だとだいたい運用コストのほうがでかい(運用してるけどやはりつらい。家に帰った後の時間で面倒見られる規模じゃないと思う)
  • でも kubernetes 前提の便利ツールとかはたくさんある
  • 便利ツール使いたい
  • 個人開発でもコミュニティの恩恵を受けたい
  • でも無理
  • 以上、お気持ち

今日のChromium OSビルドバトル2

結果

初勝利

 

ヒーローインタビュー

ath10k のファームウェアを刺すのが難しかった。

コードネーム eve とかいう未発表の Chromebook とハードウェア構成が近かったため、様々な設定をそこからパクってきた。

 

次回に向けて

タッチパッドが変な動きをするのを直したい。

あと、本命のショートカットキーのカスタムを進めていきたい。

ISUCON8出た

osyoyu(星宮いちご), koba789(霧矢あおい), everysick(紫吹蘭)の三人(ソレイユ)で出た。

伝統のサーバーサイドプログラミング

我々はローカルで開発をしない。代わりに1台目のサーバーにログインし、本番サーバー内のコードを直接編集する。

メンバーのうち、私を含む2人(everysick, koba789)は歴史的経緯により dotfiles がほぼ同じ*1という仲だったため、残り1人(osyoyu)を犠牲にして、私の dotfiles を流し込んだ。

アプリケーションコードの変更は、使い慣れた設定の環境が使える私と everysick で一台のサーバー(作業環境)を奪い合いながら、ソースからビルドした emacs 26 を使って行った。ちなみに osyoyu は vim 使いである。

これによる利点は、必然的にペアプロが強制されるためにケアレスミスをとにかく減らせる点にある。

昨年からこの作戦を採用し、効果は十分に確認されている。

git利用可、ただしpush/branchは禁止

git 禁止という過激な選択をした昨年に引き続き、今年も git に関しては慎重な姿勢でチーム内のルールを決めた。

結果、merge が必要になるような操作は禁止し、必ず歴史が master 一本になるような運用でのみ、git を利用可能とした。

つまり、commit と revert くらいしかできないということである。

前述の通り編集は本番サーバー内で行うため、git の分散リポジトリとしての特徴は全くいらないという判断である。

log, diff が使えたのは git 禁止より便利だったので、この作戦は有益であるといえる。

mamiya.sh

昨年に引き続き、今年も登場した mamiya.sh。

これは編集用の本番サーバーから、他の二台にコードを撒くためのスクリプトであり、某の超優秀なデプロイツールから名前を借りている。

ただし、すごいのは名前だけで、実態は rsyncssh くらいの小さなシェルスクリプトである。

前回は俺が当日に書いたが、今回は osyoyu が書いて持参してくれた。今回の osyoyu は事前準備賞である。

get_events2

前回の git 禁止の影響で、初期実装のコードを破壊せずに進めるクセがついていた。

そのため、 get_events の改善のために get_events2 メソッドを新規に定義して実装した。

API のエンドポイントを差し替えるときも /api2/ などとすることで git に頼らずに既存実装を保護した。

これのナイスポイントとしては、画面上で元の実装が確認しやすく、またバグったときに戻しやすい点が挙げられる。

総評

reservations のロックを潰せなかったのは悔しい。

ちなみに我々は計画的なので今回も素振りはありませんでした。精進あるのみ。

*1:大学入学直後の everysick に、同期だった俺が自分の dotfiles を勧めたのがはじまりで、彼の dotfiles は私のそれの fork なのだ

極度に寝すぎた土日は無と区別がつかない

  • 金曜日の夜に飲んだ
    • 1時半くらいまで飲んでた
    • そのあと終電を逃した後輩と4時くらいまで Rust の話とかしてた
  • 土曜日は15時に起きた
  • 土曜日の夜に飲んだ
    • 就活で悩んでいる若者の人生相談に乗った
  • tokio::io::stdin() の poll_read がブロックする問題に気づけず4時間くらい溶かした
  • 日曜日は14時に起きた
  • トイレにいるときに UberEats が来て最悪な日になることを確信した

結果