■ トピック Javaの知識が止まっているokunoさんのミリしら回 バージョンアップサイクルの変化 ローカル変数の型推論、ダイアモンド演算子 JEP(JDK Enhancement Proposal) パターンマッチング switch式が欲しい 賢いText Blocks Recordクラスが欲しい instanceofのパターンマッチング パターンマッチングが本当に欲しい Java 21 LTSは2031年まで switch式が欲しすぎる public static void main(String[] args) がなくなる? われわれはJavaに嫉妬しています ■ 参考リンク Wikipedia Javaバージョン履歴 きしださんの記事一覧 Java8からJava11への変更点 - Qiita Java 12新機能まとめ Java 14新機能まとめ tc39/proposal-record-tuple: ECMAScript proposal for the Record and Tuple value types Java 17新機能まとめ Oracle、「Java 21」を発表 ~8年間のサポートを約束した長期サポート(LTS)リリース - 窓の杜 Java 23新機能まとめ ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック 更新系リクエストのスキーマについて REST的な発想 すべて必須フィールドにするか、オプショナルにするか /users/:id/name エンドポイント 大きなリソースの部分的な変更はグループ化してエンドポイントを分ける 変更できるフィールドを制限することで安全になる オプショナルなフィールド、空値での上書きとの区別が難しい 必須フィールドだけにしておくほうがよさそう ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック shinshinさんからのおたより 寿司回で気になっていた、POST/PUTのレスポンスについて If one or more resources has been created on the origin server as a result of successfully processing a POST request, the origin server SHOULD send a 201 (Created) response containing a Location header field that provides an identifier for the primary resource created and a representation that describes the status of the request while referring to the new resource(s). アプリケーションで使わないレスポンスの必要性 イミュータブルな単方向データフローにしたい 富豪的プログラミング Responses to POST requests are only cacheable when they include explicit freshness information and a Content-Location header field that has the same value as the POST's target URI. POSTのキャッシュ可能性 Webブラウザのために仕様に準拠する PUTの話 If the target resource does have a current representation and that representation is successfully modified in accordance with the state of the enclosed representation, then the origin server MUST send either a 200 (OK) or a 204 (No Content) response to indicate successful completion of the request. PUTのレスポンスはキャッシュできない SHOULDでも従っておいたほうがよさそう 内容に間違いがあることを前提に聞いてください 次回はリクエストのスキーマについて ■ 参考リンク RFC 9110 - HTTP Semantics RFC 9110 — HTTP Semantics (日本語訳) ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック 今年の抱負・展望 2024年はじめてやったこと 函館に初めて行ってきたlacolaco 小学生からの質問が人生で一番緊張した まだ行ったことない場所で登壇したい いままでにやったことある言語 今年新しく学びたい言語 AIに達人を奪われていくのか? AIには究極に便利な道具であってほしい 次回からは通常運転 ■ 参考リンク HAKODATE Developer Conference 2024 BuriKaigi すごいHaskell たのしく学ぼう! ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック おたより・コメント紹介 不要コードの削除 人間とAI、安心と安全 削除はコードベースを理解してないとできない テストは安心のために書く コーディング規約をどう守ってもらうか リファクタリングかそうじゃないか 設計の擬人化とTRPG おたより・コメント・ハッシュタグはすべて読んでおります 次回に続く ■ 参考リンク PHPカンファレンス福岡2023でのlacolacoの発表資料 ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック あけましておめでとうございます 前回のネタ出しのふりかえり 更新系のHTTP APIスキーマ POST/PUTのレスポンス リファクタリングのゴール 『プログラマー脳』やってない話 お寿司到着 『Good Code, Bad Code』を読みたい 実務ベースの話 みんなのJavaのイメージが古い 新しく学んだ言語プレゼン回 達人への道 どうやってリファクタリングを業務に組み込むか 木こりのジレンマからどう立ち直るか 次回に続きます ■ 参考リンク プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ - 秀和システム Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考 - 秀和システム 「Java 22」正式リリース ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック リファラジ1年間の数字 4万再生 全話聞いている人が多い ブログで紹介されたところで急にリスナーが増えた 人気のエピソード 『ルールズ・オブ・プログラミング』の回 サブタイトルの決め方 来年への抱負 2025年もよろしくお願いします ■ 参考リンク エンジニア必聴の最高の技術ラジオ「リファラジ」を広めたい Voicy 2024年11月の【IT/エンジニア】の人気チャンネル 30位 ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック ドメインとWebのセキュリティ リダイレクトいつ外せるの問題 印刷されてしまったURL ドメインの終活 おしゃれなドメインは高いがち Javaのパッケージ名とドメイン ドメインの影響範囲バカでかい 基本的に変えたくない エンジニアのほうから言い出すことは少ない ドメイン変えるのは会社名変えるくらい大変なのでは あからさまに一時的であることを示すドメインを使う ドメイン名変更の方法論を磨けていない反省 ユーザー名がサブドメインになる系のサービス あんまりやってほしくないから回数制限があるのではないか ドメイン変更の仕事はWebの総合力が問われる 大変さが想像できるから事例を見ると感心する 次回は大晦日、年末ふりかえり回 ■ 参考リンク ドメイン名の終活について - JPAAWG 7th - ジェネリックトップレベルドメイン - Wikipedia .sharp ドメインへの移行 決死の覚悟でのぞんだnoteのドメイン移行。検索流入急落からの復活劇 | note株式会社 任天堂、Webサイトのドメイン変更へ 26日から 「nintendo.com/jp」に - ITmedia NEWS .tv ドメインの事例 ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ■ Bluesky https://bsky.app/profile/refactoradio.com ハッシュタグは #リファラジ です。
■ トピック ドメインとWebサイトの名前 ドメインもまた名前 ちょっと変わったTLDの経験 夢の okunokenta.ro, lacola.co TLDの意味を意識する? 増え続けているドメイン名 jp.sharp の事例 note、任天堂の事例 なぜ人はドメインにこだわるのか? Webサイト名と完全一致するドメイン 名前付けの中でも難しい命名 .new ドメインはずるい ドメイン取れるのか?からWebサービスは始まる 次回は「ドメインを変更する」話 ■ 参考リンク ジェネリックトップレベルドメイン - Wikipedia .sharp ドメインへの移行 決死の覚悟でのぞんだnoteのドメイン移行。検索流入急落からの復活劇 | note株式会社 任天堂、Webサイトのドメイン変更へ 26日から 「nintendo.com/jp」に - ITmedia NEWS .tv ドメインの事例 ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック 1冊目『プリンシプル オブ プログラミング』 もともとはブログだった 何ができたらプログラマーって名乗っていいのか? 基本的な原理原則をカタログ的にまとめてくれている 次に読むべき本がわかる 職業としてのプログラマーに必要な知識 2冊目『.NETのエンタープライズアプリケーションアーキテクチャ』は絶版本 とにかくエンタープライズ 大規模なアプリケーションをどう作るか okunoを支えるバイブル 3冊目『はじめてのGTD』 Getting Things Done 人生すべてについてタスクを整理する 次にやることがはっきりすれば達人プログラマーに一歩近づく GTDはリファクタリングに役立つ ネクストアクションを明確にする ■ 参考リンク プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則 - 秀和システム .NETのエンタープライズアプリケーションアーキテクチャ 第2版 | 日経BOOKプラス 全面改訂版 はじめてのGTD ストレスフリーの整理術|二見書房 ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック おすすめ本紹介をしたくなった理由 1冊目『プログラマが知るべき97のこと』 何したらプログラマーになれるんだ? 独学でもやれる勇気をくれる本 個人にフィーチャーする本への憧れ 2冊目『Clean Architecture』 タイトルで誤解されてがち よく使う設計原理・原則のリファレンスとして語彙を増やせる 「叫ぶアーキテクチャ」 どこまでいってもボブおじさんには追いつかない 3冊目『達人プログラマー』 身につけるべき習慣、行動指針 枯れない名著 30年コードを書けばテストを書かなくてもいいかもしれない 達人に憧れて真似しようと思う気持ち、美徳としての傲慢さ わかりきっていてもおすすめし続けたい本 ■ 参考リンク O'Reilly Japan - プログラマが知るべき97のこと プログラマが知るべき97のこと 「Clean Architecture 達人に学ぶソフトウェアの構造と設計」RobertC.Martin - KADOKAWA 達人プログラマー(第2版) 熟達に向けたあなたの旅 | Ohmsha ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック 祝・第50回 最新情報を追跡するルーチン インプットのプッシュ型とプル型 メールの未読ゼロ GitHubからの通知 Discordでキャッチアップする ちゃんと読みたいものは時間を見つけてプル型で SNSでの情報収集 英語原文でのインプット Zennにトレンドを探しにいく エラーの解決方法の探し方 具体と抽象を行き来しないと解決できない AIの使い方 ■ 参考リンク JSer.info Blog | web.dev ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
※ お詫び: 収録時のミスでlacolacoの音質が悪いです。 ■ トピック リファクタリングモードに入ってまずやること 名前を変えてみる 既存コードをいったん消して書き直してみる コメントを書き足すだけでもリファクタリング 「3つ目」が降ってくるとき 趣味と業務 知識が不確実だと備えが必要 いつでもリファクタリングはじめられるためにやっていること ディレクトリ構造をきれいにしておく 新しいメンバーからのフィードバックは大事 雑にリファクタリングしまくるためのテストとCI 「テストが書ける状態」でテストが書かれることなくない? 息をするようにリファクタリングするには安心が必要 ■ 参考リンク #36 DRYとYAGNI① DRYとは「知識」と「表現」の原則である ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
※ お詫び: 収録時のミスでlacolacoの音質が悪いです。 ■ トピック 既存コードを触っていてリファクタリングモードに切り替わるタイミング 「なんかリファクタリングするところないかな〜」 既存のコードを掌握するためのリファクタリング レビュー基準が変化することで崩れる一貫性を見直す コードベースとの関係性とリファクタリング 変更している途中でブレーキがかかってリファクタリングに切り替わる まさしく「コードスメル」 「なんかクサい」という直感 臭ってきたときの捨てやすさ プログラマーが鍛えるべきは嗅覚 完璧なメタファー 嗅覚はタイミングのためにある セルフレビューは「臭くなかったら出せ」という暗黙のルール ■ 参考リンク リファクタリング(第2版) 既存のコードを安全に改善する | Ohmsha ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
※ お詫び: 収録時のミスでlacolacoの音質が悪いです。 ■ トピック リファクタリングモード モードの切り替わりのタイミング 耐えられなくなる閾値 「こんなつもりじゃなかったんだけどな」 どこまで行けるかぶち当たりに行く グリーンになる前にリファクタリングしてしまう悪い癖 名前を真剣に考え始めるタイミングの違い リファクタリングモードから帰ってこない チーム開発ならいったん議論してから 結局「驚き最小の原則」 書く自分と読む自分 読む自分が耐えられなくなったときに始まるリファクタリング ■ 参考リンク 驚き最小の原則 ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック AngularはなぜDIを備えている? GoogleはDIがやりたくてAngularJSを作った? JavaScriptの世界でOOPのプラクティスを実現したかったんじゃないか 型で依存性の注入をやるためのTypeScript化 AtScriptという要件 AngularはDecoratorsが標準化されなくても困らない Angularを使いたくなる理由 Angularが与えた影響 原則を強制させるためのフレームワーク AngularはDIフレームワークである(過言?) 空気のようになっているDIP ■ 参考リンク Angular公式ドキュメント AngularはDecoratorsが標準化されなくても困らない - lacolaco inversify/InversifyJS microsoft/tsyringe NestJS ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック 依存性の注入とは何か? インスタンス作成の詳細を隠蔽したい コンストラクタに依存するインスタンスを渡していれば依存性の注入と言えるか サービスロケーターパターンとの違い DIはテストのためにあるのか? 結局はカプセル化と隠蔽 DIもDIPを実践する手段のひとつに過ぎない ■ 参考リンク #42 カプセル化① 「秘密」と「隠蔽」 カプセル化は人形遊びで鍛える ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック SOLIDのD、依存性逆転の原則 依存性って何?逆転って何? 依存関係とクラス図 インターフェースと実装の分離 知らないうちにやってたDIP 依存性の注入との混乱 駆け出しでDIPを学ぶべきか? 開発がスケールするためにはDIPが必要そう 「いつまで経っても変更作業が終わりません」 カプセル化とDIP ■ 参考リンク #14 単一責任原則① 責任が単一であるってどういうこと? 『レガシーコード改善ガイド』マイケル・C・フェザーズ | 翔泳社 #42 カプセル化① 「秘密」と「隠蔽」 カプセル化は人形遊びで鍛える ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック 引数が変わりやすい関数は秘密を隠蔽できていない シグニチャがころころ変わる関数はリファクタリングに失敗している データとロジックのカプセル化のツールとしてのクラス 何を隠蔽したいのか?で何を使うかを考える 委譲の隠蔽、仲介人の除去 「デメテルの法則」にのめり込みすぎたコード データベースのJOINが透けて見えるJSON 「時には役に立つデメテルの提案」 経験を積んで変わった『リファクタリング』の読み方 ■ 参考リンク リファクタリング(第2版) 既存のコードを安全に改善する | Ohmsha ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。
■ トピック カプセル化との出会い 「カプセル化って何ですか?」 カプセル化とクラスベースオブジェクト指向 カプセル化とモジュール化は違う カプセル化のキモは隠蔽である 「隠蔽すべき秘密を持っているか?」 ソースコード上の「秘密」の感覚と擬人化 ミューテーション前提のカプセル化 急速に重複するロジック 続きは後編へ ■ 参考リンク リファクタリング(第2版) 既存のコードを安全に改善する | Ohmsha ■ おたよりフォーム https://forms.gle/RYUG7T4ctmF7Srf36 ■ X(Twitter) https://twitter.com/refactoradio ハッシュタグは #リファラジ です。