こんにちは!株式会社TheNewGate(ニューゲート)のTDP(Wantedly運用チーム)所属、小森と柳生です!
今回は「アプリ開発前に理解しておくとITデビュー後に役立つ情報」について執筆していこうと思います。
「コードを書く前に必要とされる環境構築とは?」
「環境構築って意外と躓くんだよね・・・」
「エンジニアの仕事って開発だけなの?」
などなど、気になったことはないでしょうか?そんなお悩みを抱えたそこのあなた!
この記事を読めば、なんと全部解決しちゃいます!
最後にWeb開発における言語紹介もありますので、お楽しみに!
アプリ開発前に必須の作業工程とは?
実は1つのシステムを開発する際、作業者はただソースコードを書いて終了ではありません。
システム開発は、大きく3段階に分かれています。
上記のように一口に「開発」と言っても工程が分かれており、初めは左の「要件定義」からスタートします。
今回は、開発に必要不可欠な「要件定義」について説明させていただきます!
「要件定義」とは、簡潔にいうと「開発の目的を明らかにするもの」です。
クライアントから求められる要件を開発視点でまとめ、クライアントと開発チームで共通認識を持つために定義するものとなります。
逆に要件定義がなければ、クライアントの要望に沿った開発ができなかったり、開発チーム内と認識のズレによって開発自体が遅延してしまう可能性もあります。
そのため要件定義は「プロジェクトの成功」に繋げるための、かなり重要な工程とも言えます。
【要件定義の一般的な進め方】
①クライアントへ要件のヒアリング
②要求の細分化・必要な機能の洗い出し
③要件定義書の作成
少し詳しく解説すると・・・
①クライアントへ要件のヒアリング
この過程では「クライアントの潜在的なニーズを引き出すこと」が目的です。
ここでは特に「コミュニケーションスキル」が鍵となります。
ヒアリングをしていると、クライアントの要望通りに進めることは難しいケースがあります。なのでコミュニケーションスキルだけでなく、「開発者視点で実現可能か否かを判断する力」も必要になります。
しっかりとこの過程で双方の擦り合わせをすることにより、効率よく開発を進めることができます。
②要求の細分化・必要な機能の洗い出し
クライアントの要望をヒアリングした後は、その要望を細分化し、更に課題を掘り下げて検討していきます。また「どこをシステム化するのか」という機能面も同時に考えていきます。
ここで重要なのが「機能要件(実際にシステムに実装すべき機能のこと)」だけでなく「非機能要件(セキュリティなどの機能以外の全ての要件)」にも注力することです。
クライアントの満足度UPに繋げるために「非機能要件」としてセキュリティや性能も含めて検討すると良いでしょう。
この過程では、開発後のサービス拡大にも影響があるので慎重に検討する必要があります。
③要件定義書の作成
最後に①②で実施したことを「要件定義書」としてまとめて完成です。
ここでポイントになるのが、クライアントにも説明するので「ITにそれほど知見がない方でもわかるように作成すること」です。
内容は必要に応じて書き方も変わりますので、一概には言えないですが「システム概要」や「目的」「取り入れる機能」、開発側の「業務フロー」「必須条件」などをメインにまとめます。
要件定義書を作成することにより、クライアントを含め開発に関わる全ての人と目的や認識を共有することが可能になります。
簡単に要件定義についてまとめましたが、なんとなく重要性を理解していただけましたでしょうか?
実際にプロジェクトに参画すると、要件定義の重要さや作成の難易度を感じる場面があるかと思いますが、学習段階で要件定義に少しでも触れておくことで学習の理解もより深まると思います!
環境構築の方法
要件定義がまとまったら、要件定義書を元にいざ設計!!
・・・というわけにも行かないのが、Webアプリ・サービスの開発です。
また、要件定義書に記述のある「どのようなアプリ・サービスを開発していくか」などの内容によっては、構成するプログラミング言語の選定が必要です。このように、開発にとりかかる事前準備がさらに必要なのです。
ここでは、開発をしていくための土台である「環境構築」のフェーズをわかりやすく説明していきます!(言語選定については、開発するアプリの内容によって多岐にわたってしまうので割愛させていただきます。)
まず、環境構築とは・・・?と思った方も多いかもしれません。
すごく簡潔に言うと「アプリ開発の実行環境を作ること」を指します。
ただ、環境構築をする方法は様々ありますので今回はTheNewGateのIT教育プラットフォーム『CyTech』のカリキュラムにあるLaravel(ララベル)をベースに解説をしていきます。
そもそも、Webアプリ・サービスを公開するために必要なものとして「インフラ」と呼ばれる以下3点が必要になります。
- ハードウェア/ネットワーク:サーバー機器等
- ミドルウェア :PHP、Apache、MySQL、Laravel等
- OS :Mac、Windows、Linux等
また、環境構築をする方法として次の2種類の方法が挙げられます。
- ローカルPCに構築( 初心者向け )
- 仮想環境で構築する( 開発現場向け )
TheNewGateの『CyTech』では、IT初学者を対象にカリキュラムを設定しており「ローカルPCに構築」する方法を採用しております。
今回紹介する、Laravelもローカル環境での開発が可能なツールとなっております。
しかし、Laravelだけでアプリ・サービスの開発を進めようとしても、まだ準備が足りません。
そこで登場するものが『MAMP(マンプ)』と『Composer(コンポーザー)』と呼ばれるツールです。
「MAMP」は、Laravelを動かすために必要なツールです。主にPHPとMySQL、Apache(アパッチ)の環境を簡単に構築してくれます。
「Composer」はPHPのパッケージ管理ツールで、Laravelをインストールする際に必須です。
そこでその「パッケージ」って何?と思った方がほとんどかと思います。
パッケージとはPHPのライブラリのことを指しており、いわゆる便利パーツが揃ったスターターキットのような役割をしています。
※ライブラリとは・・・汎用性が高く、プログラミングにおいて使う頻度の高いパーツをピックアップして、再利用しやすいようにまとめたもの。
開発では、ライブラリを使用するために他のライブラリが更に必要という、自分で探してインストールしなくてはいけないシーンがあります。
そこでComposerを使うと一括でインストールが完了!
つまり自分で探さなくて済む、まさに使い勝手のいいツールなのです。
ちなみに、MAMPとComposerがPCにインストールされていないとLaravelもインストールはできませんので、先にインストールを進めてください。
それぞれのインストールが終了したら、インストールされたファイルの初期設定を進めることで、Laravelにて開発ができる環境になります。
※MacとWindowsで初期設定の方法が違うので、解説は割愛させていただきますが、お使いのOSに合わせた設定方法を調べることを推奨します。
Webアプリ開発に必要な能力とその仕組み
次にWebアプリ・サービスを開発するにあたって、必須と言っても過言ではない能力や知識についても少し触れていきます。
アプリ・サービスをただ開発するだけであれば、前述した「手順」や「プログラミングコードを書くスキル」があればもちろん可能ではあります。
ですが、実際の開発現場ではそのようなスキルだけではなく、更に求められる能力があります。
それは「コミュニケーションスキル」です。
エンジニア職と言えば、「パソコンに向かってひたすら無言で開発を進めていくイメージ」がありませんか?
ただ実際の開発現場では、チーム内でコミュニケーションを取る時間が想像以上に多く、プロジェクトメンバー全員が足並みを揃えるために必須としている能力になるのです。
前述した要件定義にも関わってきますが、同じ開発のプロジェクトメンバー間やクライアントとの認識の相違が発生してしまうと、開発計画やリリースの後ろ倒しが発生してしまう可能性があります。
そのため、開発をスムーズに進める為にも「コミュニケーション能力」が必要になります。
調べれば調べるほど、奥が深い職種にはなりますが、普段使っているアプリケーションやサービスにもっと目を向けてみてください!それらがどのように開発されているのかを調べることで、エンジニアの理解が深まるきっかけになるかもしれないですね。
【ミニコーナー】
実はこんな言語も!IT言語Dictionary
「PHP(ピーエイチピー)」
Webページに動きをつけるために開発された、Web開発に特化したオープンソースのプログラミング言語です。
PHPの構文は、シンプルかつ初学者も理解しやすい人気の言語です。
またPHPは、フレームワークが豊富なので開発工数を短縮できるところがメリットとして挙げられます。
逆に自由度の高い言語になるので、記述方法にバラつきが出てしまう可能性もあります。なのでしっかりと規定を定めて書くことがポイントです。
PHPは「X(旧Twitter)」や「Facebook」などSNSサイトや掲示板、予約システムの制作等々多くの場面で使用されています。
「Python(パイソン)」
近年注目を浴びており、人気上昇中の言語の1つです。
用途は幅広く、AI(人工知能)の機械学習やビッグデータの収集と解析、仮想通貨のプロックチェーン等があります。
特に、複雑で大規模なデータ演算処理が必要なAIの開発に採用されていますが、多様性も幅広くあります。
身近なアプリケーションを挙げると、YouTubeやInstagramの開発等です。
その他に、攫われた姫様を助ける某「横スクロールアクションゲーム」もPythonで開発されたなど、ゲームの開発言語としても採用されています。
いかがだったでしょうか?
エンジニア職は「いざ開発をしよう!」と思い立っても意外と事前準備が必要だったり、技術面以外のスキルが必要な職種ということを理解していただけましたでしょうか。
先を見据えた事前準備をすることにより、開発がスムーズに進むきっかけにもなります。
エンジニア職が気になった方は、必要な事前準備をピックアップしてみたり、技術以外のスキルは何が必要なのかを詳しく調べてみても良いかもしれません。
この記事でエンジニアへの興味や、更に一歩踏み込んだ情報をキャッチアップをするきっかけになっていただければ嬉しい限りです。
今後も多様な角度からのTips記事を投稿予定ですので、お楽しみに!!
▶︎▷TheNewGate Instagramも要チェック!会社や社員の最新情報をどこよりも早くお届けします!! 株式会社TheNewGate 公式Instagramはこちら
株式会社TheNewGate's job postings