ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

プリンシプル オブ プログラミング 第6章のメモ

プリンシプル オブ プログラミング読書メモです。

第6章 手法 ~プログラマの道具箱~

6.1 曳光弾

最終形にも残る「骨格コード」

  • 全体の流れを早めに通して、狙いを確認する…ということでしょうか。
  • …普段からやってますが、全く意識してなかったです💦

暗闇の中で道筋を照らす

  • これは日々実感してます!

最初に動作する土台を作る

  • アジャイル開発で、常にリリースできる状態を保つ、のもこの考え方に近い?

プロトタイプとの違い

  • 違いは…目的と使用後かしら…。

プロトタイプは試供品と試作品

  • 破棄が前提、だとしたら、あんまりプロトタイプは作ったことがないかもしれません。

その他

  • 読み終わってから、普段動作ってるのか考えてたんですが…
    • ざっくり主題を作る(曳光弾)から、テストを書きながら細かいケアをしてく、TDD的な感じかも。

6.2 契約による設計

「呼び出し側」と「呼び出される側」の取り決め

  • これ、あんまり意識してなかったです。
  • どこにチェック機構を設けるか、について指針になっていいですね。
    • 呼ばれた関数は引数が契約に従っているかチェック
    • 呼んだ側は出力が契約に従っているかチェック
    • …これって、チームで共有してたほうがいい知識ですよね。

「思い違い」の早期発見

  • 早期発見…握りつぶしの反対ですよね。

コメントとアサーションで契約

  • 引数で渡された値を加工しない……今どきは普通にやってますね。
  • 関数のアサーションをそのままユーザの入力チェックに使うな…はそのとおりですね。
  • 入力を厳格にする…はテストをちゃんと書くことにしてると、自然にやりますね。だって書くの大変だもんw

クラス不変表明

  • 「クラスのオブジェクトは常にこういう状態でなければならない」という保証のこと…。
  • あんまり使ったことはないです。

アサーション(表明)

  • Rubyでは言語の機能としては持ってなくて、自作するんだそうです。

トラッシュよりクラッシュ

  • 同意。ダメなときは無理なリカバリをしない。

6.3 防御的プログラミング

「かもしれない」プログラミング

  • ifがあったらelseを常に気にかけるようにしてて、想定外を事前になるべく想定するようにしてます。

開発と運用の安全運転

バリケード戦略

  • わかるようなわからないような…
  • Railsでフォームなどから受け取ったユーザ入力にdirtyフラグがつけられてるようなもの?

アサーション(表明)とエラー処理の区分け

エラー処理におけるバリエーション

  • 確かにこのあたりの手を使いますね…。

エラー処理における「正当性」と「堅牢性」

6.4 ドッグフーディング

ソフトウェアの「味見」

  • 「味見」だとユーザっぷりが足りないような…。
  • 「自ら使う」だけだとちょっと足りないような…。
    • 「日常的に」とか入れたらしっくりくるかも。

ユーザーの視点を手に入れる

  • ユーザとしてちゃんと利用しようとすると、なぜか突然不具合や不便なところを見つけたりする経験がありますね…。
  • 社内システムの場合、業務内容の他に、社内行事などを通じてなんとなく人となりなどを知っておくと…ユーザになりきって使うことができるような気がしてます。
    • でも、デカい現場だと難しそう…。(昔を思い出して。)

自分でユーザーのように使う

  • そりゃそうですねえ…。
  • 自社サービスを使って、ユーザから資金を集めたこともありましたが、これもドッグフーディングですよね。
  • 一方で、サービス運営者・作成者との視点も混ざって持っているので、純粋なユーザではないのはちゃんと気をつけてたほうがよさそう。

6.5 ラバーダッキング

「説明する」というデバッグ

  • 誰かに説明すると解決する、というのを人を使わずにもできるってものですね。

自己解決を促す

  • プルリクエストのセルフレビューのときに、将来何か必要になったときに読まれることを想定して、コメントを残していくときに、ある意味デバッグになってると思ってて…やり始めてから結構コードがよくなった気がしてます。

