タグ

設計に関するmizdraのブックマーク (111)

  • 単体テストを書かない技術 #phpcon_odawara

    PHPカンファレンス小田原2024での発表資料です https://fortee.jp/phpconodawara-2024/proposal/4d39c7ef-058c-4648-b1d7-5510497e0d81

    単体テストを書かない技術 #phpcon_odawara
  • Incomplete List of Mistakes in the Design of CSS [CSS Working Group Wiki]

    That should be corrected if anyone invents a time machine. :P

    mizdra
    mizdra 2024/03/06
    良いページ
  • 最強データベース(RDB)設計とは?アンチパターンの見極め方法も - FLEXY(フレキシー)

    ※2020年6月に公開された記事です。 日PostgreSQLユーザ会の理事を務める合同会社Have Fun Tech起業した曽根壮大(@soudai1025)と申します。元株式会社オミカレ副社長兼CTOです。直近では、『失敗から学ぶ RDBの正しい歩き方』を執筆しました。 今回はデータベースをテーマとして、魅力やMySQLとPostgreSQLの違い、アンチパターンの見極めなどの基礎知識に加え、勉強法などもご紹介します。 RDB関連の求人検索はこちら データベースを学ぶ魅力をエンジニア目線で考察 1.知識の費用対効果が高い エンジニアがデータベースを学ぶ利点という観点から言うと、データベースの特徴は寿命が長いことと私は考えています。 Webアプリケーションの界隈では1年単位でバージョンアップしたり流行っている言語が変わってしまうことがザラにありますが、データベースは10年、20年とい

    最強データベース(RDB)設計とは?アンチパターンの見極め方法も - FLEXY(フレキシー)
  • ニコニコ動画のコード改善の歩み - dwango on GitHub

    はじめに こんにちは。ニコニコ動画開発の小池です。 私の所属するチームではニコニコ動画の動画サービスのサーバーサイドをメインに担当しております。 今回は PHPerKaigi2024 向けの記事として、動画サービスのコード改善についてこれまでの歴史や取り組みとその成果について紹介していきたいと思います。 文中の3つのフレーズをチャレンジトークンとしてみました。ぜひ探してみてください! (※ 記事の見出しにの横についている「#」はチャレンジトークンではありません。チャレンジトークンは文中に配置されています。紛らわしくてすみません!) 2006年: ローンチ ニコニコ動画は2006年にローンチされて以来、皆様の応援のおかげで現在までサービスが継続されております。 当時はRuby on Railsが流行り始めてCakePHPが出ているかどうかといったくらいの時代で、フレームワークを利用しないとい

    ニコニコ動画のコード改善の歩み - dwango on GitHub
  • キャッシュを活用するために必要な知識と勘所 - そーだいなるらくがき帳

    どうもキャッシュバスターズ、 id:Soudai です。 Cache(以下、キャッシュ)は特定の場面に置いて劇的な効果を発揮し、様々な問題を解決する反面、新たなコンポートやミドルウェアが追加され、複雑性が上がり、運用のレベルが上がるため、扱いに注意する必要があります。 キャッシュを活用することで、パフォーマンスの改善や負荷軽減が行われ、コンピュータリソースの最適化によるサーバコストの削減や、レスポンスの改善によるユーザエクスペリエンスの改善がされます。 反面、その劇的な効果に毒され安易に多用すると、サービスが強くキャッシュに依存してしまい、非常に壊れやすくなり、運用が難しくなってしまいます。これをWeb界隈では「キャッシュは麻薬」と比喩されて、戒められてきました。 そのためキャッシュを使わずにサービスが運用できるのであれば使わないに越したことはないのですが、ある一定以上の規模になった際にコ

    キャッシュを活用するために必要な知識と勘所 - そーだいなるらくがき帳
  • ミドルウェアとウェブフック

    長くパッケージソフトウェアとしてのミドルウェアを開発してきて、ミドルウェアとウェブフックの組み合わせがとても良いと感じているので、雑にまとめていこうと思います。 まとめ ミドルウェアとウェブフックの組み合わせはお勧め。 戦略 ミドルウェアに永続化情報を持たせない ミドルウェアから直接データベースを引く仕組みを持たせない ミドルウェアにプラグインの仕組みを持たせない データベースを直接引く仕組みを持たせない 自分がミドルウェアを開発したときは、ミドルウェアがデータベースを引く仕組みを持っているというのが一般的でした。 ただこれ、どのデータベースに対応するのかという問題がでてきます。 PostgreSQLMySQLOracleSQL Server などなど、対応するデータベースが多いと、ミドルウェアの開発者は大変です。 RDB だけでなく LDAP や Redis といったデ

    ミドルウェアとウェブフック
  • 状態設計から「なんとなく」を無くそう

    ウォンテッドリー株式会社の社内イベント "Tech Lunch" で話した発表です。 プログラムには大小さまざまな粒度の「状態」が存在します。 状態の設計を工夫することで、コーナーケースの発生を抑止し、ユーザー体験を最適化することができます。 発表では、私が普段どのように「状態」について考えているか、言語や環境を問わずできるだけ普遍的に使える形での言語化を試みます。発表を通じて、「状態」をなんとなくではなく合理的に設計するためのヒントを提供します。 GoogleスライドのURL: https://docs.google.com/presentation/d/1PNzz69UV05HlKPuWGlooemnPslLbLKsyLwl3R4U_XqE/edit

    状態設計から「なんとなく」を無くそう
    mizdra
    mizdra 2023/12/14
    アノマリーと隠れ状態の話が良かった
  • ロバストネス原則 - Wikipedia

    ロバストネス原則(ロバストネスげんそく、robustness principle)または堅牢性原則(けんろうせいげんそく)とは、ソフトウェアの設計指針の一つで、「貴方が自分ですることに関しては厳密に、貴方が他人から受けることに関しては寛容に」(be conservative in what you do, be liberal in what you accept from others)というものである。これは「送信するものに関しては厳密に、受信するものに関しては寛容に」(be conservative in what you send, be liberal in what you accept)とも言い換えられる。この原則は、TCPの初期仕様[1]でこのことを主張したジョン・ポステルにちなんでポステルの法則(Postel's law)とも呼ばれる。 これは、他の装置(または同じ装置上

  • 『ソフトウェア設計のトレードオフと誤り』を読んで、”日付や時刻”を扱うことの難しさについて考えた - Magnolia Tech

    ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには 作者:Tomasz Lelek,Jon SkeetオライリージャパンAmazon ソフトウェア開発経験の最初の段階で「一つの機能には複数の選択肢が有って、メリット・デメリットがそれぞれ有り、それらはトレードオフの関係に有り、容易には決めることができない」という事実を教えてもらえる機会に遭遇できていれば、その人はとても幸運だと思う。 先輩や上司が一方的に、「一つの確かな方法」をただ伝える、みたいな場面(それが必ずしも一般的にはそうとは言えない方法であったとしても)も多いのではないでしょうか。 どんなに設計上の意思決定ができている人でも、その頭の中では「色々な選択肢の中で悩んで、ベストではないかもしれないけど、前の前の課題に対してよりベターな方法」を選んでいる。でもその思考の過程を見せてくれる人はとても少ない。

    『ソフトウェア設計のトレードオフと誤り』を読んで、”日付や時刻”を扱うことの難しさについて考えた - Magnolia Tech
  • きれいなコードを書けという話について - Software Transactional Memo

    前回のブログから90日以上経ってしまったので広告が載ってしまったから短文でもアウトプットしておく。 プログラマとして仕事をしているとコードと向き合っている時間の9割以上は既存のコードを読んでいる、だから読みやすさは重要である、という言説は耳にタコができるほど誰もが言っている。 仕事で書かれるコードが誰のレビューも通ること無くマージされている現場は凄惨だが、自分より明らかに経験を積んだ人たちが何度もレビューを重ねたコードが読みやすいかというとそうとは限らない。良いコードが守るべきルールをすべて守っていても不可解なコードはあるし、どんなに読みやすいコードでも数千行の規模になってくるとやはり脳内からこぼれて一度に覚えておける範囲からはみ出る。 変数名や関数名をわかりやすくするとか不必要な技巧を凝らさないとかわかりやすい設計にするとか主観的な事を偉そうに語るは山ほどあり、それらのを崇める事は悪

    きれいなコードを書けという話について - Software Transactional Memo
  • みんなRailsのSTIを誤解してないか!? - Qiita

    な、なるほど...!? いや、みんなちょっと誤解してるんじゃないか? よーし、お父さん、みんながSTIを使いたくなるようにちょっと頑張っちゃうぞ! STIとは STIは、単一の継承階層に所属するクラス群を、ただひとつのテーブルを使って永続化する手法です。 PofEAA Railsのドキュメントを漁ると、次のような記述が見つかります。 http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html Note, all the attributes for all the cases are kept in the same table. Read more: www.martinfowler.com/eaaCatalog/singleTableInheritance.html このリンク先は、リファクタリングで有名なMarti

    みんなRailsのSTIを誤解してないか!? - Qiita
  • 単一テーブル継承 - Martin Fowler's Bliki (ja)

  • 【GraphQL】何らかの条件で何らかを集めてくるフィールドの設計、どうする? - magamingのブログ

    何を言っているかわからないと思うけど、例えば「1週間以内に新規登録したユーザー一覧を返す」みたいなフィールドをどう設計するかという話。いくつかパターンがありそう。 1. 専用のフィールドを用意する query { recentlyRegisteredUsers: [User!]! } クライアントからはこのフィールド呼べばいいだけなので楽。ただし、新たに「最近更新があったユーザー一覧を返したい」のような要望がでてきたら、似たようなフィールドが無尽蔵に増えていく可能性がある。 2. 全部返すフィールドを特定の条件でフィルタできるようにする query { users( filter: UserFilter ): [User!]! } enum UserFilter { "1週間以内に新規登録したユーザー" RECENTLY_REGISTERED } 1 よりはフィールドの治安は保たれそうだけ

    【GraphQL】何らかの条件で何らかを集めてくるフィールドの設計、どうする? - magamingのブログ
  • How to recover from microservices

    I won't deny there may well be cases where a microservices-first architecture makes sense, but I think they're few and far in between. The vast majority of systems are much better served by starting and staying with a majestic monolith. The Prime Video case study that blew up the internet yesterday is but the latest illustration. Maybe once you reach the scale of Netflix or Amazon, there are areas

    How to recover from microservices
  • 5月新刊情報『ソフトウェア設計のトレードオフと誤り』

    『ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには』 Tomasz Lelek、Jon Skeet 著、渋川 よしき、山田 智子、田 健悟、辻 大志郎、宮永 崇史、小橋 昌明、柏木 祥子、岸 卓也、後藤 玲雄、棚井 龍之介、原木 翔、山 力世 訳 2023年5月25日発売予定 472ページ(予定) ISBN978-4-8144-0031-7 定価4,180円(税込) 「プログラムを設計するときに行った技術的な判断や選択が、後日大きな制約となる」これはプログラマなら誰しも経験したことのあることでしょう。書は、そんなプログラミングにおける各種の設計上の選択について、トレードオフの内容やそれがどのような誤りを招きうるのかという点を踏まえて紹介する書籍です。 コードの重複、エラーや例外処理、柔軟性と複雑性のバランスのようなコードレベルの選択から、APIの設

    5月新刊情報『ソフトウェア設計のトレードオフと誤り』
  • 第4回 テストダブル ~忠実性と決定性のトレードオフを理解する~ | gihyo.jp

    自動テストを書く際に使いどころをマスターしたいテクニックがテストダブル(Test Double)です。テストダブルを効果的に使えばテストの網羅性、速度、再現性を向上させますが、使いどころを誤れば変更や改善の妨げになりかねません。今回は、テストダブルの利点と注意点をまとめます。 テストダブルとは何か テストダブルとは、自動テストに使用する偽物、代用品のことです。たとえば、データベースや外部サービスの動作を模倣した偽物(テストダブル)を作り、自動テストから使います。 自動テストで偽物を活用するテクニックを「モック」(⁠Mock)と呼ぶ方も多いですが、より正確には、テストに偽物を使う技術を総称してテストダブルと呼びます。この場合の「ダブル」は身代わりや影武者のようなイメージでとらえてください。テストに使う身代わりなのでテストダブルです。テストダブルの種類として詳しくはスタブ(Stub⁠)⁠、スパ

    第4回 テストダブル ~忠実性と決定性のトレードオフを理解する~ | gihyo.jp
    mizdra
    mizdra 2023/02/24
    良い
  • 【第1回・前編】 エンジニア和田卓人の今を形作る技術 | GeeklyMedia(ギークリーメディア) | Geekly(ギークリー) IT・Web・ゲーム業界専門の人材紹介会社

    『テスト駆動開発』や『SQLアンチパターン』をはじめとする技術書の翻訳者、さまざまなIT企業をわたり歩く技術顧問、さらに最近ではエンジニアリング文化を伝える講演者としても活躍されている和田卓人さん(https://twitter.com/t_wada)。 そのソフトウェアエンジニアとしての素顔を株式会社一休CTOの伊藤直也さん(https://twitter.com/naoya_ito)が聞き出す対談の前編では、一線を画すエンジニアであり続けるために自らのプロジェクトで意識的にコードを書いているという和田さんの姿勢に始まり、ベテランとして「技術のらせん」を読み解くケーススタディとしてDDD(Domain-Driven Design)を題材に話を伺います。 ・伊藤 直也さん / 株式会社 一休 執行役員 CTO 新卒入社したニフティ株式会社でブログサービス「ココログ」を立ち上げ、CTOを務め

    mizdra
    mizdra 2023/02/03
    上から下まで面白い… / 良い "ベテランになるというのは、そういう「らせん」が見えるようになって、商売っ気を引き算して大事なところが読み取れるようになることなんだと思います"
  • martinfowler.com

    Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it easier to build useful software. The site began as a place to put my own writing, but I also use it to publish arti

    martinfowler.com
  • The Twelve-Factor App (日本語訳)

    はじめに 現代では、ソフトウェアは一般にサービスとして提供され、Webアプリケーション や Software as a Service と呼ばれる。Twelve-Factor Appは、次のようなSoftware as a Serviceを作り上げるための方法論である。 セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコストを最小化する。 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。 モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。 開発環境と番環境の 差異を最小限 にし、アジリティを最大化する 継続的デプロイ を可能にする。 ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく スケールアップ できる。 Twelve-F

  • Popular React Folder Structures and Screaming Architecture

    Screaming ArchitectureEvolution of a React folder structure and why to group by features right away React folder structures have been debated for years due to React's unopinionated approach, leading developers to ask, "Where should I put my files? How should I organize my code?" I've researched the most popular approaches to organizing React projects: Grouping by file type like components, context

    Popular React Folder Structures and Screaming Architecture
    mizdra
    mizdra 2023/01/08
    React アプリケーションの成長につれてディレクトリ構成にどういう問題が発生するか、及びそれを解消するためにどうディレクトリ構成を変えていくかについて。めっちゃ良かった。