タグ

2024年1月14日のブックマーク (17件)

  • 失敗例から学ぶSOLID原則

    PHPカンファレンス北海道2024 https://fortee.jp/phpcon-hokkaido-2024/proposal/7d223fcd-ecc8-4cfb-92b2-4987749463d8 Lについての補足記事 https://asumikam.com/entry/2024/01/12/144338 Sについての補足記事 https://asumikam.com/entry/2024/01/13/152513

    失敗例から学ぶSOLID原則
  • 障害発生時の回復力をチームで高めるためには?リクルートに学ぶ、カオスエンジニアリングの取り組み

    SUUMOの公式サイト上でユーザーにお勧めの物件を紹介する「SUUMOレコメンドシステム」。同システムを担当するデータ推進室は、システムの障害に伴うユーザー体験の悪化を防ぐため、安定運用を実現するさまざまな取り組みを行ってきた。安定運用を実現するには、障害そのものの発生頻度を抑える信頼性だけではなく、障害が発生した際に、素早く復旧させる回復力が必要になる。SUUMOレコメンドシステムにおける安定運用に向けた「信頼性」「回復性」の取り組みについて、同推進室でデータエンジニアリング部部長を務める鶴谷誠文氏と、同じく住まいデータエンジニアリンググループの芳賀宣仁氏が紹介した。 システムの安定運用を実現するための取り組み 大学新聞の広告代理店として、人材を求める企業と仕事を求める学生のニーズをマッチングさせる情報誌ビジネスから始まったリクルート。「求職活動や採用活動を支援する人材領域」に加え、今で

    障害発生時の回復力をチームで高めるためには?リクルートに学ぶ、カオスエンジニアリングの取り組み
  • 『ソフトウェアアーキテクチャの基礎』島田浩二氏が語る、エンジニアが最初に知っておくべきアーキテクチャリテラシー

    ソフトウェアアーキテクチャはシステムの成功に不可欠な要素であり、ソフトウェア開発者にはこの分野における効果的なスキルが求められる。しかし、その学習資料はまだ十分ではないのが現実である。株式会社えにしテックの代表取締役 島田浩二氏は、ソフトウェアアーキテクチャに関する書籍を多数翻訳している。Developers Summit 2023 Summerに登壇した島田氏は、数々の書籍から学んだソフトウェアアーキテクチャの重要なエッセンスを紹介した。 ソフトウェアアーキテクチャとは? 3つの定義を紹介 島田氏は2009年に株式会社えにしテックを設立。2011年からは一般社団法人日Rubyの会の理事を務めている。島田氏が翻訳に携わった書籍には、『進化的アーキテクチャ』『ソフトウェアアーキテクチャハードパーツ』、『ソフトウェアアーキテクチャの基礎』『Design It!』(いずれもオライリージャパン)

    『ソフトウェアアーキテクチャの基礎』島田浩二氏が語る、エンジニアが最初に知っておくべきアーキテクチャリテラシー
  • 「インシデント管理」とは?〜システム障害を未然に防ごう〜|インシデント管理プラットフォーム│PagerDuty

    近年、金融機関や通信会社などで多発しているシステム障害。システムが1分停止すると約100万円、24時間で約10億円の損失が起きるともいわれています。現代社会では、クラウド化やデジタルトランスフォーメーションの進展により、私たちの生活がITサービスやITシステムに依存しています。このような状況下でシステムが停止することは、日々の生活に大きな影響を与えることになります。救急車のIoT装置や病院の電子カルテシステムなど、障害によりシステムが停止することで、時には人の命にも関わる可能性があり、社会課題の1つとなっています。 システム障害の発生の大きな原因として、「原因究明や回復対応に時間がかかる」ために発生するようにも思えますが、質的な課題は「システム運用監視体制」が整っていなかったことにあると考えられます。ますますデジタル化が進む中で、システム障害は必ず起きるものであり、ゼロにすることは不可能

    「インシデント管理」とは?〜システム障害を未然に防ごう〜|インシデント管理プラットフォーム│PagerDuty
  • ドメイン駆動設計に触れてから2年たったので、開発者の取り組み方について振り返ってみる - commmune Engineer Blog

    はじめに こんにちは、コミューンの中でSuccessHubというプロダクトの開発者をしている中野です。 SuccessHubは正式にローンチされてから1年半弱経過しており、開発初期からドメイン駆動設計を基に開発を進めています。この経験を通じて、コードベースのアプローチ以外の部分でも、開発者としての取り組みに関する課題や成功体験が浮かび上がってきました。今回はその一部を振り返りつつお話しできればと思います。(少し抽象的な話になります) はじめに モデル同士の関係性がうまく表現できない モデルが変化している 共通言語が貧しくなってきた 開発者としての姿勢 コミュニケーション 技術だけで解決しようとしない ドキュメントに起こして満足しない まとめ 最後に モデル同士の関係性がうまく表現できない SuccessHubローンチ直後、新規プロダクト開発記 〜どうしたら業務知識をコードに落とし込めるのか

    ドメイン駆動設計に触れてから2年たったので、開発者の取り組み方について振り返ってみる - commmune Engineer Blog
  • 品質保証部門の陳腐化。そして陳腐化した品質保証は品質を悪化させる - 千里霧中

    ※品質保証のエンジニアである筆者が自省・戒めのために書いた記事になります 品質管理(Quality Control)、品質マネジメントは国内では製造業を中心に発展し、プロダクトの競争力向上に貢献してきました。 JTCと呼ばれる旧来からのメーカーでは、その実績・年功の蓄積に応じて、独立性を保った品質管理・品質保証部門が権威を獲得し、今でもソフトウェア開発に強い影響力を保持するようになっています。筆者は複数のメーカーを転職コンサルで巡って来ましたが、例えば品質保証部門が承認しないとマイルストーンで開発がブロックされる、プロダクトがリリースできないといった権限を持つ体制が、今なお普遍的に見受けられます。 この品質保証部門が権力を持ち、品質ゲートの門番として振る舞う体制は、今であっても、ある面で恩恵を提供しています。例えば次のようなものです: 法規制対応、標準化対応、その他公的なガバナンス要求へ

    品質保証部門の陳腐化。そして陳腐化した品質保証は品質を悪化させる - 千里霧中
  • 他者と働き、チームで成果を出す方法- 人との関係からみるカケハシ -/KAKEHASHI of the relationship between members

    他者と働き、チームで成果を出す方法- 人との関係からみるカケハシ -/KAKEHASHI of the relationship between members

    他者と働き、チームで成果を出す方法- 人との関係からみるカケハシ -/KAKEHASHI of the relationship between members
  • ストレスが溜まる上司の言動にはその場で反撃しよう。 | さくマガ

    >>さくらインターネットの採用情報を見る 睡眠時無呼吸症候群になった。 睡眠時無呼吸症候群(重症)と診断され、この夏からCPAP(シーパップ)治療を続けている。簡単に説明すると、機械装置で鼻から空気を送り込むことで気道を開き、寝ている間に無呼吸状態にならないようにする治療法だ。鼻に酸素ボンベを装着しているようなイメージ(くわしくはネットで調べてみてください)。 睡眠時無呼吸症候群の原因は不明だ。「肥満」や「鼻の穴が狭い」といった明確な要因がないため、「ストレス」が原因ということになっている。公式には、家庭ではノー・ストレス状態ということになっているので、ストレスを蓄積しているのはもっぱら仕事や職場環境になる。仕事や職場で蓄積したストレスで心身の調子を崩している人は多い。より深刻な病気を患う人もいる。最悪、命を落としてしまう事態もある。 >>さくらインターネットの採用情報を見る ストレス原因

    ストレスが溜まる上司の言動にはその場で反撃しよう。 | さくマガ
    JGEEM
    JGEEM 2024/01/14
    こんなん笑うしかw "コンマ1秒でも生活レベルは落としたくない。ましてや数か月無職なんて" と思ったらフミコ氏じゃないか。じゃあしょうがない。
  • 0063 号 巻頭言

    DDD を理解したいあなたのための DDD 入門以前 Rubyist Magazine 63 号をお届けする。 突然のお知らせで恐縮だが、日 Ruby の会の主たる事務所が東京から北海道に移転した。それもあってあまりまとまった時間がとれず、11 月のうちに書くはずだったのが気がつくと 12 月も半ばを過ぎていたので、今回は以前書きかけていた文章を発掘してお茶を濁したい。 Ruby とは直接関係がなくて恐縮だが、Ruby に限らずソフトウェア開発では現在でもちょくちょく話題になることがある、DDD についての話である。 ドメイン駆動設計こと DDD は 2020 年代のソフトウェア開発でもよく話題にされるが、率直に言うとストレートにポジティブな評価が行われているとは言い難い。 どちらかというと、ある種マニアックで、対象分野が制限されており、また初心者にはとっつきにくいところがある手法と思わ

    JGEEM
    JGEEM 2024/01/14
    昔を思い起こさせる記事。素晴らしい。"分析モデルに近い実装よりHWに優しい実装" "「動いているコードは触るな」"とか首がもげそう。"蒸留しなければ理想的なモデルは作られず"は後世に語り継いでいきたい
  • 機械学習を「社会実装」するということ 2024年版 / Social Implementation of Machine Learning 2024

    機械学習を「社会実装」する際に待ち受けている罠と、その解決方法の考察 (2024年版) です。今回は、生成AI時代とも呼ばれる昨今において、我々は機械学習プロジェクトをどのように捉え、どのように向き合えばよいか?の羅針盤になる内容を盛り込みました。 ※この資料は、東京大学メタバース工学部リスキリング講座プログラム グローバル消費インテリジェンス寄付講座 (GCI) 2023 Winterの講義で使用したものです。 https://gci2.t.u-tokyo.ac.jp/archives/course/gci-2023-winter ※過去に同テーマで講義した際に使用した資料はこちら。 https://speakerdeck.com/moepy_stats/social-implementation-of-machine-learning-july-2023-version https:/

    機械学習を「社会実装」するということ 2024年版 / Social Implementation of Machine Learning 2024
  • 予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHPerKaigi 2022

    PHPerKaigi 2022 2022/04/10 10:40〜 Track A レギュラートーク(40分) PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。 講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。 Agenda - 型宣言 - 列挙型 - ドメインモデリング - 不変性と等価性 - 完全性 - レイヤーと責務

    予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHPerKaigi 2022
  • 【虎の穴ラボ】根っから小売文化の組織がエンジニアファーストに生まれ変わるまでの一部始終

    虎の穴ラボ株式会社 CEO 野田純一 大学卒業後、受託開発の会社に入社。その後DeNAにてゲーム開発に関わったのち、GMOへ入社。アドテク開発や研究に取り組む。2016年に虎の穴ラボの前身であるユメノソラHDに入社し、当時新規事業だったFantiaの開発の傍ら、開発組織の環境整備やエンジニア採用に取り組む。2019年10月、ユメノソラHDのエンジニア組織が「虎の穴ラボ株式会社」として分社化し、CTOに就任。2023年9月より現職。 美少女のイラストに「エンジニア採用!」「今後もずっとフルリモート!」の文字が踊る。一度は目にしたであろう、あの個性的な採用広告の広告主は「虎の穴ラボ」。同人誌通販「とらのあな」を運営するユメノソラホールディングス株式会社から分社したエンジニア・クリエイター組織です。 現CEOの野田純一さんは元GMOのシニアエンジニア。ユメノソラにはエンジニア組織の立ち上げ・拡大

    【虎の穴ラボ】根っから小売文化の組織がエンジニアファーストに生まれ変わるまでの一部始終
    JGEEM
    JGEEM 2024/01/14
    「根っからの小売文化」の経験あるけど、結構つらかったな。平成だったし、エンジニアファーストも今ほど定着してなかったんで「そういうもんだ」と諦めてたような。そして虎の穴ラボ、興味あるな、、
  • 「技術力が高い」という幻覚|zy

    こんな言葉を聞いたことあるだろうか。 「あの人は技術力が低い」 「あの人は技術力が高い優秀なエンジニアだ」 「あの人は偉いポジションにいるが技術力は低い」 「あの有名な人は,きっと技術力が高いから働いたら色々と学べそうだ」 ある人が言った。 「この会社の従業員は自分より技術力が低い。技術力が高い俺の言うことが正しい」 どうやらその人にとっては設計力含め幅広い技術的な知見を持っていることが技術力らしい。 だが,その人の技術力をプロダクトに適用している姿を見たことがない。その上での主張だった。 主張と行動が相反しているようだが,と尋ねると 「この会社のコードがクソだからだ。」 そして「一から作ればできる」「(業務での)決裁権を与えてくれればできる」 などという反応もあった。 普通に考えれば,ネゴシエーションを取りながらリーダーシップを発揮して進めるべきなのではないか。別にそこに決裁権も何も関係

    「技術力が高い」という幻覚|zy
    JGEEM
    JGEEM 2024/01/14
  • チーム中心の組織作りのための6つのチーム設計原則 - mtx2s’s blog

    近年のソフトウェアプロダクト開発組織の活動単位としてよく言われるのは、「少人数で安定したチーム」であろう。表現は違えど、どの文献でもそのように述べられる。 それでは、「少人数」と「安定」の2つの要件を満たせば高パフォーマンスなチームが設計できるかと言えば、そんなはずもない。他にも要件があるはずだ。 そこで、チームに共通して必要だと考える要件を、設計に関わったこれまでの組織から抽出して言語化し、原則としてまとめてみた。それが、「安定」「アトミック」「非兼務」「少人数」「流動性」「イテレーティブ」の6つだ。 初期に携わった組織には欠けていた要素もあるが、何度も失敗を重ねるうちに見いだしたものだ。組織設計のプラクティスとしてよく聞くものもあるが、いずれも実体験を経て必要だと感じたものばかりである。 なお、記事で取り上げる6つのチーム設計原則だけでは、組織設計として不十分だ。チームにどういった機

    チーム中心の組織作りのための6つのチーム設計原則 - mtx2s’s blog
    JGEEM
    JGEEM 2024/01/14
    これは本当にその通りだと思う。特に「アトミック」と「非兼務」。人が足りないと兼務が増えていきがちだけど、それこそアトミックな単位をより小さくしてチーム単位で兼務にできないものかな
  • 2024年のPlatform Engineeringはこうなる(なってほしい)

    Forkwellさん主催の「今から予測する2024年のPlatform Engineering」で登壇した資料です https://forkwell.connpass.com/event/303922/

    2024年のPlatform Engineeringはこうなる(なってほしい)
    JGEEM
    JGEEM 2024/01/14
    いまいま話題にされているのはクラウド周りや環境・ツールが多いけれど、将来的にはアーキテクチャやデザインパターンをEnablingすることをも包含していくのだろうか
  • DDDを実践するためのリポジトリ層の設計(Go言語による例)

    The Go gopher was designed by Renée French. Illustrations by tottie. はじめに この記事は、ドメイン駆動設計(DDD)の中核概念である「リポジトリ」についての理解を深めることを目的としています。リポジトリの基的な役割と重要性を確認し、Go言語での実装の例を紹介します。 前提 リレーショナルデータベースからデータを取得(更新)するアプリケーションを想定しています サンプルコードは Go 言語で書かれています リポジトリとは まずは、リポジトリの定義を確認してみましょう。 リポジトリパターンとは: リポジトリは、データベースから取得したデータを構造体にマッピングし、ドメインオブジェクトにアクセスするためのインターフェースを提供します。 これは、一般的なリポジトリの理解と相違ないですね。次に DDDの文脈で、より詳しい定義をみ

    DDDを実践するためのリポジトリ層の設計(Go言語による例)
    JGEEM
    JGEEM 2024/01/14
    集約における不変条件がmutableじゃなくてinvariantだと気付かせていただきました。感謝。あーすっきりした。
  • 複数サービス間でのデータの整合性維持に向けたSagaの実装 - NTT Communications Engineers' Blog

    マイクロサービスアーキテクチャにおいては、個々が独立に選定したデータベースを持つ複数のサービスにまたがって、データの整合性を維持する必要があります。 そのための方法として、Sagaパターンと呼ばれる設計方法がありますが、Sagaでは分離性が欠如しておりLost Update等の異常が発生しかねません。 そこで記事では、Sagaの分離性を高めるための実装におけるTipsを解説します。 目次 目次 はじめに 複数サービス間での整合性維持における課題 Sagaパターン Sagaを構成するトランザクション Sagaによって実現される安全性 原子性(Atomicity) 整合性(Consistency) 分離性(Isolation) 永続性(Durability) 異常を防止/軽減する実装 分離性の欠如が引き起こす異常 分離性の欠如への対策 Semantic Lock Commutative Up

    複数サービス間でのデータの整合性維持に向けたSagaの実装 - NTT Communications Engineers' Blog