無機質に説明

  • 同僚はたしかに一番いいけど、いないときもありますもんね。
  • 自分はChatGPTを相手にしてることが多いかも💦

その他

6.6 コンテキスト

「文脈会話」「文脈思考」

  • モジュール名とかクラス名はコンテキストといっていいんじゃないかしら…?
    • だから変な名前をつけるとおかしくなっちゃうというか。

会話や思考を迷子にしない

  • 達人はパターンを知ってるだけじゃなくて、その活用場所を決められるから、というのはそのとおりだと思う…。

コンテキストを示す

  • コンテキストを示す、というのは、モジュール名、クラス名、メソッド名を決めてから書く、みたいな?

コンテキストと作業依頼

  • これ、じゃあどうしたら…。
    • 初心者には事細かに指示し、熟練者には目的を指示するのはわかったけど…中間は?

コンテキストの伝導能力

  • この実験、おもしろいですね。ノンセクションめっちゃ時間かかりました💦

チームはハイコンテキスト志向で

  • そうですね。

コード共通化はコンテキスト志向で

  • まぁ…コンテキストの違うものは似てても違うものですよね。

プログラマコンテキストスイッチ

  • 最近は擬似的な別人になるために、考え事をしているときにわざと中断して、コンテキストスイッチを起こしてます。少し冷静になれる気がしてます。

「システム・シンキング」とドメイン駆動設計

  • めちゃ長い…。

「フロネシス」と全体最適

「関係主義」と障害対応

  • 境目に不具合が起きやすい、みたいな感じですかね?

「プリンシプル オブ プログラミング」読書会 第24回を開催しました

academist-reading.connpass.com

「プリンシプル オブ プログラミング」読書会第24回を開催したので、簡単な感想を書きます。

感想

6.1 曳光弾

ホワイトボードの曳光弾のところ

  • プロジェクトマネージャーやインフラエンジニアから見ると、また違ったものに見えて、ちょっとおもしろかったです。
    • PoCとプロトタイプ、MVPと曳光弾
    • 開発環境やステージング環境など…Dockerも

6.2 契約による設計

ホワイトボードの契約による設計のところ

  • アサーションを、受託開発に当てはめると…幸せになれそうなのに、現実は…難しそうです。
  • トラッシュよりクラッシュなのに、例外の握りつぶしはまぁまぁ見ますよね…。百害あって一利なしなのに。
  • クラス不変表明、いろいろあとから思い返してて…値オブジェクトはこれを厳しく実装してもよさそう。

6.3 防御的プログラミング

ホワイトボードの防御的プログラミングのところ

  • クリーンアーキテクチャのように層にしたり境目を作ったりすると、その間のやり取りはチェックをちゃんとするから、防御的になるかも?
  • AWSなどのクラウドのリソースを見てると、バリケードのようなものが結構ありそうでした。

運営としてのふりかえり

Keep

  • 背景の違うメンバーでやってるので、それぞれ同じ単語を見ても想起するものが結構違ってて、学びになりました。

Problem

  • なし。

Try

  • 次も録画していいか訊いてみる!
  • 次回のページをなるべく早く作る。

最後に

この先もやっていきますので、なるべくみなさんの経験や疑問を聴いて、参考にしていきたいと思います!

第73回Software Design (2025年10月号) 輪読&座談会 に参加してきました

いつもおせわになっている第73回Software Design (2025年10月号) 輪読&座談会 に参加してきました。

https://softwaredesign.connpass.com/event/368841/softwaredesign.connpass.com

予習

表紙

  • コアラの袋の口が下というのを知ってる人がいて、びっくり。すごい、白柳さん。

第1特集 Webとインフラの常識を総ざらい ネットワーク基礎講座 TCP/IP、インターネット、セキュリティの基本を説明できるようになろう

  • このあたり、詳しい方が結構いて、おおっとなりました。
  • あと、それぞれの自宅のネットワークの話で盛り上がりました。最近はホント、ネットワークに繋がる機器が多いですよね。

