初めてのシステム設計で意識したいちょっとしたコツ

2019年9月10日SIer,システム設計,卒業

こんにちは。ソリューション開発部の桑原です。

私事ですが、8月末を持って株式会社アークシステムを卒業することとなりました。

卒業ブログを自社サイトに載せて良い。と許可をいただいたので、3年弱務めたSIerとしての記事と少しの卒業についての記事を書かせていただきたく思います。

初めてのシステム設計(プログラミングを含む)をするときに、何が正しいのかわからなくて困りつまずいてしまうことがあると思います。

私が普段、業務をシステム設計するにあたり今まで気をつけていたことや意識したいことを書いていきます。

失敗談

何を設計すればいいのかわからない

苦い思い出なのですが、私が新人の頃、ある機能の設計を任されておりました。

  • 機能を構成する画面は何枚作り、画面遷移や構成はどうするか
  • 検索画面の検索項目には何が必要か
  • 検索結果の一覧に表示する項目はどうするべきか

いろいろ考えるところは多かったのですが、システム設計における唯一の答えなどもちろんないため、しばらく思い悩むばかりで進捗もあげられない日々が続きました。

挙げ句のはてには似たような画面を真似するといった、いきあたりばったりでの設計をしてしまいました。その結果、矛盾を生んでしまったり機能が抜け落ちてしまったり、悲惨な事態を招いてしまいました。

なぜあのとき私は設計ができなかったのでしょうか。今一度振り返ってみたいと思います。

なぜ?としての業務背景

そもそも上の状況では、「なぜ」この機能や画面が必要なのかを、理解しておりませんでした。

必要性を理解していないので、当然何を作るべきかもわからずに

  • 何を設計していいのかわからなくなる
  • 矛盾した設計になる
  • 作るべき機能が抜け落ちてしまう

といった状態を生み出してしまいました。

ただ、その「なぜ」を理解するためには、そのシステムだけを対象に理解しようとしても「とても難しい」と考えています。

システムの目的とは

なぜその設計をするのか。を理解するためにはそのシステムの目的を理解することが必要です。

システムを細分化した機能についても同じです。その機能が業務/システムに対してどのような役割を持つか。目的はなにか。を意識することで、機能や画面を作成する理由を理解できると思います。

システム(機能)の目的はなにか。設計者が押さえなければ誰もわからなくなってしまいます。

システムの目的を理解するためには何が必要でしょうか?

システムを取り巻く環境・業務

システム化対象は業務全体のある一部分であることが多く、システムが業務全体に対して

  • どのような役割を果たすのか
  • どのような意味を持つか

を意識することが大切だと考えます。

システム設計のときに業務全体を把握することによって、そしてシステムと業務の境界を意識することでシステムの立ち位置を理解し、本質的な目的が見えてきます。

ですので、まずは業務の理解システム化範囲システムの目的を理解することが必要だと思います。

例えば、お客様の要望として

  • システムの利用者を検索して一覧化したい

などがあった場合、多くのケースにおいて「システムの利用者を検索して一覧化したい」ことが「目的」ではないです。検索することは「手段」に過ぎません。

システムの利用者を検索して何をしたいのかそれが業務上どのような意味を持つのか。といった「目的」まで意識した設計をできると意義のある機能になっていきます。

「データ」と「処理」

業務と、その中のシステム化対象が見えてくると、

  • データ
  • 処理
  • 登場人物(システム)

などがはっきりしてくると思います。

この章では業務から見えてくる「データ」と「処理」について述べていきたいと思います。

外部環境が生み出す「データ」

ここでは入出力に着目していきたいと思います。

出力

  • 画面で検索結果を一覧で表示する
  • 帳票PDFとしてファイル出力する
  • 他システム連携するためのAPIやファイルデータを作成する

など。

システムではデータを出力することが多々あると思いますが、「そのデータを何に使いたいのか」を意識することが大切です。

特に私が意識したいのはシステム外で行われる業務です。

画面で出力した結果を画面で編集して更新。などはシステム上でデータの状態遷移が見えやすいのですが、すべてがシステムを通されるとは限りません。

例えば、PDFをダウンロードしたあとに印刷し、郵送する。などといった場合です。

どのような業務が行われるかを意識できないと

  • 出力しても業務で用いない項目を出力してしまう
  • 目的がわからないまま機能が作成されてしまう
    • その機能の正しい振る舞いがわからなくなってしまいます

などの結果を生み出してしまいます。

入力

  • 画面からデータを登録する
  • 他システム連携でデータが登録される
  • 検索条件として値を入力する

など。

