設計に関するtakatamaのブックマーク (10)

  • PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016

    2016/11/03 @ PHPカンファレンス2016 2016/12/15 @ PHPカンファレンス2016再演イベントにて改訂 2017/06/10 @ PHPカンファレンス福岡2017にて改訂 2017/06/10 @ PHPカンファレンス福岡2017講演録画 https://www.…

    PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
    takatama
    takatama 2016/11/14
    PHPのコンテキストで堅牢なプログラミング手法を学ぶ。どこにどんな不具合が紛れ込むのかをよく考えて見出すこととセットで使いたい
  • Microsoft REST APIガイドラインはRESTfulではない

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Microsoft REST APIガイドラインはRESTfulではない
    takatama
    takatama 2016/08/08
    RESTful APIと呼ぶな。HTTP APIと呼べ
  • 残業も減らせる!? 上級エンジニアになるためのDesign Doc超入門

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

    残業も減らせる!? 上級エンジニアになるためのDesign Doc超入門
    takatama
    takatama 2016/06/22
    必要ならドキュメント書こう
  • 「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ

    こんにちは。技術部 開発基盤グループの諸橋です。 クックパッドでは昨今の多くのWeb企業と同じように、GitHub EnterpriseのPull Requestを使ったコードレビューを広範に実施しています。わたしたちのコードレビューでは、ソースコードの字面にとどまらず、サービスの機能として魅力的かどうかや、保守性を含めた設計が適切かといった議論に発展することも良くあります。 きょうはそんななかで話題に上がった「現在時刻」の扱いかたに関する設計の話を書きます。 背景 サービスを開発・運営している我々には、時間帯によって出し分けたり、特定の期間のみに表示したいコンテンツがたくさんあります。 そのたびにデプロイし直すというのはつらいので(特に24:00に出なくなるコンテンツなど)なんとかしたくなりますが、一方で時限式のコンテンツはその時になるまでちゃんと動いているか確証が取れないので怖いです。

    「現在時刻」を外部入力とする設計と、その実装のこと - クックパッド開発者ブログ
    takatama
    takatama 2016/05/31
    これやったら、レビューで「ビジネスサイドの人間と会話する時に時刻なんて出てこない。それがコードに現れるのはおかしい」と指摘されて、残念な気持ちになった
  • 逆コーンウェイ戦略とDevOps, Microservices, Agile

    コーンウェイの法則 「コーンウェイの法則」というのを知ってますか?Jim Conplien の組織プロセスパターンにも登場しますが、”組織の構造がソフトウェアの構造に反映する“あるいはその逆、“ソフトウェアの構造が組織の構造に反映する”というものです。Wikipedia によると、 Conway’s law is an adage named after computer programmer Melvin Conway, … “organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations”

    逆コーンウェイ戦略とDevOps, Microservices, Agile
    takatama
    takatama 2016/05/29
    法則を利用する。コンウェイの法則があるなら、望ましいアーキテクチャになるように組織に手を入れる。コントロールできることに集中する
  • 「論理削除」ではなく「無効化」を - 設計者の発言

    以前の記事で、テーブルに「スタンプ属性」をいちいち載せるのは惰性的習慣ではないかと書いたが、似たものに「論理削除フラグ」がある。各テーブルにいちいちこれが置かれているDBを見ることがあるが、それもまた惰性の結末ではないか。スタンプ属性だろうが論理削除フラグだろうが、必要ならば置くべきだし、必要でないなら置くべきではない。ただし、多くのケースで必要なのは「論理削除」ではなく「無効化」であることは知っておいたほうがいい。 削除のややこしさは、他テーブルとの関係にある。まず、通常の削除(物理削除)について見よう。テーブルAと参照関係にあるテーブルBがあるとする(図1)。ここで、テーブルA上のレコード①が、テーブルB上のレコード③と④によって結合(参照)されているとすれば、①を削除することは許されない。もし削除してしまえば、存在しないAレコードを結合するBレコードの存在を許してしまう。典型的な更新

    「論理削除」ではなく「無効化」を - 設計者の発言
    takatama
    takatama 2016/05/24
    タイトル通り。更新だけに制約を持たせるのが無効化。参照OK。中途半端なのが論理削除
  • 開発の見積もりとスケジュール管理 - クックパッド開発者ブログ

    こんにちは。会員事業部の丸山です。 エンジニアが開発を開始する時にはタスクの見積もりとスケジュールを作成行って、実装を進めていくと思います。 しかし1ヶ月を超えるような規模の開発をする場合、なかなか予定通りの期日に終わらなかったりすると思います。 そして大抵の場合、増える方向になりますよね。 今回はそういうことにならないために、私が気をつけていること・実践していることをいくつか紹介したいと思います。 見積もりとは まずは「見積もり」とは何なのかを正しく理解したいと思います。 一般的には「見積もり」=「全タスクとその工数を洗い出す」というものだと思います。 しかしここで以下のことに気をつける必要があります。 見積もりとスケジュールとコミットメントは違う 見積もりとはあるタスクがどれだけの工数(規模)なのかを算出することです。 対して、スケジュールとはあるタスクがどれだけの工期(期間)なのかを

    開発の見積もりとスケジュール管理 - クックパッド開発者ブログ
    takatama
    takatama 2016/04/18
    難しい言葉を使わずに説明してる。基本に忠実にいこう。
  • ウェブアプリケーション開発に新言語を採用したときにインフラで考えたこと - ゆううきブログ

    この文章は、サーバサイドのウェブアプリケーション開発において、社内実績の少ない新しい言語を採用したときにインフラ面で考慮したことを社内向けにまとめたものです。 はてなでは、長らくPerlでウェブアプリケーション開発を続けてきた一方、ここ数年で社内でScalaまたはGoの採用事例も増えてきました。 今後開発が始まるプロダクトにおいても、PerlScalaGoもしくは他の言語を採用するかどうかを開発開始時に選ぶことになるでしょう。 新言語を採用するときに、考慮すべきことの一つとして、「インフラ」への影響があります。 新言語に関する雑談をしていると、ウェブアプリケーションエンジニアに「インフラ」への影響について聞かれます。 もしくは、ウェブオペレーションエンジニアから考慮するポイントを伝えることもあります。 ScalaGo以外に、Node.jsやサーバサイドSwiftはどうかというのも雑談

    ウェブアプリケーション開発に新言語を採用したときにインフラで考えたこと - ゆううきブログ
    takatama
    takatama 2016/03/07
    わかりやすーい
  • カスタマージャーニーよ、さらば。 - Page 2

    一言で言うと、CxDとはターゲット顧客が1日に経験する「ブランド体験」を、すべて時系列で並べて一覧化したものです。調査に基づくのが理想ですが、身近な近しい人にヒアリングしつつ、残りを想像で埋めていくだけでも十分に発見があります。 例えば、朝、駅に着いてグレゴリーのリュックから定期パスを取り出す。チャックを開くざっくりとした感覚がとても心地よい。これはブランド体験です。会社に着いて、シアトルのスタバ一号店で買ったオリジナルマグカップに、Nespressoで淹れたエスプレッソを注ぐ。横で同じくコーヒーを淹れていた同僚がマグカップに関心を示したので、購入したときのストーリーを語る。この数分の間に、2つのブランドに対して2人の顧客に、合計4つのブランド体験が生まれています。 CxDでは、このようにブランド体験を時系列に書き出していきます。それぞれの体験には、対象となるブランドと、その体験がポジかネ

    カスタマージャーニーよ、さらば。 - Page 2
    takatama
    takatama 2016/03/05
    顧客の観点と企業の観点。使う道具で入れ替わるわー
  • Web系の自分が想像と障害で学んだバッチ処理・設計の基本 - コンポツさん

    バッチ処理というのはそれ単体で勉強しようとするとなかなか何を勉強したらいいのかわからないことが多い。 特に経験がWeb系ばっかりだと、いざバッチ処理を実装しようとした時に基的なノウハウを知らないままに書いてしまうことが多い。 バッチ処理というのは実態を整理すると「何らかのトリガーを期に起動し、データをロード・加工・変換・集計してから、出力する」という事になる。 まぁ、INがあって処理してOUTがあるという点では関数だと考えてもいいだろう。 システムの利用者(人に限らない)のアクションとは直接関係ない処理であったり、利用者のアクションをトリガーとしていても、即時にレスポンスがいらないor返せない場合に バッチ処理を選択する事が多い。 実現方式はシェルスクリプト、LL言語、実行可能バイナリだったりするし、デーモンとして立ち上げる場合もある。 利用者の操作に対して対話的・同期的な処理はオンライ

    Web系の自分が想像と障害で学んだバッチ処理・設計の基本 - コンポツさん
  • 1