第2特集 Web開発の新定番 ORM最新事情・PrismaとDrizzle

  • Prisma使ったことのある方がいました。
  • ORMとActive Recordの話、全く説明できなかったなぁ…すみません、みなさん🙏

短期連載

【新連載】Javaバージョンアップ大作戦 【1】半年リリースサイクルを制するバージョンアップ要否の見極め方……杉山 貴章

  • スッと過ぎちゃったけど、どうやってディストリビュータを選ぶか、ちょっと訊いてみたかったです。

連載

ITエンジニア必須の最新用語解説 【202】Amazon Kiro……杉山 貴章

  • もう使われてる方もいて、感想が聞けたがのがよかったです。

Ruby×静的型付け戦略 【6】RBSの生成、管理に使えるツール……桒原 仁雄(pocke)、栗原 勇樹(ksss)

  • あー!これもうまく説明できなかった…すみません…。
  • RBS Rails、自分の中ではスゴイ興奮だったんです…。

最後に

今回も刺激的な会で、ひとりで読むよりずっと学びがありました。 また次回も行こうっと。

Software Design 2025/10 メモ

Software Design 2025年10月号を読んで、ちょこっとずつ感想を書いてます。

gihyo.jp

表紙

  • コアラですねえ。
  • そうそう、最近聞いてびっくりしたのは、お腹の袋の口が下向きなんだそうで…。
    • カンガルーが上向きなので、てっきり有袋類全体で上向きなんだと思ってました。
    • 親の消化した葉っぱを食べるなら、下の方がよい、というのは納得でした。
  • ja.wikipedia.org

第1特集 Webとインフラの常識を総ざらい ネットワーク基礎講座 TCP/IP、インターネット、セキュリティの基本を説明できるようになろう

第1章:ネットワークのプロトコル OSI参照モデルについてちゃんと説明できますか?……長沖 彰

  • 実装はOSI参照モデルのようにきれいにわけじゃない…というのは考えたことがなかったです…なるほど…。
    • 普段、アプリケーションだからなぁ…。
  • 普段ストリームのデータを扱わないから、UDPを忘れがち💦
  • HTTPの歴史って……ほぼ一緒に生きてるじゃん…!
  • WebDAVSVNで知った気がします。
  • HTTP3とQUIC、これいいですね。QUICがTLSを含んでるのがいいですね。

第2章:TCP データ通信の基本をしくみから理解……中森 朋郁

  • 緊急ポインタ……たしかに悪用されそうな機能ですね>< いたずらの絶えないインターネットではちょっと…。
  • スロースタート、高速リカバリ…そういう方法もあるんですね。

第3章:イーサネットとIPネットワーク LAN、スイッチ、ルーティング……水口 直哉

  • はー…ハブのことを勘違いしてました…。世の中、ずいぶん進んで、スイッチングハブが主流なんですね。
    • amazonで値段見たら、めっちゃ安かった…。

第4章:インターネット Webやメールのやりとりのしくみを押さえる……池上 謙一

第5章:ネットワークとセキュリティ 基礎から、認証・認可、暗号化技術、DDoS攻撃、エンドポイントまで……塩治 龍三朗

  • 基本ワンセットそろってて…、また読んでもいいかも。

第2特集 Web開発の新定番 ORM最新事情・PrismaとDrizzle

今こそ押さえたい型安全なDB操作

序章:なぜORMを使うのか? 基本概念からふりかえる……tockn(佐藤 琢斗)

  • 結構いいかも。
  • ORMを使うと、書き味が変わらないのでよいですが…ちゃんと見ないと、スゴイクエリがねぇ…。ときどき流れるSQLをチェックするようにしてます。

第1章:Prisma 直感的で型安全なORM 基礎から実践ノウハウまでキャッチアップ……tockn(佐藤 琢斗)

  • MongoDBも?同じに扱えるのは不思議…。制限があるのかな?
  • whereにundefinedを設定すると、条件未設定になるの、めっちゃ危険ですね…。
    • 1年前のバージョンで修正されてるから…自分がこの危険に遭うことはなさそうでよかったです…。
  • もしTypeScriptで作るときがあったら、選んでもよさそう!

