質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

9788閲覧

Django アプリケーション分割のハウツー

foxriver

総合スコア34

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2グッド

2クリップ

投稿2017/08/01 09:02

現在、djangoを利用して業務システムを開発しようと思っております。
各部署ごとにそれぞれが持つ職務をシステム化、管理を行うことが目的です。
ユーザーを管理するテーブル、部署を管理するテーブル、それぞれの職務内容を管理するテーブル、またユーザー間(部署をまたいで)の業務上のやりとり、それによるイベントの更新などで数十のテーブルが必要となり、また各テーブルが持つリレーションも結構複雑です。

そこで質問なのですが、様々なリレーションが存在しているプロジェクトをどう分割すればいいのでしょか?

djangoではプロジェクトはアプリケーションの集合的なものであり、機能ごとに細かく分割し、独立しているのが良い+再利用性を高めるべき、という考えがあると知り、この考えはすごく魅力的に思います。
しかし、上で書いたように、いくつもの関係性が発生していること、さらに部署ごとに作成、変更などのやり方や対象が違うときにこのアプリケーション分割をいかに効率的に行えばいいのかは想像がつきませんでした。個人的に調べてみたものの、再利用できるからであったり、思想に基づいてなどの記述が多く、実際の利用イメージが湧かなかったので、経験に基づいて意見がいただけましたら助かります。

この際分割を行わず、部署ごとに分けて(6,7個のアプリケーション)それぞれの部署についての動作を記述することでも作成はできると思うのですが、せっかくなのでDjangoの持つメリットを最大限に活かしたいと思っています。

ちなみに、要件上pythonのライブラリが便利だったのでdjangoを利用しています。またDjangoの技術的な質問に近いので、申し訳ありませんが、他の言語で解決できるなどのご回答は控えていただけたらと思います。

どなたかご教授お願いします。

ShuyaUchida👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

普段、私が仕事でDjangoを使うときは、accountや、blog というような機能単位でアプリを切るようにしています。下記URLのような構成に近いです。 あと割とよく気をつけることは、アプリが複数あった場合、相互に依存すると、Pythonの循環importのエラーにはまったり、そもそもシステムが複雑になるので、なるべく相互に依存しあわないようにしています。

https://stackoverflow.com/a/23469321

Djangoの本だと、 Two Scoops Django は、実践的な話が多かったのである程度参考になると思います。(洋書でかつ、最新バージョンのは読んでないのですが)

https://www.twoscoopspress.com/products/two-scoops-of-django-1-11

投稿2017/08/01 16:14

tell_k

総合スコア2120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

foxriver

2017/08/02 10:02

回答ありがとうございます。 相互に依存し合わないようにとのことですが、例えば、 1.生産部がモノを作る 2.営業部がそのモノを売る 3.生産部と営業部はやりとりを行う 4.人事部は生産部と営業部のやりとりを閲覧でき、かつモノの売れ具合も確認できる とした場合、私は機能別にすると「生産」「営業」「人事」に分かれると思います。 しかしここではモノは上記3機能に依存していますし、それぞれの機能もやりとりを行なっている(さらにそのやりとりによってステータスの変動が起きる)以上、簡単には切れない関係にあるのかなと思っています。 この場合そもそも「生産」「営業」「人事」という区切りかたで見ていることが誤りなのでしょうか?
tell_k

2017/08/03 14:56 編集

一概には言えませんが、「生産」「営業」「人事」というのはそのシステムを利用する「ユーザー」のことであり、そのシステムに必要となる「機能」ではないと思います。 あくまで妄想にすぎないのですが、なんとなく以下のような機能を思い浮かべました。 1. 生産部がモノを作る 機能A. 商品(=モノ)管理機能 - 商品が一覧でみれる - 生産部の人間が商品を登録/変更したりできる 2. 営業部がそのモノを売る 機能B. 受注管理機能 - 受注の一覧がみれる - 営業部の人間がどの商品を受注したのかを登録/変更できる 3. 生産部と営業部はやりとりを行う 機能C. メッセージ機能? - Bの受注管理に登録された一つ一つの受注に対して専用のページを設ける - そのページ上ではその受注に対しての連絡事項が掲示板のように書き込める - 生産部と営業部の人間が書き込める - 書き込んだ際に相手側にメールなどで通知される 4.人事部は生産部と営業部のやりとりを閲覧でき、かつモノの売れ具合も確認できる - 人事部もCの機能を利用することができやりとりを閲覧できる。 - もの売れ行きが具合が知りたかったらBの受注管理を見れば良い 大雑把には3つの機能があり、それぞれは部門毎に利用できる権限が変わってくるというイメージです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問