タグ

設計と考え方に関するindicationのブックマーク (22)

  • 勘でリレーションを張っていないか? - Qiita

    はじめに 今回は外部キーを張るときに最低限意識したいことについて書きました。 何か間違えがあったり、もっとこういうところも意識してますという人がいたらコメントお願いします。 この記事で伝えたいこと ①リレーションシップ先のデータを消したときに同時にリレーションシップ元のデータが消えても自然な状態を作る ON DELETE CASCADEをうまく利用できる状態を作る つまり親子関係を正確に表現する。 リレーションシップ先は親テーブル、リレーションシップ元は子テーブルを意味しています。 ②データを作成するときのことを考えてデータの生成順序がおかしくならないように外部キーを張る ③関連を表現するときに中間テーブルを利用したほうが良い場面がある 注意 下記【例を交えながら説明】の説明に出てくるテーブル設計に関しては、上記の【この記事で伝えたいこと】の①と②と③の項目に対して想像しやすいように、理解

    勘でリレーションを張っていないか? - Qiita
  • 営業日などの規則性と例外を扱うための設計

    解決したい問題 例として、飲店の予約サービスを考える。 予約を受け付けるためには各店舗の営業スケジュールを管理しておいて、営業日の営業時間内のみ予約を受け付けるようにする必要がある。 たとえば、ある店舗は各曜日の営業時間について、以下のように定めているとする。 平日:11:30-22:00 土曜日:11:00-22:00 日曜日:11:00-21:00 定休日:木曜日 これを素朴に設計すると、たとえば以下のような「営業日については営業時間を保持し、定休日についてはレコードがない」というテーブルになるかもしれない。 店舗 曜日 開店時刻 閉店時刻

    営業日などの規則性と例外を扱うための設計
    indication
    indication 2022/07/13
    列挙するのは案外正しかった
  • RDBのデータモデリング・テーブル設計の際に参考にしている考え方と資料

    はじめに タイトルのとおり、RDBのデータモデリング・テーブル設計を行う際に参考にしている考え方と関連資料をまとめました。 P.S. なんと記事内でいくつか参考として挙げさせてもらっている増田さん・かとじゅんさん・奥野さん・そーだいさんからコメントいただくことができました。 当にありがとうございます。 前提 RDBを採用するのは事実を無駄なく正しく記録するため 正規化、トランザクション、制約とデータ整合性 基的には始めに理想として集合論・リレーショナルモデルに基づいて正規化を考え(論理設計)、パフォーマンスなどの現実問題に対して折り合いをつけていく(物理設計) 制約を最大限利用する cf: ↑P91〜 ↑P.29,41 ↑P56〜 ↑5章 ↑P347~ 情報とデータ データ:単なる事実の値→これを永続化して蓄えるものがRDB 情報:データから生み出される意味や目的のあるもの→RDB

    RDBのデータモデリング・テーブル設計の際に参考にしている考え方と資料
  • ふつうのプログラマのふつうの設計

    普通のプログラマの普通の設計 2022-01-26 編(雑談)の前振りスライドです。 https://modeling-how-to-learn.connpass.com/event/231669/

    ふつうのプログラマのふつうの設計
  • 「ビジネスロジック」とは何か、どう実装するのか - Qiita

    アプリケーション開発で、「ビジネスロジックは分離しろ」だとか「Controller にビジネスロジックを書くな」といったことをよく言われると思います。 しかし、ビジネスロジックという言葉の意味を聞いたり調べたりしてみても、「システムのコアの部分」とか「システムの目的になる処理をするところ」みたいなことを言われたりして、よく分かりませんでした。 そんな中、クリーンアーキテクチャや DDD の戦術的設計について学ぶことで、「ビジネスロジックとは何か」、「ビジネスロジックはどう実装するか」について、自分なりの考えが整理されてきたので、この記事ではそれをまとめます。 ※ 曖昧な言葉を自分としてどう使っているかという話になります。違う意味で使う方もいると思うので、ご注意ください ビジネスロジックとは何か 「システムのコアの部分」とか「システムの目的になる処理をするところ」といった説明も正しいとは思い

    「ビジネスロジック」とは何か、どう実装するのか - Qiita
  • 仕様変更に強い開発をするための、ヒアリングモデル

    仕様変更に強い開発をするための、ヒアリングモデル:仕事を楽しめ! エンジニアの不死身力(21)(1/2 ページ) 今回のテーマ:仕様変更が起きる理由、そしてそれを防ぐには ある程度の経験を積んだエンジニアなら誰しも、顧客から仕様変更を依頼されて困った経験があるかと思います。 仕様変更が起こると手戻りが発生し、開発工数の増大や予算の圧迫、納期遅れなどを引き起こします。さらに。「仕様だ/仕様ではない」「言った/言わない」といったコミュニケーションのトラブルは感情論になる場合が多く、顧客との信頼関係も悪化します。エンジニアは無理な仕様変更で士気を落とし、顧客は社内調整などでいら立ちを覚えます。 せっかく開発するなら、リソース的にも感情的にも気持ち良く仕事をしたいものです。そこで今回は、「なぜ仕様変更は起こるのか?」をテーマに、仕様変更が起きる原因を探り、それを防ぐヒアリング方法を紹介します。 ヒ

    仕様変更に強い開発をするための、ヒアリングモデル
  • いわゆる仕様と業務例外について - 急がば回れ、選ぶなら近道

    最近とにかく、移動が多いので、その中でちょいちょい考えたことをまとめておきます。まずは仕様の理解の仕方とか、業務例外とか、押さえておきましょうという視点から。別にこれが正解で必須というわけではないので、あくまで個人の経験をまとめただけです。 モデリングとか、なんというかそういう高尚な話ではなくて、実際に仕様をまとめるときに、現実的に落ちる穴を、経験的に書きます。大抵のプロジェクトでは、仕様が固まらずに、または手戻りが発生して酷くコストが膨らむということがやはり多いわけで。理屈はともかく自分の経験的な対策案です。 (なんというか、開発方法論や手法・ドキュメントのまとめ方は、なんとかBOKから始まって、アジャイルや押しくらまんじゅうやらでいくらでもであるのですが、その一方で丁寧な要求定義や設計それ自体ができる人材は、むしろ急激に減っているような印象すら受けます。海外からの翻訳や輸入はやたらと多

    いわゆる仕様と業務例外について - 急がば回れ、選ぶなら近道
  • Webアプリでパスワード保護はどこまでやればいいか

    Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno

    Webアプリでパスワード保護はどこまでやればいいか
  • 継続開発のススメ - Twisted Mind

    概要 開発をすればリリースがあり、リリースが終われば開発があります。継続開発をする以上はリリースと開発の繰り返しです。 開発手法やリリース手段は沢山あるのですが、あまりしっくりくるものが無かったので自分でまとめてみました。 これで完璧というものは残念ながらこの世にないと思うので、これからも臨機応変に良い流れを作って行ければと思います。 この文章は以下のような構成になってます。書き殴りですみません。 バージョンの付け方 ソースコード管理とリリース タスク駆動 環境方針 定義 いくつか事前に定義しておかないと話しが訳わからなくなりそうなので。 バージョン管理には git を採用しています。 開発というのはコードを書く事だけを指してはいません。 ここでいうフレームワークは「自身で開発している」として扱います。そうしないとちょっと難しいので。 ライブラリは自身の開発とそれ以外があると思いますので、

    継続開発のススメ - Twisted Mind
  • 10分で分かるアジャイル開発の基本

    ウォーターフォール型で重視する要素(価値)とアジャイル開発で重視する価値を対比。ウォーターフォール型の価値を否定しているのではなく、重要であることを認めつつ、新たな価値にも目を向けることを促している アジャイル開発の各手法の提唱者が合意した宣言で、アジャイルの根幹ともいうべき精神を表す。ウォーターフォール型開発で重視すべき要素(価値)を四つ挙げ、それぞれに対するアジャイルの価値を提示している(図1)。 新しい四つの価値が、あたかも既存の四つの価値を置き換えるように見えるがそうではない。これまでの価値の重要性は認めつつ、別の新しい価値に目を向けることを促している。 word2 自己組織化 アジャイル開発が目指す行動規範のこと。チームを構成する各メンバーは自分自身をコントロールして自律的に行動し、目標に向かってチームの成長に貢献する。この成長を「自己組織化」と呼び、変化への適応能力を高める上で

    10分で分かるアジャイル開発の基本
    indication
    indication 2011/06/07
    我々の間には「チームプレイ」などという都合のいい言い訳は存在せん。あるとすれば、スタンドプレーから生じる「チームワーク」だけだ。 公安9課課長 荒巻大輔 『攻殻機動隊 S.A.C. 第5話』より
  • Web Applicationを綺麗に設計するためのMVACという考え方 - $shibayu36->blog;

    【2016/03/04追記】以前まとめたこのMVACという名前の設計は既に古くなっており、今はこのようなアーキテクチャで設計していません。 こんにちは。最近ははてなでMVACというアーキテクチャに則って開発をしているのですが、ようやく意味を理解できてきました。そこで今回は「Web Applicationを綺麗に設計するためのMVACという考え方」について、サンプルを交えながら説明していこうと思います。かなり長くなってしまったので、時間があるときにでもどうぞ。 MVACって? データソースやロジックを扱う「Model」、表示・出力を管理する「View」、複数のModelとControllerをつなぐApplication、ユーザのリクエストなどを受け取りViewやApplicationを制御する「Controller」の4つの要素を組み合わせてシステムを実装する方式。MVCをさらに抽象化した

    indication
    indication 2011/03/03
    Zend Frameworkを使っていて、これと似たように、ModelとControllerの間に何か挟む仕様がきれいってことが判明していた
  • 理不尽にやると上手くいく - レジデント初期研修用資料

    ちょっと前、「ジューサーの中に金魚を入れる」という現代美術の展示があった。 ジューサーの中に金魚と水が入っていて、スイッチだけリモコンで、観客の側に置かれる。観客は誰もがそのスイッチを押すことができるようになっていて、「いつでも金魚を殺せる」という、その感覚が展示になっていた。 金魚の寿命を延ばすもの この展示で、実際にボタンを押せた人はたぶんいないのだろうけれど、これをたとえば、ジューサーに入れた金魚をインターネットで公開して、ネットの向こう側にいる誰もが、匿名のままそのボタンをクリックできるようにしておくと、誰かがボタンを押してしまう。多数決ルールを導入して、「ボタンを押した人が累計で10人を超えたら、ジューサーの電源が入ります」という看板を出しておくと、ボタンが押される閾値はますます下がる。 匿名ルールを廃して、たとえばTwitter のような、押した人をある程度トレースできるメディ

  • .NETの例外処理 Part.1 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs

    Archived MSDN and TechNet Blogs 2/7/2020 2 minutes to read MSDN and TechNet blog sites have been retired, and blog content has been migrated and archived here. Archived blogs are grouped alphabetically by the initial letter of the blog name. Blogs and blog posts can be searched by their names, using the Search box at the top of the page. Actively updated blogs have been moved to other blog sites,

    .NETの例外処理 Part.1 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
  • プロジェクト推進者のための議事録の書き方 - 人と組織と、fukui's blog

    2011年02月07日 02:53 カテゴリプロジェクトデザイン プロジェクト推進者のための議事録の書き方 Posted by fukuidayo Tweet プロジェクトを設計(デザイン)し、前に進める。という仕事に取り組み始めてから、ありがたい事に多くの仕事相談や依頼を受けるようになった。やってみて感じるのは、企画するだけでなくて、ものごとを確実に前に進めてくれる人をどこの企業も求めているんだなー、ということ。 プロジェクトを設計し、前に進める。というと大層なことをやっているように思えるかもしれないけれど、実は僕がやっていることは当に単純で、 ・アジェンダをつくり ・会議をファシリテートし ・議事録を作成する ということをしているだけだ。もちろんプロジェクトを円滑に進めるために必要であれば、情報共有やプロジェクト推進のツールを提供したりもするけれど、基的には無料で利用でき、汎用性

  • 指は頭より賢い:「意識下の認識能力」実験 | WIRED VISION

    前の記事 安価でスタイリッシュな「触手型義腕」 指は頭より賢い:「意識下の認識能力」実験 2010年12月10日 サイエンス・テクノロジー コメント: トラックバック (0) フィードサイエンス・テクノロジー Laura Sanders タイピストを被験者とした研究により、タイピングの誤りを脳が検知していない場合でも、「指」は無意識のうちに正しく知覚しているらしいことが明らかになった。 バンダービルド大学の心理学研究者、Gordon Logan教授らによる研究で、論文は10月29日付けの『Science』に発表された。 研究チームは、1分に40ワードを打てるという熟練したタイピストたちを研究対象にした。彼らはある文書を、平均で90%という正確さでタイプすることができた。 研究者らは、画面上に表示される単語の約6%に、ありがちなタイプミスが含まれるように操作した(例えば「sweat」を「sw

    indication
    indication 2010/12/10
    機器のモジュール化であるべき姿かもしれない
  • プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して

    Java EEや.NETCOBOLやVB6よりも当に生産性が高いか? - 達人プログラマーを目指してのコメントで 熟練者も居ることは理解しているが、開発をする上で熟練者ばかりを集めることはできない。このため初心者側にレベルを合わせざるを得ない。 というコメントをいただきましたけれど、これは実に典型的なSIer(の上司)の考え方ですね。SIerの仮説と呼んでもよいくらいですね。とにかく、この仮説の前提となっているのは プログラマーのスキルレベルは一定で成長しない プログラマーは容易に交換可能なリソースである プログラマーは単純労働者である というモデルです。とにかく、この仮説がはびこっているから、いまだにSIerのフレームワークは「初心者側にレベルを合わせざるを得ない」という思い込みで作られていることが多いのでしょう。 COBOL(の初期の)時代ならまだしも、少なくとも現在の開発環境にお

    プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して
    indication
    indication 2010/12/07
    そう考えるとコードと1対1の詳細設計(excel等)は悪でしかない。まぁ、当り前か
  • フローチャートの呪い - カレーなる辛口Javaな加齢日記

    http://blog.livedoor.jp/dankogai/archives/51083212.html http://d.hatena.ne.jp/NOV1975/20080719/p2 http://d.hatena.ne.jp/NOV1975/20080719/p4 いまさら議論するのも馬鹿らしいけど,フローチャートなんぞはものの役に立たない. そんなものは作るだけ時間の無駄だし,何かの役にたつこともない. それは何十年も前に結論が出ていると思う. それはあまりに自明であったため,今では話題になることも少なくなった. 人月の神話―狼人間を撃つ銀の弾はない (Professional Computing Series) 作者: フレデリック・P,Jr.ブルックス,Frederick Phillips,Jr. Brooks,滝沢徹,富沢昇,牧野祐子出版社/メーカー: アジソンウェス

    フローチャートの呪い - カレーなる辛口Javaな加齢日記
    indication
    indication 2010/12/03
    論理構造の表現方法としてのフローチャートのdiscard。業務フローとかならわかりやすくて使うんだけどねぇ。
  • Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して

    プログラミングと設計は来切り離せないものなのではがすごい反響だったのですが、結局この記事で私が言いたかったことは、 Java EEなどの現代的な開発環境はCOBOLなどの古い言語を使った開発とは根的に設計の手法が異なる 多くの現場では未だに古い設計手法を使っているため、オブジェクト指向などの最近の開発環境のメリットが活用できず、低い生産性にとどまっている。 ということに要約できると思います。ただし、どうして、Javaではオブジェクト指向で開発しないといけないのか、どうして昔ながらの伝統的なやり方を改め、新しい設計手法を採り入れないといけないのかと疑問を持たれた方もいらっしゃるかもしれません。ここでは、開発手法と生産性の問題について、もう少し掘り下げて検討してみたいと思います。 レガシー言語の生産性 最近のCOBOLでは、オブジェクトやスタック変数すら使えますが、ここではCOBOL85の

    Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して
    indication
    indication 2010/12/03
    束縛と自由(柔軟性)。企業としての教育が問題を提起していると考える
  • “テスト軽視”はなくなった。でも…

    2004年6月、記者はこの欄で、ソフトウエアのテストに関するある記事を執筆した。タイトルは「なぜ『テスト』は軽視されるのか?」である。この記事では、IT業界で“テスト軽視”の風潮が広がっている現実を語り、その改善を訴えた。「その通りだ」「今その対策を打っている」――。読者の皆様から、さまざまなご意見をいただいたことを覚えている。 それから6年半近くが経った今、この状況はどうなったのか。記者は日経SYSTEMS 2010年12月号で「バグをなくそう 悪条件に負けないテストの秘訣」と題して、テストに関する特集を担当した。ここで多くの開発現場を取材した結果、今ではテスト軽視の風潮はほとんど見られなくなったと感じている。現場にはテストの計画書がしっかりあって、品質目標も明確になってきた。テストの技法や管理に関する教育も、かなり進んでいるようだ。 どんどん難しくなる「テスト」 ところが、テスト軽視の

    “テスト軽視”はなくなった。でも…
    indication
    indication 2010/11/27
    Excelの崩壊というオプションもあるからやるときは注意しないといけない
  • プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して

    最近はアーキテクトという役割で客先に常駐し、フレームワークの選定をしたり、事前に共通部品を設計したりする役割を担う仕事を引き受けることが結構あります。そこで運よくお客様のマネージャーがオブジェクト指向開発の経験が十分にある方だと、IDEなどの開発環境やインターネット接続環境を当然のように用意してくれるので最初から仕事がスムーズにできるのですが、そうでないとMS Officeしか入っていないロースペックのノートPCを渡されて、要件定義フェーズの期間中、フレームワークの設計をお願いしますとか、私としてはちょっと首をかしげてしまうような困ったことを言われてしまう場合があります。開発フェーズが始まる半年後まではコーディングは基的に不要という考え方です。アプリケーションのアーキテクトという役割では少なくともコーディング規約を考えたり、ツールやフレームワークの選定をしたりする必要がありますし、プロジ

    プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して
    indication
    indication 2010/11/24
    PGからのフィードバックを考えた設計であるべきこと