第2章:Drizzle シンプルでSQLライクな新しい選択肢 複雑なデータ操作、高いパフォーマンスを実現できる……鳫林 勇希

  • 見てると、ホントにクエリビルダーみたいですね。
  • なるほど、あれこれやるなら…これもありかも。
    • まとめを見るに、著者はこちらのほうが好きそうかも?

短期連載

【新連載】Javaバージョンアップ大作戦 【1】半年リリースサイクルを制するバージョンアップ要否の見極め方……杉山 貴章

  • LTS、サポート期間、結構長いんですね…。
  • JDKディストリビューションもこんなにあるとは…。
  • 今選ぶなら…とりあえずいろんなプラットフォームで動くAmazon Correttoかなぁ…。

連載

ITエンジニア必須の最新用語解説 【202】Amazon Kiro……杉山 貴章

  • 知らなかったです…!
  • 仕様から一緒につめるって、結構よさそうですね。

万能IT技術研究所 【41】明治に出現した超大型巨人、地図探偵が解き明かす!——タイムマシンに乗り、文明開化の夏の浅草蔵前に行く……平林 純

  • 写りの悪い白黒写真に顔みたいなものが写ってたらびっくりしますね…。
  • いやしかし、毎度面白い話をよく見つけてきますね…。

【最終回】FE/AP試験問題に挑戦 【12】午後試験の読解対策……石田 宏実

  • その1
  • その2
    • 設問1 D社が過去にこれらの戦略を用いて事業を拡張させてきた内部環境上の最も重要な成功要因は何か。本文中の字句を用いて15字以内で答えよ。
      • 素材関連事業の堅調な拡大 → コア技術を維持してきたこと
        • たしかに…
    • 設問2 D社が将来の事業拡張を図るにあたり,外部環境上の変化によって成長が期待される分野は何か。本文中の字句を用いて15字以内で2つ答えよ。
    • 医療関連市場の再生医療市場
    • 機能的なヘアケア市場
      • あってるけど、回答例が4文字と6文字でだいぶ短い…!無理して書かなくてもよかったのか><

ドメイン解体新書 【21】Pi-holeで自宅ネットワークを可視化しよう(前編)……谷口 元紀

  • ん?DNS立てるのかな?って思ってたら…なるほど、DNSと可視化ツールのセットなんですね。
  • プライバシーはたしかに…。

ネコ、コード、ネコ 【4】エンジニアリングのトレードオフ……植山 類

  • SRAMってなんだっけ…と思ったら、CPUとかにくっついているキャッシュのことでした…。
  • それぞれ特性に合わせて、ハードウェアの各箇所に使われてるのがよくわかりました。
  • www.shoeisha.co.jp
    • …うーん、気になります。

パッケージマネージャーNix入門 【2】小さく始めるNix入門……たけてぃ

  • flake.nixとflake.lockはGemfileとGemfile.lockみたい。
  • まだぼんやりしててよくわからないけど…気になります。
  • 次回に期待!

技術選定の舞台裏 【2】プロダクト連携アーキテクチャの選択……鳥海 航

  • 今回もよかったです。
  • 現在地からのアーキテクチャ再評価も、結構興味深いですね。

つまみぐい関数型プログラミング 【5】関数型プログラミングの考え方を活用してみよう……田尻 裕喜

  • 「副作用を意識」「可能な限り純粋関数に」…たしかにこの2つは常に意識してますね…。
  • いつのまにか、意識してたんですねぇ…。

Ruby×静的型付け戦略 【6】RBSの生成、管理に使えるツール……桒原 仁雄(pocke)、栗原 勇樹(ksss)

  • RBS Rails?! いつのまにこんなに便利なgemが…!
    • Railsの動的コード生成に対応してくれるとは…ありがた山!
  • インラインで型情報を書くところが結構あるんですね…。
    • 別ファイルだとやっぱり管理が難しいのかなぁ…。
  • orthosesも現場で使っているだけあって、かなりよさそうです。
  • 型とAIコーディングは…たしかに相性がよさそうです。

