タグ

設計に関するdmizuno55のブックマーク (148)

  • 「AWS IAMのマニアックな話」は「IAM初心者」にこそちょうどいい - Qiita

    はじめに 先日開催された技術書展7で発売された「AWS IAMのマニアックな話」(IAM)を購入して読み進めています。 の中身に関しては読了してから勉強記事としてまとめようと思いますが、その前にIAMをオススメしたくこの記事を書いています。 おすすめポイント 今回オススメするポイントは下記の2つです。 IAM関連の用語や考え方が「平易な言葉で簡潔に」説明されているので、基礎レベルの理解がスムーズに進む IAM周りのデザインパターンやIAM設計・運用のベストプラクティスも記載されているので、「基礎レベルの知識を踏まえて」実践的な内容を学習できる 上記の点から、「AWS IAMのマニアックな話」はIAM初心者こそ読んだ方がいい一冊だと感じました。 の詳細 著者 佐々木拓郎さん (Amazon Web Services パターン別構築・運用ガイドの筆者でもあります。) 購入サイト ダウン

    「AWS IAMのマニアックな話」は「IAM初心者」にこそちょうどいい - Qiita
  • DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!

    DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ アプリケーションの寿命よりも長く、データの追加やテーブルの変更で成長し続ける「データベース」と、どのように付き合っていけばよいのでしょうか? 曽根壮大(soudai)さんによる寄稿です。 こんにちは。そーだい(@soudai1025)です。 新しいサービスを始めるとき、必ずと言っていいほどデータベースは利用されています。また今稼働しているサービスの多くでも、RDBMSをはじめ、いろいろなデータベースが利用されています。そんなに広く利用されているデータベースだからこそ、多くの問題の元になるのもまた事実です。 そこで今回は、Webサービスを中心にデータベースの選び方、設計についてお話していきたいと思います。そして私もまさに今、2011年から続くWebサービス「オミカレ」のRDBMSのリファクタリングに携わ

    DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!
  • 10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由|ハイクラス転職・求人情報サイト AMBI(アンビ)

    10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 10年以上運用されているサービスには、さまざまな技術的な負債が発生しています。今後の継続的な改善のため、いったん新規開発を止めて4年かけて全面的なリニューアルを実施した「はてなブックマーク」の開発者に、プロジェクトの課題や解決する手法などを聞きました。 改善1つに数カ月かかるなら全てを書き換えられないか 2000年代にトレンドだった開発手法の負債 過去の開発意図を探る考古学的手法 データセンター移行も見据えて刷新しよう ドメインモデル設計とScalaとマイクロサービス化 コアロジックにはScalaを採用 きちんとしたドメインモデルによる設計と実装を継続したい 段階的なリリースとデータの移行という2つの大きな課題 求められる機能に沿ったデータベーススキーマに再構築 新旧の2システムを維持しながら

    10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • はじめてのGraphQLスキーマ設計

    GraphQLのよいスキーマ設計についてです。

    はじめてのGraphQLスキーマ設計
  • 低レイテンシと安定性を生むアーキテクチャ - SSPの現場に学ぶ、高可用性のつくり方 - エンジニアHub|Webエンジニアのキャリアを考える!

    低レイテンシと安定性を生むアーキテクチャ - SSPの現場に学ぶ、高可用性のつくり方 低レイテンシとは、広告配信の世界でユーザービリティ / 収益に直結する要素であることから、重要視されています。では、SSPの現場で実際に用いられるシステムはどのような構成になっているのでしょうか。fluct社の鈴木健太さんに、低レイテンシ、そして安定して稼働するシステムの基を聞きました。 200msを目安にレスポンスを返す、低レスポンス設計 オンプレミスとAWSを組み合わせてコストとスケールのバランスを保つ データのコピーをサーバーに入れ、独立化する 悪くなったところを捨てるのが、低レイテンシ・システム安定化の秘訣 ログの集計はBigQueryで簡単に 悪くなったところは捨てて、全体を安定に動かす レイテンシ(latency)とは、リクエストに対して応答を返すまでの時間のことです。レイテンシをできるだけ

    低レイテンシと安定性を生むアーキテクチャ - SSPの現場に学ぶ、高可用性のつくり方 - エンジニアHub|Webエンジニアのキャリアを考える!
  • iOS ヒューマンインターフェースの原則 - Qiita

    はじめに iOS のヒューマンインターフェースを理解するためにはまず UI 設計の原則を定めた聖典 iOS Human Interface Guidelines を読むことから始めなければなりません。ここにはプラットフォームの特徴からデザインの原則、それぞれの部品が何のためにデザインされたのか、どう利用するのか、iOS を構成する UI の基指針がまとまっています。 よく、『磨りガラス効果がかっこいい』『アニメーションしておくとイケてる』『ボタンは右配置の方が右手で押しやすい』『流行っているから』……などの観点によって UI の設計が決められることがありますが、そういうことではないのです。いや実際かっこいいかわいいだとかの感覚は重要なのですが、見た目が何となくそれっぽいだけでは優れた UI とは言えません。磨りガラスでも何でも必ずそこには意味があります。だからこそ HIG に書かれた思想

    iOS ヒューマンインターフェースの原則 - Qiita
  • テスト駆動開発:実はそれは設計技術です

    テスト駆動開発(TDD)は、より優れたソフトウェアを持続的に早く提供するための確立された手法です。TDDは単純な考えに基づいている。製品コードを書く前に失敗するテストを書くことです。新しい行動が必要ですか?失敗するテストを書いてください。しかし、この一見単純な考えをうまく実行するには、スキルと判断が必要です。 TDDは当に設計のためのテクニックです。TDDの基礎は、小規模なテストを使用してボトムアップを早急に設計することであり、システムへの信頼を構築しながら迅速に何らかの価値を得ることです。よりよい名前はテスト駆動設計かもしれません。 設計方法としては、集中と単純さです。目標は、開発者が価値を提供する上で不要な余分なコードを書くことを防ぐことです。問題を解決するのに必要最小限のコードを書くことです。 多くの記事がTDDを行うことのすべての利点を誇りにしています。そして多くの技術会議の講演

    テスト駆動開発:実はそれは設計技術です
  • iOSにおける半モーダルビューの解釈|usagimaru

    iOS 8の頃より見かけるようになった新しいモーダルビューの形態と、その設計思想、UI としての使われ方について考察します。この新しいモーダルビューのことを私は他のモーダルビューと区別する意味合いで「半モーダルビュー(Semi-Modal View)」と呼んでいますが、実際にガイドライン上でそのような定義がされているわけではありません。「ハーフモーダル」という呼び方も耳にすることがありますが、私は後述の理由からこの呼び方は推奨していません。 今回はパターンとしてあえて区別することで他のモーダルビューとの違いを明確にし、その特徴や仕組み、正しい設計とはどのようにあるべきかを理解しやすくすることを目指します。なお、2019年版のHIG(すなわちiOS 13対応版)からはモーダルビューのスタイルの一つとして Sheet の記述が現れるようになりましたが、今回は Sheet スタイルに限らずもう少

    iOSにおける半モーダルビューの解釈|usagimaru
  • ソフトウェアアーキテクチャの歴史 - tasuwo's notes

    改めて ソフトウェアアーキテクチャ GUI のアーキテクチャの歴史を調べてみたくなった。来の MVC とは何か?何が正しくて何が間違っているか?も重要なのだが、それよりは、なぜそれが生まれたのか?何を解決しようとしたのか?どのような問題点が生まれて、それをどう工夫して解決・発展してきたのか?を知りたい。しかし、そういうことがまとまっている日語の情報が少ないので、自分で色々かいつまんでメモしておく。 MVC の原点は 70 年代にまで遡り、実装としては Smalltalk-80 のクラスライブラリとして実装されたのが最初だと思われる。しかし、後世に大きな影響を及ぼしたポイントをいくつか持ちつつも、当時のアーキテクチャが現代においてそのまま利用されているケースはほぼないといっていい。したがって、単に MVC といった時には大抵最初期の MVC を指すことは少なく、区別するために最初期の M

    ソフトウェアアーキテクチャの歴史 - tasuwo's notes
  • 【実録】WordPressサイトをAWS+Laravel+Nuxtにフルリプレイスした話 - Qiita

    概要 創業2期目のスタートアップ株式会社NoSchoolにて、WordPressで開発された自社サービスを、2ヶ月掛けてAWS+Laravel+Nuxt.jsにフルリプレイスした際の技術選定について書きます。 対象読者 Laravelを使ってみたい/使えるライブラリを一通り知りたい AWS構築の全体感を知りたい Nuxt.jsやVuetifyの使用感を知りたい WordPressを脱却したい 技術選定の背景 技術選定と言っても好きな技術を選べばいいというわけではありません。自社が持っている技術力、事業の状況によるところが大きいため、まずは背景としてそのあたりを説明していきます。 先に技術が気になる方はここは読み飛ばして、あとで戻ってきてください ①自社の技術力 CTO @mejileben NoSchoolは創業2期目で2019年6月現在、フルタイムメンバーが僕と社長しかいません。 そして

    【実録】WordPressサイトをAWS+Laravel+Nuxtにフルリプレイスした話 - Qiita
  • それはYAGNIか? それとも思考停止か?

    DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。 Read less

    それはYAGNIか? それとも思考停止か?
  • 残業も減らせる!? 上級エンジニアになるためのDesign Doc超入門

    残業も減らせる!? 上級エンジニアになるためのDesign Doc超入門:プロジェクト成功確率向上の近道とは?(3)(1/3 ページ) ITシステム開発の問題点の一つであるコミュニケーションの失敗。連載では、これを防ぐ方法としてお勧めしたい3つのドキュメントを紹介していく。今回は、「技術視点」のドキュメントとして、2000年代以降注目されている「Design Doc」について解説します。 IT技術がビジネスに貢献していくためには、まずはシステム開発を成功させることが重要です。連載「プロジェクト成功確率向上の近道とは?」では、システム開発を成功させるために、コミュニケーションが果たす役割の重要性と、ドキュメントによるコミュニケーションの重要性について解説してきました。 連載1回の「ドキュメントは最強のコミュニケーションツールである――Joelの機能仕様書入門」、第2回の「サンプル例に見る

    残業も減らせる!? 上級エンジニアになるためのDesign Doc超入門
  • system-design-primer/README-ja.md at master · donnemartin/system-design-primer

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    system-design-primer/README-ja.md at master · donnemartin/system-design-primer
  • React+Fluxで正しく設計するためのFlux見直しガイド

    Reactの良さを活かしやすいFluxは、Webアプリケーションの設計手法としてずいぶん馴染みのあるものになったように感じます。私もFluxを取り入れた開発を2年近く経験し、知見も溜まり、使い慣れたような気持ちでいました。 が、使い始めた頃はもちろん、今でも何となく分かったつもりでいる部分があったり、複雑な実装が必要な場面で悩むことがあったりします。「Fluxはダメだ!うまく実現できない!」と投げ出したくなるときもありますが、そんなときこそ基礎へ立ち返る機会。 そんなわけでFluxに再入門し、Fluxとは何なのか、どう実装するのが適切なのかを公式ドキュメントに則って整理してみようと思います。 Fluxとは Dispatcher 要件1 イベントが発生したらすべてのCallbackを実行すること 要件2 Callbackの実行順序を制御できること Action Actionに必要なたった2つ

    React+Fluxで正しく設計するためのFlux見直しガイド
  • 「設計なんて不要でしょ」について - Qiita

    経緯 以前とある席で偶然シニアエンジニアの方と設計について議論することがありました。 その時に特に耳に残っていたのは以下の様な内容です。 クリーンアーキテクチャってテストしやすくする為のですよね? 設計はコード書ける人が他のコードを書ける人に威張るための道具なのではないか? 設計を学習するならブロックチェーンとかを勉強して技術力を高めるべきなのではないか? リーダブルコードさえ読んでいれば設計は必要ないのではないか? 設計なんて不要でしょ その方はかなり詳しく設計の歴史をしっていて尤もな事を言っていましたが、平成も終わる頃においてはその限りではないです。 なので平成最後の日にそれら全てに対して最終的に解答できる形で設計の有用性を説明し、気持ちよく令和を迎えます。 注意: 一応ここで説明する内容や要素も一面だけです。 よくある誤解 クリーンアーキテクチャといえばこの有名なリングですよね。 こ

    「設計なんて不要でしょ」について - Qiita
  • Swift の HTTP ライブラリで苦しまないための自作 API クライアント設計 - Qiita

    iOS 開発で必須とも言える API クライアントの設計手法を、初心者にもわかりやすく紹介します。 はじめに あなたは、どのように API クライアントを設計していますか。 まずはライブラリを選ぶでしょうか。 それとも、クラス図を書くのでしょうか。 なるほど、なるほど、ふーむ。 この記事では、もっと別のより良い設計方法を紹介します。 紹介する設計方法は、ほとんど設計知識のない状況から始めることができます。しかも、最終的にはあなたのプロジェクトにぴったりの設計を手に入れられる方法です。 対象読者 さて、この記事では、対象読者を次のように設定しています: どのような API 設計にしたらいいかわからない人 どのような API のライブラリを使うべきかわからない人 また、最終的には以下のレベルの目標を達成できることでしょう: あなたのプロジェクトAPI 層設計者になれるレベル 目次 はじめに

    Swift の HTTP ライブラリで苦しまないための自作 API クライアント設計 - Qiita
  • 履歴を持つデータの設計

    酔いどれ設計ナイト2019の発表資料です。

    履歴を持つデータの設計
  • Goのpackage構成と開発のベタープラクティス

    (images: github.com/egonelbre/gophers) こんにちは。 データエンジニアリンググループ(CETチーム)の寺下です。 自分の所属するCETチームでは今まで主にScalaPythonなどを使ってAPIや基盤を実装してきましたが、最近では徐々にGoによる実装も増えてきており、GAE/GKE上で番運用を行っています。 記事ではGoのプロダクトにおいてDDDライクなpackage構成で実装する際の注意点や、汎用的に通用するであろう実装のTipsについて書いていきます。 記事で紹介する例がベストプラクティスだというわけではありませんので、あくまで実装の一例程度に捉えて頂けると幸いです。 Goのアーキテクチャ Goは言語仕様がシンプルかつフォーマッタが強力なため、syntaxレベルでは開発者によってコードの品質がブレにくいというメリットがあります。 しかしなが

    Goのpackage構成と開発のベタープラクティス
  • リソースの一部更新におけるURL設計 - Qiita

    概要 Webアプリケーションにて、リソースの一部更新を行う際、どのようにURL設計を行うとシンプルで美しいか(当はそこまで考えていなかったけど)悩んでいたところ、 @t_wada さんから素敵な設計指針をご教示いただきました。 記事はその内容に加えて、実際に自分で行ったこと、調べたこと、思った事など、まとめております。 あらすじ 数週間前にSIピラミッドからヒモなしバンジーを決めてWebの世界に飛び込んだ私は、小さな小さなWebアプリケーションをrails newから手探りで作っていました。 そんなとき、簡単なリソースの一部更新機能をどう実装したもんかなーと悩んでました。以下、当時(といっても先週)の超雑なぼやき。 リンクをクリックしてモデルの一部を変更するのはどうしたらいいんだろう。 例)不参加をクリック -> 某カラムをtrueからfalseへ リクエストオブジェクトに対象カラムの

    リソースの一部更新におけるURL設計 - Qiita
  • 10xプログラマーという神話|zaq1tomo

    10xプログラマー、それは「一流のプログラマーが普通のそれと比べて10倍の生産性をもつ」というソフトウェアエンジニアの世界における神話です。 「多くの人が必要とするものを創れるようになりたい」 そんな想いからこれまで、Gunosy、Mercari、LINEなどでエンジニアとして働いてきましたが、直近、今後進むべき道について見つめ直す機会があり、「良いエンジニアとは何なのか」について自問する時間がありました。 その過程で、Redisの作者Salvatore Sanfilippoによる「The mythical 10x progrmmer」と出会い、非常に為に内容が多かったため、人に翻訳させて欲しいと申し出たところ、「Sure!」と快諾して頂いたため、僭越ながら共有させて頂きます。 Salvatore Sanfilippo(@antirez) - http://invece.org/ - h

    10xプログラマーという神話|zaq1tomo