私は「そのデータは何を元に入力されるか」まで意識したいと考えています。

  • 例えば画面でデータを登録するとき
    • 紙を見ながら登録しているとしたらどうでしょう
    • 紙と画面の項目名がバラバラだと非常に使いにくいですよね
  • 検索画面で検索条件を入力するとき
    • 検索する人は、どういった意図で何を元に検索するのでしょうか
      • 例えばユーザーからの電話問い合わせなどを受けて検索する場合、どうあるべきでしょうか
      • その意識があれば使いやすい検索画面が設計できると思います

ルールとしての「処理」

単純なCRUDであっても、何かしらの処理がシステム上では行われます。

その際に、なぜその処理が必要なのか。を意識しないと誤ったデータを作成してしまう危険性があります。

業務としてのデータ加工・制限

  • 勤怠をもととした給与計算
  • 部署に関連したアクセス権限

など。

データの加工や制限は、法令・条例や社内規則などルールに基づき処理が定められていることが多々あります。

その処理がなぜ必要か。を理解するためにはそのルールを定めているのはなにか。を意識することが大切です。

例えば、給与計算をするとき日曜・祝日、ならびに深夜勤務などで給与の計算ルールが変わります。そして、法令・条例に加え会社の規則で変わることもあると思います。

データの加工や制限がどこから出てきたルールであるのか、なぜ必要なのか、そこまで意識することが必要です。

まとめ

設計とは「目的」を「手段」に落とし込む作業であると思います。そして要求分析から要件定義、外部や内部設計、実装といった工程のそれぞれがすべて親子関係であり、「目的」→「手段」の関係性になると思います。

この関係性を意識できれば、各工程での成果物や決めなければならないことが見えてくると思います。

システム設計で悩んだ際に本記事が解決の糸口になれば幸いです。

最後に(卒業ブログ)

冒頭でも記載したとおり、8月末をもちまして株式会社アークシステムを卒業します。

自社サイトに卒業記事を載せていただける感覚は不思議なものですが、ひとつの区切りとして書かせていただきます。

思い出

入社してからすぐにお客様との打ち合わせに参加し、チームリーダーとして働かせていただきました。

お客様から直接要望を聞いて自分で設計し、実装する。そして納品後は保守・運用を自分たちでする。といういわゆる最初から最後までを経験できたことはとても大きな財産になっています。

社会人人生の中で、アークシステムに入社した期間が一番成長できた思っています。

入社当初は技術力の不足や前職との文化の違いから全く結果が出せずにいましたが、辛抱強く私を信用していただき、チャンスを与え続けてもらえました。

卒業はしますが感謝の気持ちでいっぱいです。ありがとうございました。

なお、卒業の理由は「単純に新しい環境でチャレンジしてみたくなった」ことです。

アークシステムの雰囲気

実際に働いていた社員としてアークシステムの雰囲気をお伝えします。(アピール

文化

論理的であることが重視されるため、非常に心地が良い環境です。上下関係の壁があまりなく、論理が通っていると考えた場合は立場を気にせず議論できます。

そして考えが間違っていた場合も、意見を否定されることはあっても、人格否定や能力否定されることが無いため、意見が出しやすい文化であると思います。

人材

すぐ近くに、すごい!と思わせてくれる社員がいます。近くに目標となるエンジニアがいることは職場環境としてはうれしい限りです。技術だけでなくマネジメントの知識やお客様との調整の上手さで感心することも数多くありました。

職場環境

経営陣に対する不信感がまったくありません。むしろ経営陣が一番社員の待遇をさらに良くしようと動いていただいている姿勢が見えます。会社に対する不信感を覚えたことは今までありませんでした。

そして社員の成長のためならバックアップは惜しみません。高い研修費用やツールであっても必要性が説明できればバックアップしてくれます。カンファレンスなども勤務として参加できます。

ワークライフバランス

たとえば育児ファーストの社員が多く、男女問わず長期の育休を取得している社員も一定数おり、そしてそれが当たり前の文化として根付いています。ですので自分で調整していれば有給休暇も自由にとれます。

チャレンジ精神(?)

新しい取り組み(例えば社内LT大会)を始めたい。となったときにブレーキとなる環境・人物・発言がありません。むしろ協力的な環境を提供しようとしてくれます。

新しい取り組みなどを始めるときは不安がつきものですが、安心して取り組め、さらに新しいことへ…という好循環ができます。

アークシステムはエンジニアを募集しております!

少しでも興味を持っていただけたら、お話だけでも大丈夫です!

私は卒業しますが、これからもアークシステムが発展していくことを祈っております。

  • Zabbix Enterprise Appliance
  • 低コスト・短納期で提供するまるごとおまかせZabbix