18
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ウェブサービス構築時に導入している、開発が3倍速くなる仕組み

Last updated at Posted at 2016-12-29

はじめに

新しいサービスを作成するときに、毎回使いまわしている仕組みをまとめる。

以前記事にした、一からマイクロサービスを作ったときから活用しはじめ、とてつもなく便利だったため、外部から組み込めるフレームワークにして使いまわしている。

特にオススメな状況

  • 仕様が明確に定まっておらず、細かな変更が行われそうだ
  • ディレクターがSQLなどに詳しくない
  • 人に任せられるものは任せたい

仕組みの全体像

Googleスプレッドシートのフォーマットに沿って項目を入力することで、
エンジニア以外の人が必要とする画面や、機能が勝手にできていく仕組み。

table_automator_general.png

この仕組みにより、非エンジニア以外の人ができることが増え、結果自分への質問や依頼が減る。
また、一般的な管理画面もひととおり網羅されるので、サービス特有の機能に手と頭を使えるようになる。

サンプルのスプレッドシート

サンプルとなるスプレッドシートを紹介。
table_data_オリジナル.png

分かりづらいので、各項目に説明を加えた。
それぞれエンジニア用/ディレクター用/エンドユーザ用と分かれているのが分かってもらえると思う。
table_data_全体像.png

ちなみにバリデーションについては、任意で追加できるようになっているが、さしあたり必要な以下の項目のみがデフォルトで記載されている。

  • 入力必須項目
  • 文字数
  • 文字フォーマット(数値のみ, 英数字のみ, 「かな」のみ etc)

サンプルの管理画面

スプレッドシートの情報をもとに、デフォルトでテーブル一覧と説明と実データへのリンクが表示される。ちなみにエンジニア用と記載されているのは、バリデーション設定や型が確認できるようになっている。

<自動で作成される管理画面_テーブル一覧ページ>
管理画面_TOPサンプル.png

実データ画面では、スプレッドシートで記載した検索フォームが用意される。

<自動で作成される管理画面_実データ一覧ページ>
管理ツール_サンプル.png

フロー図

裏側としては、一度EXCELデータとしてダウンロードしたあとに、各ファイルに変換している。
EXCELデータのダウンロード部分と、変換処理部分は独立させている。
なぜEXCELデータにしているかというと、オフラインの状態でも作業ができるようにするためだ。実際、出張中の新幹線内で利用することがあったので、その判断は正しかったと思う。

では、なぜGoogleスプレッドシートにしたかというと、自分がEXCELを立ち上げるのが億劫なのが1つと、社内にEXCELを持っていない人もいるためである。

table_automator_flow.png

最後に

この仕組みの導入により、気軽に新しいサービスをちょっと作ってあとは管理者に任せるということができるようになった。またちょっとしたDB構造の変更であれば、ほとんどスプレッドシートの更新だけやっておけば、反映させられるので精神衛生上もいい。

本当であればコードを共有したいのだが、共有するほど構造が綺麗に整理されていないのと、あまり汎用的な作りになっていないので、今後まわりの人に使ってもらう場合があれば綺麗に書き直して共有していきたい。

18
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?