タグ

設計に関するyatataのブックマーク (34)

  • Rails で RESTful Web API をシンプルに保つ設計 - アジャイルSEの憂鬱

    Rails で RESTful な Web API を作る場合、色々な方法があると思います。 今回、私が API を作るときによくやっている設計をブログに書いてみます。 コード 説明するより、コードを見てもらった方が早いと思うので、コードを書く。 # config/routes.rb namespace :api, defaults: { format: :json } do namespace :v1 do resource :user, only: :show end end # app/controllers/api/v1/users_controller.rb module Api module V1 class UsersController < ApplicationController before_action :doorkeeper_authorize! def show

    Rails で RESTful Web API をシンプルに保つ設計 - アジャイルSEの憂鬱
  • RESTfulなWeb APIを設計するときに考えること - Qiita

    ApigeeやHerokuのドキュメントに従うのでもよかったんだけど、読んでいく中でやっぱり考えることは出てきたので、あくまで自分のための指針をまとめてます。 包括的なWeb API作成についての知見 HerokuAPIデザイン | SOTA interagent/http-api-design · GitHub Web API 設計のベストプラクティス集 "Web API Design - Crafting Interfaces that Developers Love" - フリーフォーム フリークアウト Web API Design | Apigee NetFlixもWeb APIの設計についての知見をよく放出してくれてる印象。 設計の基は /コレクション/名詞 リソースの関係を表したい時に階層化する members/1234/friends 階層は浅く保つ できるだけ/c

    RESTfulなWeb APIを設計するときに考えること - Qiita
  • REST API設計者のための有名APIのURL例 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    REST API設計者のための有名APIのURL例 - Qiita
  • 認証を含む API 開発で検討すべきこと - ボクココ

    ども、@kimihomです。 API に関する基礎的な話で、なぜ API が重要なのか、APIの実装で注意する点について記述した。 今回はAPI開発において最も頭を悩ます、認証の問題について考えてみたい。 API における認証 よくあるログインが必要なページを考えてみていただきたい。 通常のWebアプリケーションであれば、Cookieという仕組みを使って毎回Webサーバーにアクセスするときにsession idというものを送信し、それとユーザー情報を紐付けたデータを取ってくることで、どんなユーザーからリクエストが来たのかをWebアプリケーション側で判断することができる。これにより、私たちはいつも閲覧しているWebアプリケーションが自分専用の画面として見れるようになっている。 これがAPIになると話は違ってくる。Cookieという仕組みが使えないのである。ということで、なんとかしてAPIにア

    認証を含む API 開発で検討すべきこと - ボクココ
  • エンジニア歴20数年の私が、設計書を書く際に心がけていること - Qiita

    はじめに 時の経つのは早いもので、私がIT業界に身を置いて四半世紀になってしまいました。 その間、膨大な数の「設計書(仕様書)」を書いて来ましたが、未だに悩み・迷いは尽きません。 それでも、亀の甲より年の劫とも申しますので、私なりの経験則を「個人」と「チーム」の両観点でまとめてみました。 稿のテーマは、「主に設計書を想定した、開発ドキュメントの書き方」です。 稿で前提とする設計書は、ExcelやWordで書かれた、フォーマルな(≒納品物になりえる)設計文書、です。 したがって、自社サービス開発よりも受託開発、アジャイルよりもウォーターフォール、を前提として読んでいただいた方が、しっくりくると思われます。 <ご注意> 稿の内容は執筆者独自の見解であり、所属企業における立場、戦略、意見を代表するものではありません。 個人的に心がけていること 当該文書の作成目的や位置付けを冒頭に記載する

    エンジニア歴20数年の私が、設計書を書く際に心がけていること - Qiita
  • ランキング設計はどうあるべきか? その2|深津 貴之 (fladdict)|note

    前エントリで論じられた、正しいランキング設計の考察の続き。第2回は、ランキングの収奪性、格差の固定性を軽減する手段を、具体的に論じてみる。 前回の記事へのTwitter上のフィードバックは、Togetterにまとめてある。こちらもご興味があれば、一読の価値がある。いくつか被ってしまったものもあるけれど、諸々の後半記事。 「ランキング」以外の名称を用いるこれはほぼ確定。ランキングという名前は、「noteとして競争原理を推奨する」という強いメッセージを発する。noteの全てのユーザーが、競争原理で動いているわけではないので、これは望ましくない。 おそらく最終的には「注目」「人気」などの名称を使うことになるかと思われる(「オススメ」はパーソナライズ用にとっておく)。また、「ランキング」という名称やスタンスをやめることで、後述するようないくつかの公平性のための施策を行う余地が生まれる。 時間による

    ランキング設計はどうあるべきか? その2|深津 貴之 (fladdict)|note
  • Railsのファットモデル問題に対処する前に読んでほしい記事 - Qiita

    背景 Skinny Controller, Fat Model Railsではスキニーコントローラー、ファットモデル(Skinny Controller, Fat Model)という方針のもと、 コントローラーのコード量を少なくして、モデルを分厚くするという書き方が推奨されていました。 10 Ruby on Rails Best Practices — SitePoint Rails Best Practices 1: Fat Model – Skinny Controller このような背景から、ファットモデルという設計が目指すべき設計という認識となりました。 「ファットモデル問題」の登場 ところが、原因はわかりませんが、次第にファットモデルが問題があるものとしてみられるようになりました。 界隈では「ファットモデル問題」として取り上げて解決するという方法が紹介されるようになります。 20

    Railsのファットモデル問題に対処する前に読んでほしい記事 - Qiita
  • 「WebAPI 設計のベストプラクティス」に対する所感 - Qiita

    「翻訳: WebAPI 設計のベストプラクティス」を読んで色々と思うところがあったので書きました。 上記の記事は訳文でありますので、正しくは「Best Practices for Designing a Pragmatic RESTful API」に対する所感と述べた方が良いのかもしれませんが、日語で通して読めるよう Qiita に投稿された訳文に対する所感として書いています。 以下では「翻訳: WebAPI 設計のベストプラクティス」並びに「Best Practices for Designing a Pragmatic RESTful API」は「当該記事」と表現します。 観点 当該記事では「○○とした方がよい」との意見に対してそうすべき理由が明らかになっていないか、もしくは表現が曖昧な場合が目立っていると感じました。設計は実装のようにプログラム言語仕様が制約を与えられないため、意図

    「WebAPI 設計のベストプラクティス」に対する所感 - Qiita
  • 最近アプリケーションの設計するときに気をつけてること - suusan2号の戯れ

    最近、機能の設計をレビューしたり話し合ったりするときに、うん・・・?ってなることがあって、でも駄目な理由をうまく説明できなかったのでちゃんと言語化してみる。ちなみにRailsの話です。 DBには事実だけを記録するようにする 色々開発してきて思ったのは、テーブルに状態を持たせるようにするとあっという間に複雑度が増してしまうということ。 status カラムや hoge_flag みたいなカラムを持つこと自体は全然否定しないけど、当にそれが最適なのかは慎重に考えた方がよいと思う。 これは例ですけど、会員申し込み => 何か審査 => 会員登録完了 みたいなフローのアプリケーションを作る時に、会員情報のテーブルを1つだけ作りstatus 、approved_at みたいなカラムを突っ込んで、申し込み状態と申込み完了状態を アプリ側で頑張って判定しようとしている例はまれによくある。 こうすると何

    最近アプリケーションの設計するときに気をつけてること - suusan2号の戯れ
  • Railsで導入してよかったデザインパターンと各クラスの役割について - masato_hiのブログ

    3年ほどRailsを書いてきてある程度知見が溜まってきたので、忘れないためのメモとしてKPTと導入例を交えながらダラダラと書いています。 見出しの命名規則は クラス名/ディレクトリ名の単数形をupper camel caseにしたもの + KPT です。 Keepは今後も使うもの、Problemは開発規模によっては問題が発生する(した)もの、Tryは現在使用していないが使用したほうが良いと思っているものです。 これらすべてを導入すれば上手くいくというわけでもないので、開発規模に合わせて適切に採用していくと良いと思います。 DDDやデザインパターン等見聞きはしているものの詳しいわけではないので間違っている部分等あるとは思うのでその辺りはコメントでご指摘お願いします。 はてブコメント欄で頂いた指摘内容等についてはまとめの後でまとめて返答を記載しています。 Asset (Keep) app/as

    Railsで導入してよかったデザインパターンと各クラスの役割について - masato_hiのブログ
  • Railsでサービスとフォームを導入してみる話 - assertInstanceOf('Engineer', $a_suenami)

    この記事はRuby on Rails Advent Calendar 2013の6日目の記事です。 前日は @tkawa さんの「Favoriteの設計実装はパターンとして使える」でした。 Railsで適切に責務を分割するということ RailsはいわゆるMVCと呼ばれるアーキテクチャパターンにのっとったフレームワークであり、プロジェクトを作成するとデフォルトでmodels/、views/、controllers/などのディレクトリが作成されます。 基的にロジックを記述する場所はモデルであり、ビューには表示処理だけを、コントローラにはアプリケーション上必要な手続きだけを記述するべきであると一般的には言われています。*1 ただ、それを忠実に実践していった結果、モデルが肥大化しメンテナンシビリティやテスタビリティが低下するという問題も多く指摘されています。 これについては4日目に @joker

    Railsでサービスとフォームを導入してみる話 - assertInstanceOf('Engineer', $a_suenami)
  • Rails でドメインロジックの実装方法まとめ - assertInstanceOf('Engineer', $a_suenami)

    このエントリは Ruby on Rails Advent Calendar 2014 の 7 日目のエントリです。 前日は seri_k さんの「Turbolinksさんと上手く付き合う10の方法」でした。 お詫び WIP です。公開期限に間に合わない可能性があるため、まだ途中ですが先に公開してしまいました。 サンプルコード等を後ほど追記する予定です。 → 12/08 18:10 追記しました。 Rails のファットモデル問題 Rails で構築したアプリケーションが大規模になり機能が増えていくにつれてモデルが大きくなり、そのうち手がつけられなくなる問題は古くから指摘されています。これについてはもはや詳細を述べるまでもないと思うので割愛しますが、この問題は 2014 年になった今でも多くの開発チームを悩ませていると感じています*1。 このエントリでは、普段 Rails を業務で使いながら

    Rails でドメインロジックの実装方法まとめ - assertInstanceOf('Engineer', $a_suenami)
  • 混乱しがちなサービスという概念について - かとじゅんの技術日誌

    社内でサービスがよくわからないという話になったので、考察を少しまとめておきます。 過去のエントリでも以下のように触れましたが、もう少しかみ砕いてみよう。 サービスという言葉はあいまい まず、簡単に前提の整理から。単に"サービス"って言葉が何を指すのか結構曖昧です。 サービスは簡単にいうと手続きとか振る舞いのことですが、細かくいうと、PofEAAでいうサービスと、DDDいうサービスは、目的が異なります。前者はアプリケーションのためにドメインモデルを再利用可能にするためのものです。後者はドメインの知識を表している振る舞いです。これはのちほど詳しく説明します。 まぁこのあたりは具体例がないと理解しがたいですが、レイヤーの違いによって責務が異なるという感じです。DDDのサービスの章では、サービスには、アプリケーション層、ドメイン層、インフラストラクチャ層と、複数のレイヤーに存在すると言及されていま

    混乱しがちなサービスという概念について - かとじゅんの技術日誌
  • Rails:Service層を運用して良かったところ、悪かったところ - Qiita

    1年前くらいにRailsの設計にDDD(ドメイン駆動設計)のService層を導入し、Modelの肥大化対策をしました。 この記事では、まずどのようなルールでService層が組み込まれているかと、1年間運用してみて良かったところ、悪かったところの感想を書きます。 [2018/05追記] 最近ではサービス層の導入は賛否両論あるようなので、導入する際は自分のプロジェクトに合っているかどうかを十分にご検討ください! Service層を導入するきっかけになった問題点 Modelの肥大化 Model間の複雑な依存関係 多数のミドルウェアの導入による複雑さの倍増 これらにより.. メンテナンスやテストがしにくい コードが整理されていないのでとにかく読みづらい Model複雑化の例 <ユーザがECサイトの商品をお気に入り(like)にするメソッドを書く場合> 処理に関連するテーブル my_itemsテ

    Rails:Service層を運用して良かったところ、悪かったところ - Qiita
  • 「新規アプリの設計」を設計する

    俺コン Vol.1 / Day. 1 https://orecon.connpass.com/event/63769/ CfP submission @ iOSDC: https://iosdc.jp/2017/node/1452 Sample List: https://github.com/yoching/iOSAppDevelopmentPreparationList

    「新規アプリの設計」を設計する
  • iPhone X対応におけるデザイン上の注意ポイント | fladdict

    iPhone Xが発表されたわけですが、なにこのデザイナー泣かせの変態端末。 iPhoneUI設計者グレッグ・クリスティが追い出されて、ジョナサン・アイヴがソフトウェア統括となったのが2014年。 iOS7のフラット化あたりから、どんどんとUI設計が置いてけぼりになった感がありましたが・・・ここにきてまたデザイナー泣かせの豪速球が。 ざっくりデザインガイドラインを読んでの、気になったところメモ。 画面サイズ サイズは従来のベースであった4.7インチの375pt x 667ptから、375 x 812ptに。縦方向に145pt追加された。 想定されるインパクト 表示可能な情報量が増える 縦スクロール系コンテンツのコンバージョンが増加 スクロールで隠れるナビゲーションの必要性が低下 画面上部のボタンのコンバージョンが低下 ゲームなどの全画面イラストに、黒枠が出たり、見切れたりする グラフィッ

    iPhone X対応におけるデザイン上の注意ポイント | fladdict
  • 質の高いAPIを作るための7つの習慣

    今までのやり方を1つずつ改めて、どうやったら品質の高いAPIを素早く作れるのか。 受託を専門とする会社で、実際の仕事の中で改善していった取り組みについてお話します。 なるべくモダンなやり方で品質を落とさずにビジネスサイドからの要求に応えるにはどうしたら良いのか?

    質の高いAPIを作るための7つの習慣
  • 入社からの半年間でコードレビューで指摘されたことのまとめ - 30歳からのプログラミング

    実務未経験でプログラマとして入社して半年以上が経った。 コードレビューで指摘されたことを備忘録としてまとめておく。 自分なりにまとめたものなので、レビュアーが言いたかったこととニュアンスや解釈がずれている可能性はある。 初歩的な内容ばかりで我ながらうんざりする。 せっかく優秀な同僚ばかりなのだからもっと高度なことを学びたいが、こういう初歩的なことが出来ないのが俺の現状なのだから、仕方ない。 そもそもPullRequestを送ったこともなかったわけだし。入社初日は、一人でPullRequestの出し方を練習していた。 それを考えればまあ、こんなものだろうか。 当たり前のことをちゃんと当たり前に出来るようになって、早く、次のステージに進みたい。 PullRequest(PR) PRのタイトルは分かりやすいものに。必要に応じてチケットの番号なども入れる。 コミットやPRは出来るだけ粒度を細かくす

    入社からの半年間でコードレビューで指摘されたことのまとめ - 30歳からのプログラミング
  • MVCのModelって何なの問題 - Qiita

    PHPのフレームワーク「Laravel」やiOSのデータベース「Realm」などではデータベースとオブジェクトを紐付けるORM(O/Rマッピング)をModelと呼びます。 そこでMVCのModel=ORMなどのDBのデータ+操作と勘違いしてしまいそうですが、MVC来のModelはその他のビジネスロジックも含みます。 iOSやAndroidなどのアプリを例にとると以下もModelの仕事です - 通信してデータを取得(通信処理はデータ層)、取得したデータをDBに入れたり(DBの処理もデータ層)メモリキャッシュする - 値(Entity)をメモリキャッシュ、通信、DBなどから取得 ※Androidのアーキテクチャで悩んだ時、以下のとおりに作れば問題なさそうです(2017年6月現在 https://developer.android.com/topic/libraries/architectur

    MVCのModelって何なの問題 - Qiita
  • O/Rマッピング技術の進化が皮肉にも助長している「えせMVC症候群」

    昨日の「Ruby on Railsの『えせMVC』の弊害」というエントリー。若干「釣り」の要素が含まれたタイトルが功を奏したのか、たくさんのフィードバックがいただけた。そんな中で見えて来たのは、この問題はRailsに限った話ではなく、業務用アプリケーションで使われているJavaや.Netの世界でもよく見られる問題だということ。 その「問題」とは、ActiveRecordに代表されるO/Rマッピングの技術の進化が、来のMVC(そしてオブジェクト指向そのもの)のメリットを無視した「えせMVC」な設計を助長している、という問題である。 ・MVCやオブジェクト指向を表面的にしか理解していないエンジニアが増えている(ここが根的な問題) ↓ ・SQLを自分で記述しなくて良いO/Rマッピングはとても魅力的(これはこれで別の問題を含んでいるが、このエントリーではあえて突っ込まない) ↓ ・O/Rマッピ

    yatata
    yatata 2017/08/02
    “Ruby on Railsの『えせMVC』の弊害”