タグ

architectureに関するshimookaのブックマーク (101)

  • ソースコードで理解するクリーンアーキテクチャ - Sansan Tech Blog

    はじめに こんにちは。プロダクト開発部の荒川です。 これまで最年少を謳っていましたが、ついに新卒の子にその座を奪われてしまいました。とても残念です。 さて今回のテーマは、皆さんお馴染みクリーンアーキテクチャ(Clean Architecture)です。 クリーンアーキテクチャは一時期流行し、その流れに乗って私もある程度の理解はしていました。 しかし、それはあくまでも感覚的な理解であって、他人に説明や良さを語れるレベルまで自分の中で落としこめていませんでした。 そこでより具体性のあるソースコードを読み込むことで、アーキテクチャへの理解を深めたいと思います。 クリーンアーキテクチャとは? クリーンアーキテクチャの定義や解説に関しては、ネット上にいくらでも公開されているので、このエントリでは詳しく話しません。 私自身が勉強に使った書籍やサイトを記事末尾の「参照」に掲載しているので、そちらを参考に

    ソースコードで理解するクリーンアーキテクチャ - Sansan Tech Blog
  • メルカリはなぜマイクロサービスへ踏み切ったのか? CTO 名村卓氏に聞く、組織とアーキテクチャの今とこれから

    急激な変化にも対応しうるソフトウェアのアーキテクチャとして注目を集める「マイクロサービス」。Webサービス系の企業をはじめとする先進的な企業が導入しており、急成長中のメルカリも格的に移行を開始した。「どのような背景でマイクロサービス化へと踏み切ったのか」「それに伴ってエンジニア組織はどのような改革を行なったか」、そして「今後はどのような組織を目指しているのか」など、エンジニアを牽引する立場であり、マイクロサービス化に伴う組織編成を担う、同社 執行役員CTOの名村卓氏に話を聞いた。 米国シリコンバレーで気がついた「組織のための技術」の可能性 ――メルカリは「グローバルテックカンパニー」を目指すと宣言し、2018年7月にはマイクロサービスの導入を発表しました。メルカリのエンジニア組織の改革において、名村さんが重要な役割を担われたと伺います。なぜ名村さん自身がその役割を担うようになられたのか、

    メルカリはなぜマイクロサービスへ踏み切ったのか? CTO 名村卓氏に聞く、組織とアーキテクチャの今とこれから
  • 「設計なんて不要でしょ」について - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 経緯 以前とある席で偶然シニアエンジニアの方と設計について議論することがありました。 その時に特に耳に残っていたのは以下の様な内容です。 クリーンアーキテクチャってテストしやすくする為のですよね? 設計はコード書ける人が他のコードを書ける人に威張るための道具なのではないか? 設計を学習するならブロックチェーンとかを勉強して技術力を高めるべきなのではないか? リーダブルコードさえ読んでいれば設計は必要ないのではないか? 設計なんて不要でしょ その方はかなり詳しく設計の歴史をしっていて尤もな事を言っていましたが、平成も終わる頃においてはその

    「設計なんて不要でしょ」について - Qiita
  • 独立したコアレイヤパターン - Shin x Blog

    モチベーション 全体 サンプルアプリケーション コアレイヤ サービスレイヤ 口座間送金ユースケース 処理の流れ コアレイヤ サービスレイヤ コアレイヤ対象範囲 DDD スタイル 手続き型スタイル 実装アイデア レイヤでパッケージを分ける コアレイヤの範囲 ポートの種類 DDD スタイルへの一歩目 さいごに 参考 独立したコアレイヤは、アプリケーション実装パターンである。以下のような特徴を持つ。 アプリケーションを、何を実現するのか(What)と、どのように実現するのか(How)に分ける。 What は、コアレイヤに実装する。ユースケースやドメインロジックを実装する。フレームワークやライブラリには依存しない。UI やデータベースからは独立している。 How は、サービスレイヤ(仮)に実装する。フレームワークやライブラリを活用して、ユースケースが要求する技術詳細を実装する。 コアレイヤが必要な

    独立したコアレイヤパターン - Shin x Blog
  • Laravelで実践クリーンアーキテクチャ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事を書くにあたって Laravel について色々サポートしてくれた皆さまに向けてお礼申し上げます。ありがとうございました。 記事はクリーンアーキテクチャに対する理解を深めていただくために、「実践クリーンアーキテクチャ」の内容を Laravel で実装して解説するという内容になっています。 記事のゴールは「クリーンアーキテクチャに対する理解を深めてもらう」というものです。つまり、この実装の形は一例に過ぎません。 はじめに 皆さんクリーンアーキテクチャはご存知でしょうか。 そう、こんな図のアレです。 The Clean Archit

    Laravelで実践クリーンアーキテクチャ - Qiita
  • Clean ArchitectureとHanamiですっきりしてきた

    デザインパターンのよさが分からない人は設計に自信が持てるようになるのか問題自分語りを少々。1 目の前にあった HTMLJavaScriptPHPSQL が渾然一体となったコードと戦うことから始め、テスタブルなコードを自分が死なないように習得していった自分にとって、鬼門の一つは 再利用のためのデザインパターン だった。 何しろ再利用可能なコードなんてほとんど何もなかったのだ。そんなもの分かるわけがない。 ところが世の中の「ためになる」はオブジェクト指向やデザインパターンの知識が前提になってしまっているところが結構あって、歯がゆい思いをすることもそれなりに多かった。 そんなところに、少ない設定、少ない知識でもプロダクティブな開発ができる Ruby on Rails というフレームワークが登場したことで、自分にできることが広がった。2 Rails の支援していないもののうち、

  • Vue+VuexでMVVMなWebApplicationを設計するときに考えたいこと

    まえがき ここ最近、Vueを使って実装されたWebアプリが随分と増えてきたように感じます。自分も何度となく実装してきました。すごく小さなデモを作るときにも使えるし、中規模以上のWebアプリを作るときにも使えるし、扱いやすいライブラリでとても好きです。 ある程度の規模になってくると「複数の画面でデータを共有したい」「こっちのComponentの状態をあっちのComponentに伝えたい」といったような問題にぶち当たり、アーキテクチャを導入することでそれらを解決するというのもお馴染みな感じです。特にVueでは双方向データバインディングの特性上、MVVMアーキテクチャが使われることが多いと思います。 今回は、VueでMVVMを実現する際に起き得る設計上の問題について、現時点での私の解決方針をまとめてみました😌 まえがき Vue+MVVMとはどんなものか 一般的なMVVMを理解する View V

    Vue+VuexでMVVMなWebApplicationを設計するときに考えたいこと
  • サービスクラスについては僕も悪かったと思っているけど、それでもCQSは実現したいんだ - Qiita

    このエントリは Ruby on Rails Advent Calendar 15 日目です。(遅くなってすいません) 同時に 14 日目のじょーかーさんのエントリへのアンサーエントリでもあります。 (まあ、じょーかーさんがこの Advent Calendar に登録したときに、タイトルから内容を推察してこれを書くことを決めましたが、実際のところ、あまりアンサーにもカウンターにもなってないし、全然関係ない内容と言えないこともないので、まあサービスクラスについては僕も推奨したことがあるし、僕も反省してるんですよ程度に読んでもらえると幸いです。) まずはじめにごめんなさい 3 年くらい前に僕は Rails にサービスクラスというものを導入するといいことがあるよと書いたのだけど、それからいくつもの Rails アプリケーションを見たり、実際に自分で開発したりして、うーんって思うことも増えてきたので

    サービスクラスについては僕も悪かったと思っているけど、それでもCQSは実現したいんだ - Qiita
  • マイクロサービスアーキテクチャにおけるAPIコールの仕方とHTMLレンダリング - Qiita

    先日、マイクロサービスの呼び出し方として、オーケストレーションとコレオグラフィについて書きましたが、同じく4章では、どうHTMLを組み立てるかという問題が提起されています。 ここもやや難解なので、咀嚼を試みます。 課題設定 次のようなECサイトを考えることにします。そして、4つのマイクロサービスを合成して構成します。 商品カタログサービス ショッピングカートサービス ショップサービス リコメンドサービス API合成 無垢な気持ちで設計すると、各々のマイクロサービスがWeb APIのインタフェースをもち、XMLやJSONを返して、ECサイト側で、テンプレートエンジンなどを用いて、HTMLをレンダリングするという方式になるかと思います。 そして、この形式でマイクロサービスを利用するサイト(アプリケーション)が増えていくと次の図のようになります。 これには、次の3つの欠点があるとされています。

    マイクロサービスアーキテクチャにおけるAPIコールの仕方とHTMLレンダリング - Qiita
  • Webサービスにおける