プログラミング×AIの最前線 【7】バイブコーディングによるプロダクト開発実践レポート②……木下 雄一朗

  • うーん…なんでもかんでもできるものより、一つが秀でているほうが使いやすい…と思う反面、普通の人はひとつで全部できちゃうほうがいい、と思ってもいるんですよね。こっちの気持ちもわかる…。
  • 文脈を圧縮するチャットって、いいですね…。
  • 互換性のためコメントアウト に思考が引っ張られるって…人間臭いですね…。使わないものは消しましょう消しましょう!
  • 実装計画書…こりゃすごい……。自分で実装せずにこれを書ける気が全くしない……。実装したとしても書ける気がしない……。

実践LLMアプリケーション開発 【25】プロンプトチューニングを自動化するフレームワークDSPy入門……西見 公宏

  • LLMに仕事をしてもらったら、LLMに評価してもらう、という今よいとされているフローを扱いやすくもの…。
  • 学習教材が少ないのもちょっと便利な点っぽいですね。ちょっとおもしろいかもしれません。

AWS活用ジャーニー 【36】Amazon Aurora DSQL……杉金 晋

  • Redshiftじゃない!Auroraが?通常のRDBMSなのに分散って…なんかすごいですね。

はじめてのオフェンシブセキュリティ 【4】インターネットからエクスプロイトコードを探して使ってみよう!……皆川 諒、監修:株式会社エヌ・エフ・ラボラトリーズ

  • あとでゆっくりやります…。
  • なんどか使ったバインドシェルが説明されてる…!
    • 向こうからのアウトバウンドで接続とは…。
  • ミイラ取りがミイラに…はホント気をつけないと。演習をやろうとして引っかかったんじゃ、お話にならないですしね…。
  • 今回の演習、結構難易度が高いですね💦

乱数のひみつ 【8】パスワードレス認証の鍵を握る乱数……荒木 誠

  • みんなが生体認証機能付きのデバイスを持つ時代になった…って、すごい時代ですね…。
    • OTPもすごかったけど…。

魅惑の自作シェルの世界 【35】代入の実装……上田 隆一

  • 代入…!
  • あ…左辺、配列がありますもんね…そういわれたらめっちゃ大変そう…。
  • へえ…右辺はブレース展開が起こらない……知りませんでした><

あなたのスキルは社会に役立つ~エンジニアだからできる社会貢献~ 【165】オープンデータで未来につなぐ 〜万博マニアックマップの目指す先〜……坂ノ下 勝幸

  • 大阪万博…!
  • 地図を描きに万博に何度も…!頭が下がる思いですね…。
  • OpenStreetMapって、時系列のデータもあるのか…。当然と言えば当然ですが、確かに「未来の古地図」…おもしろい!

その他

SD BOOK REVIEW

  • www.kspub.co.jp
    • また数学…おもしろそう…。(苦手なクセにですがw)
  • www.shoeisha.co.jp
    • 先月の輪読会で紹介してもらったやつ!

SD NEWS & PRODUCTS

  • www.riskeyes.jp
    • …たしかにこういうサービスがあると助かりますね…。
    • 自分だけだと、どうやったらいいかわかんないですもん。
  • www.cloudflare.com
    • あ…確かにゼロトラストとCDNって相性いいですね…。なるほど。
  • あ…!

2025年11月号

  • AIツール
    • これ、何を使ったらいいかわからず、まだねだれないでいるんですよね…。
    • たのしみ。
  • 障害対応…!
    • うわー…保存版かも…。
    • 期待!

Kaigi on Rails 2025(2日目)にオンラインで参加しました

Kaigi on Rails 2025の2日目! 観ようと思っているセッションをメモしてたんですが、なんか数が多い…。 よくみたら、Door openが早かったのかあ。

今日も楽しんでいきます! 以下、メモを書き散らしていきます。

kaigionrails.org

2重リクエスト完全攻略HANDBOOK

