にしログ

大西健太の雑記ブログ。

<プログラミング>アプリ開発の全体像が分かる良記事を見つけました!

f:id:reo0040:20190507234059j:plain


今日も、生活していておもしろいな、有益だなと思ったことを書いていきます。

 

何かのアプリを作りたいなと思ったときに、Googleで「アプリ開発 方法」「Webサービス開発 方法」とかで検索しても、プログラミング学習方法は出てくるんですが、本当に0からのアプリ開発方法を見つけることができませんでした。

 

プログラミングちゃうねん!そこもそうなんだけど、Webサービス開発の全体像が知りたいねん!ってずっと思っていました。

 

しかし、最近になって「良いな!これこそ本当に0からアプリ開発をする方法が載ってる記事だ!」と感じた記事を見つけたので、その記事の詳細を書いていこうと思います。

 

その記事のおかげで、Webサービス開発の全体像を把握することができました。

 

全体の流れは、企画➡実装➡プロモーション➡運用でした。

 

具体例も書いてあるので、非常に分かりやすかったです。

 

詳細はこんな感じです。↓

 企画

  • 企画に必要な7つの事(例:iPod)
    http://blog.yusuke.be/entry/2012/05/07/112346
    • 哲学
      • 個々人が持っているゆるがない気持ち。
        • 例)音楽をもっと楽しみたい
    • アイデア
      • 哲学を実現するための個別具体的なアイデア。1サービスに複数のアイデアがあって良い。どんどん出して、後で精査すると良い。
        • 例)所有している曲を持ち歩きたい
        • 例)ディスプレイ、コントローラだけのミニマムなデバイスが欲しい
        • 例)専用ソフトウェア(iTunes)で管理し曲を一括管理、デバイス同期が出来る。
        • 例)コントローラは曲選択、プレイヤー操作だけ出来れば良い。
        • 例)アルバム別、アーティスト別、ジャンル別で再生したい
        • 例)再生中はアルバムジャケットをかっこよく表示したい
        • 例)販売サイト(iTunesMusicStore)で曲を買ったらそのままデバイス同期されるようにしたい
    • テーマ
      • 哲学をより具体的にした勝負する領域のこと。
        • 例)携帯音楽プレーヤー
    • コンセプト
      • 何を作るかの具体的なイメージを一言で表したもの
        • 例)専用の音楽ソフトを経由して所有する曲全てを持ち運べる携帯音楽プレーヤー
    • 名前
      • 仮でも良いからとりあえず名前をつけよう
        • 例)iPod
    • デザイン
      • 具体的な絵を元に具現化する。見た目、使いやすさ、必要な機能を詰める。
        • 例)紙にUI画面図を作る。 
        • 例)粘土でモックアップを作る。
        • Webサービス「POP」が良さそう
    • 内部設計
      • Webアプリは結局「リソースへのCRUD操作」。後はそれをどう見せるか。
      • リソース設計
        • ER図
        • クラス図
      • URI設計
      • API設計
  • ※網羅できるように、上記必須7項目を抑えた入力フォームを作成してチェックする

 実装

  1. 実装
  2. アプリケーション全体
    • 1から全部手製で書くと大変なので、Webアプリ作成用の便利なライブラリ集である「WebApplicationフレームワーク(WAF)」を使う.
    • WAF以外にも、デザイン、O/Rマッパー等、フレームワークを使う機会は多いが、至れり尽くせりの中身がよく分からない高機能ライブラリより、出来るだけシンプルなものを選ぶ。(内部構造が理解しやすいため。よく見て選定する) http://qiita.com/shukotang/items/055058b33b553b48c164
      • Ruby
        • Sinatra,Ruby on Rails,Padrino
      • Python
        • Django
      • PHP
        • CakePHP,FuelPHP,Symphony,ZendFramework,Laravel,CodeIgniter etc...
      • Java
        • Play,Spring etc...
      • Javascript
        • jQuery,Prototype.js,AnglarJS,Backbone.js,React.js etc...
      • Node.js
        • Meteor,Express,MEAN etc...
    • MVCを意識する
    • Model作成
      • DBとの接続・操作はSQL直書きでも出来るが、様々なDBの差異を吸収して共通インターフェースである「O/Rマッパー」を使うと楽。
      • 直接DB触らないにしても、トランザクション(分離レベル)、インデックス辺りは把握しておいた方が良い。
      • 一時データをKVS、永続データをRDBにj振り分ける。RDBはデータが残るが遅い、KVSはデータが残らないが早い。
    • View作成
      • validationや削除確認メッセージなどクライアント側で出来る事は出来るだけクライアントに任せる。サーバー側に負荷をかけない。
      • ブラウザとやりとりするWebサーバが必要
      • Webサーバとアプリ間の窓口は、WSGIで一本化してやる。
      • WSGI(Web Server Gateway Interface)
        • Webサーバの種類によってアプリ毎に書き分けする必要が無いように、共通のインターフェースを提供するライブラリ。 DB接続で言うODBCみたいなイメージ。 言語によって呼び方が違うけど役割としてはどれも似ている。http://yone098.hatenablog.com/entry/20100115/1263525542Python
        • Python
          • WSGI
        • Ruby
          • Rack
        • Perl
          • PSGI
        • Java
          • OSGI
      • Webサーバは例えば以下選択肢があり
        • apache
        • nginx
      • この辺りのWebサーバ、アプリサーバ、WSGIの理解は以下がわかりやすい。
        http://qiita.com/jnchito/items/3884f9a2ccc057f8f3a3
    • デザイン
    • フォント
      • FontAwesome

 プロモーション

  • 最初の宣伝
  • プレスリリース
  • 自分のブログで紹介
  • Twitterやはてなで拡散

 運用

 

文系でプログラミング未経験だけどWebサービス作ってみたい!ていう人にとってはめちゃくちゃ良い記事だと思います。

 

この記事の内容がもっと広がると良いなと思ってます。

 

元記事はこちらからどうぞ。