素人が2020年までの1ヶ月でLINE BOTに挑戦する毎日note. 【Day 12:言語やフレームワークの選定】

こんにちは!
12月1日から2019年残り1ヶ月でスケジュール調整BOTの開発に挑戦している"くろ"です。

BOTの概要:Day 2の記事

BOTの仕様フローチャート:Day 10の記事

今日は言語やフレームワークの選定について書いていきます。

このパートは、エンジニアの師匠から教わった内容が多いです。

まず、今回のBOTを作るに当たって選定が必要なものはこちらになります。

・フロントエンドの言語
・フロントエンドのフレームワーク
・サーバサイドの言語
・サイドサイドのフレームワーク
・データベース
・サーバ
・ホスティング先

・フロントエンドの言語

WEBサービスなので、html / css / Java scriptになります。

ここはおそらく他の選択肢はあまりない部分だと思います。

htmlとcssはWebサイトのデザインを作るような言語ですね。

マークアップ言語と呼ばれるテキストを構造化したり修飾したりする言語の1つで、WEBサイトはこの言語で表されています。

データ中に特定の記法を用いて何らかの情報を埋め込むための言語。テキスト(文字)データ中に特定の記号で囲まれたタグ(tag)と呼ばれる表記を用いて構造や見栄えなどを記述するものがよく知られるが、バイナリデータ中に埋め込むものなど、様々な種類がある。
http://e-words.jp/w/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E.html

・フロントエンドのフレームワーク

今回は教育コストと開発の大きさから考えて、フロントエンドではフレームワークを使わないで行きます。※師匠のおすすめ。

※フレームワークとは?
開発を行うときに頻繁に使われる基礎的な機能をまとめて提供してくれるものです。言語ごとに存在していて、フロントエンドであれば、cssとJavascriptのフレームワークが存在しているようです。

https://www.sejuku.net/blog/102624
https://www.key-p.com/blog/staff/archives/107055

・サーバサイドの言語とフレームワーク

そもそもフロントエンドとサーバサイドですが、ユーザーが見ている画面のデザインをフロントエンド、裏側で色んな処理(プログラムの実行や管理)をしている部分がサーバサイドだと思えば、大丈夫だと思います。

その裏側でプログラムの実行や管理をしている部分を作るのが、サーバサイド言語になります。

今回は、
rubyという言語 + ruby on railsというフレームワーク
Javascriptという言語 + Express.jsというフレームワーク
のどちらかで迷いました。

Javascriptは元々フロントエンドの言語でしたが、node.jsというものができてサーバサイドも書ける言語になっています。Express.jsはそのフレームワークの1つで、よく使われているもののようです。
https://techacademy.jp/magazine/16119

rubyはウェブアプリケーションを作るのによく利用されている言語で、ruby on railsは僕も聞いたことがありましたが、そのフレームワークとセットで呼ばれていることが多そうです。

両者のメリット・デメリットを整理します。

■Javascript + Express.js
・メリット
- Expressは軽量で覚えることが少ないので楽。
- Javasctiptで書けるので言語習得が楽。
・デメリット
- Expressは軽量なので難しいことしようとすると工夫が必要(今回は大丈夫そう)
- Expressコミュニティーがそんなに大きくない

■ruby on rails
・メリット
- railsコミュニティが広く、 日本語ドキュメントが豊富
- railsはフルスタックなのでやりたいことは基本なんでもできる

デメリット
- 今回作るものにしてはフレームワークの学習コストが高い
- 言語としてもrubyを新しく学ぶ必要がある

フロントエンドでjavascriptを学ぶ必要があるので、言語学習コストから考えるとjavascriptが良さそうだが、コミュニティーがそんなに大きくないのが、独学メインでやっていく上では不安。

ということで、色々検索してみたが、Expressでもいろんな記事は出てきそうなのと、公式サイトが日本語もあるので、なんとかなりそうな気がしてきました。

なので、今回はJavascript+Express.jsを利用して作りたいと思います。

・データベース/サーバ/ホスティング先

本来であれば、データベースとサーバ、ホスティング先を選定するようなのですが、今回はホスティング先にherokuというものを利用することになったので、データベースやサーバはそこに包含されるみたいなので、選定不要とのことでした。

ちなみに最初に選ぼうとしていたデータベースはMySQL、サーバはNginxというものでした。

※データベースとは?

データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指すが、紙の住所録などをデータベースと呼ぶ場合もある。 狭義には、データベース管理システム (Database Management System, DBMS) またはそれが扱う対象のことをいう。https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9

データベースとは「一定の形式で整理されたデータの集まり」のことです。
https://www.sejuku.net/blog/8763

※MySQLとは?

リレーショナルデータベース(RDBMS)に属しています。そもそもRDBMSとは、データを、複数の行と列で構成された「表(テーブル)」の形式で取り扱います。この仕組みを備えることで、データベースは大量のデータをより安全に、より高速に取り扱うことができるのです。具体的にはデータの保管、更新、削除そして検索の操作です。さらに、この操作をするための言語をSQLと呼んでいます。MySQLはSQLで動いています。
https://www.kagoya.jp/howto/webhomepage/mysql/

Herokuとは?

Heroku は、アプリケーションの開発から実行、運用までのすべてをクラウドで完結できる PaaS(サービスとしてのプラットフォーム)です。
https://jp.heroku.com/

まとめ

今回作るサービスを図解するとこんな感じです。

※時間のある時に手書きじゃないきれいな図にします。

サーバ、DB構造

※written by 師匠

以上です。

いつも読了ありがとうございます!

スキ、フォロー、シェアをぜひよろしくお願いします!!

モチベになります。




この記事が参加している募集

よろしければサポートお願いします! 頂いたサポートはクリエイター活動に活用させて頂きます。