speakerdeck.com

  • 2重リクエストに、クリック連打だけでなく、バッチなどの再実行とかいろいろと含めているとのこと。これはいいかも…。
  • 保存版の資料になるようにがんばってるそうなので、期待…!
  • get_advisory_lock…知らなかった…!
  • AASM…定番ですね。
  • データベースのロック機能は最終の砦としてやったほうがよい…ですが、なかなか…。がんばろ。
  • idempotency keyヘッダ…キャッシュをうまく使うことみたい。なるほど…。
  • ワンバンクでの利用例…こりゃたしかに厳しい現場だから、対策を考えてる時間が半端なかったわけですね…。
  • 冒頭の通り、保存版な発表でした!

履歴 on Rails : Bitemporal Data Modelで実現する履歴管理

speakerdeck.com

  • SmartHRの経験だそう。
  • 「あとから分かった出来事も正しい日付で反映したい」…これは労務ならではですね…。
  • Bitemporal Data Model
    • Bi…は2つだったのか…。現実の期間とシステムの期間を保存しているとのこと。
  • ActiveRecord::Bitemporal
    • rails consoleで使える視覚化ツールがついてる…!
  • 非常にらしい話でした。よかった。

階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜

speakerdeck.com

  • 階層構造…ウチだと、リターンとリターンアイテムですね…。でもツリー型じゃないかあ。
  • おお…ツリー型だと、子孫を取るということがあるのかあ。こりゃSQLが大変そうだ…。
    • 隣接リストだと難しいってことか…。
    • ああ、確かにリファクタリングすることになりそう💦
  • 閉包テーブル
    • 祖先と親のIDを持つ。
    • すべてのパスを保存。
    • レコード数はめっちゃ多そうではありますね…。ユーザ登録データじゃなければよさそう。
      • 書き込みが大変だけど、読み込みがほとんどの場合には確かに有効そう…。
    • 移行はパスを保存するテーブルを追加するだけだし、そんなに大変ではなさそう。

Range on Rails ― 「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ

  • 多重範囲って、考えただけでしんどそうですが…。
  • chocoZAP…なるほど、なんとかしたい気持ちがとてもよくわかる感じで…とても楽しみ。
  • 枠がない予約システム…!
    • 空き状況一覧💦
  • すべてを範囲の集合として捉えて、差集合を求めることで……ほうほう…。
  • 絵で見ると、シンプルかも。
  • 範囲型があるのは知ってたけど、多重範囲型…!PostgreSQLにあるのか…。たしかに使ったほうがよさそう…。
  • range_agg、unnestで多重範囲型に集約、範囲型に展開できる…。
  • レコードは範囲型で、集計時に多重範囲型に、SQL_VIEWも活用。複雑さをPostgreSQLに寄せる…と。
  • …こりゃおもしろいですね。

Introducing ReActionView: A ActionView-Compatible ERB Engine

  • TurboLSP?
  • HERB、すごいね…。erbを構造的に理解してくれるのかあ…!
  • 構文解析ができてくれば、フォーマッター、LSP、シンタックスハイライト…いろんなツールが…!
  • テンプレートレンダーにHERBを使うと…不正なタグがあったときにエラーにしてくれるが……すでにある壊れたものがあるウチには…。
  • しかし、めちゃくちゃ便利になりそうでびっくり…。とにかくスゴくて楽しみすぎる…!
  • herb-tools.dev

Railsだからできる、例外業務に禍根を残さない設定設計パターン

  • 例外業務…!
    • 実物を扱うと、本当に大変そう…。
  • ひとつひとつは大変じゃないけど…業務担当が変わって引き継ぎがうまくいかない…。わかる…。
  • 設定業務を業務担当に移譲する…なるほど。
  • Configテーブル…。設定頻度が低く少ないとき、か。
  • 備考欄…これは自分もやりますね。
  • enumは文字列を使ってる…これは賛成したい気持ち…。
  • ヘルプはつけとくと、よさそう。
  • Auditsを使って履歴を残すようにするといい。
  • さいごに…がめっちゃいいこと言ってたのに途切れてしまいました。事業会社、いいですよね!
  • …めっちゃ参考になりました!