キャッシュ戦略

    YAPC::Asia Hachioji 2016 mid in Shinagawa 2016-07-03 Yusuke Wada a.k.a. yusukebe

    Webサービスにおける
キャッシュ戦略
  • 秒間数万のログをいい感じにするアーキテクチャ

    AWS Summit Tokyo 2016 Developer Conference (2016/06/03)

    秒間数万のログをいい感じにするアーキテクチャ
  • アーキテクチャよりも設計を重視しよう – 米政府18Fチームの提案 | POSTD

    注釈: CASH LAYER:キャッシュレイヤ FRONT END:フロントエンド ASSET SERVE:アセットを供給 WEB SERVER W/ROUND ROBIN FAILOVER:ラウンドロビンとフェールオーバーを実装したWebサーバ THE CLOUD:クラウド ALL READS! :全ての読み込み WRITES:書く READS:読む MASTER:マスタ INPORTANT POINTY THINGS:重要な鋭い情報 MULTI MASTER DB CLUSTER:複数のマスタからなるデータベースの集合体 「エンジニアはまずアーキテクチャの全体像から始めるべき」、というのが先人たちの知恵からの教訓となっています。データベースを使ったサービスが他のサービスと関係する様子を、線や矢印で表したのが上の図です。キャッシュレイヤ、ロードバランサ、その他の複雑な形も上図の情報フロー

    アーキテクチャよりも設計を重視しよう – 米政府18Fチームの提案 | POSTD
  • PHP で例外を投げるメソッドじゃなく例外を作るメソッドにするただひとつの理由 - Qiita

    例外の作成にめんどくさい手続きが必要なとき。例えば、HTTP のレスポンスオブジェクトを元に例外を作成するときとか。 <?php $message = sprintf( "HTTP/%s %s %s", $response->getVersion(), $response->getCode(), $response->getMessage() ); throw new HttpException($message, $response->getCode()); そういうときはそれようのメソッドを作ると便利です。 このとき、例外を作成して投げるメソッド と 例外を作成して返すメソッド の2通りの実装方法が考えられます。例えば下記の raise と create です。 <?php class HttpException extends \Exception { /** * 例外を作成して投げ

    PHP で例外を投げるメソッドじゃなく例外を作るメソッドにするただひとつの理由 - Qiita
  • 永世中立国スイスの美しい景色にカモフラージュされた軍事施設の写真いろいろ

    1815年のウィーン会議で承認されて以来、中立の立場を保持し続ける永世中立国スイス。しかし、その国土はドイツ・フランス・イタリアなど五カ国と国境を接しており、いざという時のための自衛の努力は並大抵でないことがよくわかります。 他国間の戦争については中立の立場を貫くスイスですがその軍事力は強大。自国が攻撃された場合どこまでも戦う準備が国全体にできています。山裾にある大きな洞穴は臨時の格納庫付き空軍基地に、高速道路は中央にあるセパレータを取り除くことで素早く滑走路にすることができます。また、多くの橋やトンネル・道路・鉄道は、侵入してきた敵の軍隊に利用されないように必要な時にはいつでも壊すことが出来る仕組みとなっています。 さらにスイス・アルプス地方には、周りの景色に溶けこむように注意深くカモフラージュされたトーチカなどの軍事施設(掩体壕)が存在しています。これらは巨大な岩や家、小屋などにカモフ

    永世中立国スイスの美しい景色にカモフラージュされた軍事施設の写真いろいろ
    shimooka
    shimooka 2015/09/04
    永世中立国っつっても「戦争しない」って言ってるわけじゃない。スイスの軍隊は意外と強大。
  • 「レイヤードアーキテクチャを意識したPHPアプリケーションの構築」を発表しました

    2015/06/27 に開催された PHPカンファレンス福岡2015 にて、「レイヤードアーキテクチャを意識したPHPアプリケーションの構築」という発表をしてきました。 MVC フレームワーク(CakePHP / Laravel)で構築したアプリケーションをレイヤードを意識して改善したという内容です。参加いただいた皆さんの顔ぶれを見ると歴戦の勇者みたいな方ばかりでしたが、和やかな雰囲気でセッションを進めることができました。ご参加ありがとうございました。 発表資料 発表資料は以下です。 MVC にサービスレイヤを追加して、それぞれの役割を意識して作る。レイヤ間の依存を明確にする。サービス(ドメイン)を中心に考える。よく言われていることなのですが、実際に実践する中で、ハマりがちなことや実際に実践してきた中で感じたことを紹介しました。もちろん、これで ok ということはないので、今後取り組んでい

  • 新国立設計ザハ氏と契約解除へ…文科省など検討 : 社会 : スポーツ報知

    新国立設計ザハ氏と契約解除へ…文科省など検討 2015年6月6日6時0分  スポーツ報知 国際コンペで選出された当初の新国立競技場デザイン案(JSC提供) 2020年東京五輪・パラリンピックのメイン会場となる新国立競技場(東京都新宿区)の整備計画が大幅に見直される問題で、文部科学省などがデザイン監修者としたイラク出身のザハ・ハディド氏(英在住)の事務所との契約解除を検討していることが5日、分かった。政府関係者が明らかにした。ザハ・ハディド・アーキテクツ側と設計を変更するよう交渉を行い、不調に終わった場合、契約を解除する方針だ。 政府関係者によると、現行案の「キールアーチ」と呼ばれる幅約370メートルある2の鉄骨部分が最大のネックとなり、現状の構造を維持する限り、整備費や工期の見通しが立たないと判断した。 すでに当初案から規模などを約2割縮小しており、ザハ氏側に再度の設計変更を依頼すること

    新国立設計ザハ氏と契約解除へ…文科省など検討 : 社会 : スポーツ報知
    shimooka
    shimooka 2015/06/08
    決定してから今頃これですか。。。時間もないだろうから、もう一回旧国立のデザインで作ればいいじゃん。
  • 破れ紙の片割れのようなMixinができてしまうワケ - @kyanny's blog

    最近「Mixin は避けられれば避けたほうがよいのではないか」と思い始めている。扱いに困るダメ実装の Mixin を簡単に作れすぎてしまうからだ。 Wikipedia の定義によると、 mixin とはオブジェクト指向プログラミング言語において、サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。 とのことなので、そもそも Mixin される側の実装と結びつきが強くなるのは仕方ないのだろう。しかし、まれにだが破れ紙の片割れのような実装を持つ Mixin ができてしまうことがある。 一枚の紙を適当に手で破って二枚にする。断面はギザギザだが、破った二枚の紙の断面はぴったり一致する。もともと繋がっていたものを切り離したのだから当然だ。だが破れ紙の断面にぴったり合うような別の紙を用意するのは簡単ではない。別の紙を合わせる必要があるのならば、紙を破るときに

    破れ紙の片割れのようなMixinができてしまうワケ - @kyanny's blog
    shimooka
    shimooka 2015/05/26
    一理ある。というか、あるある
  • スケーラブルなプログラミングのために何が必要か - ジンジャー研究室

    Fluxに関する独自解釈と妄想を、何かの翻訳っぽく書いた。 スケールするアーキテクチャ フレームワークを作る時、我々は「簡単に記述する」ことを第一に考えがちだ。 そして、簡単にするための仕組みはウケる。 逆に記述量が増えるとウケない。 しかし例外があって、多く書くことによるメリットが受け入れられたときは別だ。 例えば、Backbone.jsを使うと記述量が増える事は誰もが認めるところだが、MVCの実現というメリットのために広く受け入れられた。 要するにトレードオフなのだ。 ここのところFluxアーキテクチャが注目を浴びているが、書いてみると記述量は相当増える。 そもそも登場人物が多すぎる。 Action、Dispatcher、Store、View、それからそれらの間に挟まって仕事をする者達。 一体彼らは何をしたいのか。 最近になって分かってきた。 これはアプリケーションそのものを抽象化した

    スケーラブルなプログラミングのために何が必要か - ジンジャー研究室
  • 新しいCSSの設計規約、AMCSSに関する個人的なまとめ - id:anatooのブログ

    CSSの設計規約というと、BEMが有名ですが、最近またAMCSSという新しいCSSの設計規約が出てきました。この記事では、このAMCSSについて簡単に紹介したいと思います。 個人的なBEMの好きでない所 仕事でBEMをよく使っていて、優れた設計規約だとは思いつつも、使っていて気になる点がいくつかあります。BlockとElementとModifilerという3つの概念をクラス属性だけで表現しようとするため、非常に記法が見難いのと冗長なところです。 例えば、fooブロックのbarエレメントのhogeモディファイヤーを表現すると、以下のようになります。 <div class="foo foo--hoge"> <div class="foo__bar foo--hoge__bar"> ... </div> </div> "__"や"--"という文字を区切りに使っているため、非常に冗長に見えます。ま

  • mizchi / すべてのMVCを過去にする - Glide

    Please note that Glide no longer supports Internet Explorer versions 7 or 8.