0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

ある日突然、業務でWebアプリを作ることになりました。
しかし、私にはWebアプリの開発経験がありません。
さらに、あいまいな要件と低コストという厳しい現実もありました。
低コストのレンタルサーバを選んだものの、当時はLaravelなどは使えず…1
また、当時は、AIを用いたコード生成は一般的な手法ではないため、AIにも頼れません。
目の前には「やるしかない」という現実だけがありました。

そこで、まずは「60点」のアプリを目指すことにしました。
この記事では、未経験から25時間の独学を経て、実質 約3か月でWebアプリを要件定義からデプロイまで行った経験をもとに、未経験者が意識すべきポイントをまとめます。
※ 業務で得た知見は一般論にとどめて記載しているため、物足りないかもしれません。

これから初めてWebアプリを作る方や、同じような制約で悩んでいる方の参考になれば幸いです。

前提

本記事は、私がWebアプリ開発に取り組んだ当時(数年前)の立場・スキルレベルを前提として書いています。

  1. 情シス担当であること。
  2. クラサバアプリの開発経験があり、アプリの作り方やテーブル定義の基礎は理解していること。

おそらくは汎用的に使える内容と思われるため、状況に合わせて、工夫が必要になります。

なぜ「60点」なのか?

「60点」は大学の単位がギリギリ取れる点数、つまり「可」に相当します。
未経験でいきなり完璧を目指すことは難しいため、まずは「最低限使える」アプリを作り、徐々に改善していく方針にしました。

「60点」のアプリとは?

  1. 必要最低限の機能を備えていること。
  2. テーブル定義をしっかり行っていること。
  3. セキュアな実装になっていること。

意識したこと

1. 機能を絞る

最も重要かつ難しいポイントです。
要件定義の段階でユーザーの要望を深掘りし、必要最低限の機能を見極めて提案しました。
不明点は積極的に質問し、代替案を提示することで要件を調整しました。
「どうしても難しい要件」については理由を説明し、「まずは半年使ってみて、本当に必要なら追加しましょう」と提案して乗り切りました。

2. セキュリティ

XSSやWeb Shellなどの脆弱性は致命的です。
したがって、Webアプリ開発にあたっては、IPAの「安全なウェブサイトの作り方」や『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』を参考に基本的なセキュリティ対策を実施しました。

3. テーブル定義

データ構造が適切でない場合、後から修正することは非常に困難です。
特に未経験の場合、コードが煩雑になり、保守性が低下し、将来的にシステムを作り直す必要が生じることもあります。
データ構造さえ適切であれば、アプリのロジック部分を修正・再実装するだけで済み、大幅な作り直しが比較的容易になります。
したがって、設計段階で慎重にテーブル構造を検討しました。

要件定義後は、データの流れを意識して外部キー制約を設定し、正規化は第三正規化まで行いました。

さいごに

未経験からWebアプリを実装する場合、以下の3点を意識すればなんとかなります。

  1. 必要最低限のシンプルな機能
  2. セキュアな実装
  3. テーブル定義

この3つを意識することが、未経験での開発成功のカギだと感じました。

余談

Laravelなどが使えるなら積極的に使ったほうが楽です。
最近では、一部のレンタルサーバサービスの公式の記事で動作確認しており、利用しやすくなっているようです。

参考文献

  1. 無理やり導入できるレンタルサーバもあったようですが、確実に動くことを優先しました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?