ドメイン指定Cookieとサービス間共有Redisで作る認証基盤サービス

slides.com

  • 複数サービスがあると共通の認証機能が欲しい… → 認証基盤
  • ドメイン指定クッキーと共有redis…共有redis
  • 認証・認可の説明がめっちゃわかりやすい…。
  • OICDだと重いか…。OICDは外部のサービスに使わせるものなので、かなり厳重…。
  • 保存場所を共有するってシンプルで結構おもしろいかも。
  • ドメイン指定クッキーがあれば、後方一致なら送ってくれる…。
  • 認証サービスが提供するモジュールを各サービスで使ってもらう、と。
  • セッションの名前空間を分けるのは確かに重要ですね…。
  • ローカルの開発は結構大変ですね…。
  • ウチで開発者が20人超えてサービスも増えたら、この形式でやってもいいかも、と思える内容でした。
    • 今の状況じゃ絶対無理なのもわかってよかったです。

Rails on SQLite: exciting new ways to cause outages

  • データベースのファイルは永続化されたストレージに保存してね、ですね。
  • 複数のpumaから使うのって大丈夫そうなのかな…?
    • スレッド、スケーリングは垂直…。
  • シングルサーバーということかぁ…。CDNが強力になってきた今、案外イケるのか…?
  • 尖った発表ゆえに、もうちょっと誰かに訊いてみたい…。

rails g authenticationから学ぶRails8.0時代の認証

speakerdeck.com

  • rails g authentication
  • 昔からRailsの機能だけで確かにできてましたね…。
  • メールアドレスとパスワード、ログイン・ログアウト、パスワードリセット の基本セットのみ!
    • サンプル作りやすくなりますね…。
  • 今後ももっと機能が必要なときには自前か、deviseか…。
  • ジェネレネータのコードは基本を学ぶのにピッタリ…たしかに。railsのジェネレータのコード、結構いいですよね。
  • rate limitがついてる!
  • タイミングアタック…。authenticate_byだとメアドがあってもなくても返答が同じくらいなので防げる、と。
  • Sessionモデルを採用してる!
    • アクセス元の環境を保存できるし、サーバでセッションを管理しているので、セッションを破棄することができる…。
  • …うーん、よくできてるなぁ…。

Keynote: Building and Deploying Interactive Rails Applications with Falcon

  • falcon、fiberだから省資源なのか…。
  • GitHub - socketry/localhost … 知らんかった…入れます。
  • shopifyでも使ってるなら…十分イケるかも…?
  • github.com
  • セルフのヘルスチェックがあって、再起動してくれる…!
  • …メモリのモニタリングがついてるっぽい。…いいなぁ。
  • falcon-rails…ズボラな自分にピッタリかも…。
  • ウチでも使えるのかなぁ……気になりすぎる……。

最後に

いろいろと得るものも多く、とても楽しかったです、ありがとうございました! なかなか外のイベントには出られないのですが、こういったオンラインは本当に助かります、ありがとうございます!

こりゃ、来年も楽しみですね…。

Kaigi on Rails 2025(1日目)にオンラインで参加しました

今度ginza.rbでKaigi on Railsを振り返ろうというのをやるときいてたんですが…現場に行けないからなぁ…と諦めてたんですが。 よく見たら、オンライン視聴があるのを発見し、慌ててオンライン参加を決めたわけでした。やったぜ!

以下、参加した各セッションのことを書き散らしてます。

kaigionrails.org

Keynote: dynamic!

speakerdeck.com

  • あとでゆっくり聴かせてもらいます🙏

高度なUI/UXこそHotwireで作ろう

speakerdeck.com

  • ほとんどのものをHotwireでできます!という話でした。
  • 途中でライブストリームが止まってしまって、複雑な例を見そびれたのが残念><
  • …とはいえ、ウチでやるなら、reactとか使わずにいろいろやるほうが、あってそうです。
    • 複雑なUIないし。
  • オンラインの障害で見れなかった部分が急に公開されてる…!
  • Zustandというものでグローバルな状態を管理すると、Stimulusだけだとうまくできなかったものがなんとかできるかも?

入門 FormObject

speakerdeck.com

  • FormObjectの使い所は大変わかりやすかったです。
    • RailsWay 「1つのモデルを操作」から外れるものの場合。
  • …ほとんど外れるんですよね><

Railsアプリケーション開発者のためのブックガイド

speakerdeck.com

  • Ruby Central … 知らなかった><
  • 本の良さ
    • 本は会社に入る前にも読める
    • 生成AIが知っていることもある
  • おもしろそうな本
    • Unix考古学
    • 運用設計の教科書
    • システム障害の教科書
    • ソーシャルアプリプラットフォーム構築技法

全問正解率約3%: RubyKaigiで出題したやりがちな危険コード5選

  • こんなおもしろいものをRubyKaigiのブースで配ってたのかあ…!問題ほしい!
  • frontにjsonでe.messageを返しちゃうって…たしかにやりそう。

あなたのWebサービスはAIに自動テストしてもらえる?アクセシビリティツリーで読み解く、AIの『視点』

speakerdeck.com

Kamalって便利?社内プロジェクト3つをKamal + AWSで運用した体験談

  • Kamal、はまりどころもありそうですが…かわし方も知見がたまりつつあるみたいですね…。
  • 自分が手を付けようとするときにはちゃんと枯れてそうです…。

Railsによる人工的「設計」入門

speakerdeck.com

  • 「今までは漫然と実装しつづけてるうちに設計できるように…」…たしかに!AIの出てきたこれからは…?
  • …と、これからってときに、観れなくなってしまいました><

## 今改めてServiceクラスについて考える 〜あるRails開発者の10年〜

speakerdeck.com

  • チームメンバーが増えたとき、「想像がつく」が大事といってたのは、めっちゃわかります…。
    • 理解しやすい構造…。
  • チームの対話によって、継続的に理解しやすい構造を維持し続けるために、どうしたらよいか…。
    • この時間の概念は…長い間の開発者としての経験から来てるんですね…とすごく納得でした。

「プリンシプル オブ プログラミング」読書会 第22回を開催しました

academist-reading.connpass.com

「プリンシプル オブ プログラミング」読書会第22回を開催したので、簡単な感想を書きます。

感想

5.1 プログラマの3大美徳

プログラマの三大美徳

  • sts_maniaさんが「プログラマの3大美徳」を知らなかったそうで…インフラだとそういうのはなかったのかも。…とはいえ、作業の仕組み化などはやってるそうなので、やはり3大美徳と同じようなことは心がけてるみたいでした。

5.2 ボーイスカウトの規則

プログラマの三大美徳
- 以前にsts_maniaさんに話したことがあったそうです。この規則、自分は結構好きだから…覚えてないけどしゃべったんでしょうw - 「来たときより少し」がちょうどよくって好きです。

5.3 パフォーマンスチューニングの箴言

パフォーマンスチューニングの箴言

  • sts_maniaさんから「リファクタリング・デイ」みたいなものを設けてますか?というふうに訊かれました。
    • 前職では月末に設けていて、負債がちょっとずつでもかたづいていって、自分はとてもよかったと思っています。
  • Codecovなどの静的解析サービスには、各メトリクスが一般的な値とどれくらい乖離しているかなども見れるものがあったと思うので、リファクタリングのタイミングや理由に使いやすそうです。

運営としてのふりかえり

Keep

  • 今回も録画しました。
  • Geminiの議事録も取りました。

Problem

  • yumiさんが用事で来られず、残念でした。
    • 3人とも職種が若干違うので…聞くのが楽しみだったんですが…次回に期待!

Try

  • 次も録画していいか訊いてみる!
  • 次次回のページをなるべく早く作る。

最後に

この先もやっていきますので、なるべくみなさんの経験や疑問を聴いて、参考にしていきたいと思います!