勉強してると、次から次へと新しい言葉が出てきて自分が何がわかって何がわからないかがわからなくなってきてしまう時があります。
はじめに薄く広く知識を持っておくと、勉強が捗ることがあります。
ここでは、サーバサイドJavaScriptを使ってWebサービスを作るときに出てくるツール群を薄く広く取り上げます。
Webのベースとなる言語
Webとは、様々なファイルをサーバからブラウザにダウンロードしてユーザに画面を提供する仕組みです。ダウンロードされるファイルはここで上げているものと、後は画像くらいです。これを抑えておけば大丈夫です。
JavaScript
nodeでアプリケーションを作るために主に利用するプログラミング言語です。とても美しく(主観)エレガント(主観)であり、シンプルです。
HTML
タグ(のような)形式で画面を作ることができます。HTML5というと、HTMLのバージョン5のことです。HTML5はHTMLの次世代企画で、サーバー間通信ができるWebSocketや、お絵書きできるCanvas等、いろんな機能が追加されています。
CSS
HTMLの装飾ができます。色を替えたり、大きさを替えたり、場所を替えたりできます。ちょっと書くのがメンドクサイので、SCSSのようなCSSを生成するための仕組みもあります。
実行環境
node.js
JavaScriptを動かすための実行環境です。ChromeというブラウザのJavaScriptを実行する仕組みを利用して作られています。
nvm
nodeにも、たくさんのバージョンが有ります。同じPCで複数のnodeを使いたいときに、nvmを利用すると、バージョンの切り替えが簡単です。
npm
nodeのパッケージマネージャです。nodeには、その上で動く色々なライブラリ、ツールが有りますが、それをコマンド一発でインストールすることができます。依存性(ツールが別のツールを利用すること)も解決して、必要なソフトを全部入れてくれるので楽ちんです。
ビルドツール
アプリケーションを自分のパソコンで作った後は、たいていは他の場所、別のパソコンや、サーバ上で動かしたくなります。その際のセットアップ(準備や設定)をするためのツールです。ビルドツールを利用すると、準備や設定をするのを手伝ってくれます。
grunt
わりと人気のツールです。
gulp
gruntに対抗すべく出てきたツールで、これからもっと人気になりそう(主観)です。
フレームワーク
アプリを作る上では、「決まったやり方」で作っておくと、他の人と共作するときにもやり方を伝える必要が少なくなりますし、決まりきったやり方であれば他の人が作った物を流用できるので便利です。そのための決まったやり方と、それをアプリケーションにしたものがフレームワークです。
express
Webサイトを作るためのフレームワークです。
sequelize
データベースにアクセスするためのフレームワークです。
AngularJS
画面を作るために使えるフレームワークです。Google謹製
React
画面を作るために使えるフレームワークです。Facebook謹製。
JQuery
ブラウザ間の挙動の違いをなくしてくれたり、便利機能を提供してくれます。JQueryは正確にはフレームワークではありません(やり方は提供しない)が、ここでご紹介。
テストフレームワーク
テストを自動化して、変更が入るたびにテストが行われるようにするのが最近のアプリ開発の主流です。自動化に使えるツールもたくさん出ています。
Jasmine
自動テストを書くためのフレームワークです。老舗。
Mocha
自動テストを書くためのフレームワークです。人気。
Selenium
ブラウザを自動操作するためのツールです。入力やボタン操作を勝手にやってくれるのはオモシロイ。お試しの価値有りです。(主観)FirefoxのSeleniumプラグインを使うとすぐに確認できるのでやってみてください。
自動化ツール
何かイベントがあった時に処理を自動で実行してくれるアプリケーションです。イベントとは、ソースの更新だったり、ある時間が来た時です。
Jenkins
オープンソースの自動化ツールです。人気です。
Travis
自動化ツールをサービスとして提供しています。
Alt.js
nodeはJavaScriptで動きますが、JavaScriptとは別の言語を使いたいちょっとかわった(主観)人もいます。その人達のために、JavaScriptに変換できる、JavaScriptではない、JavaScriptに似た言語があります。そんな言語のことをAlt.jsといいます。
TypeScript
Microsoftが作ったAlt.js、ちょっとお固く、また、ちょっと未来を先どってJavaScriptを書けます。
CoffeeScript
手抜きしてJavaScriptが書けます。
動かす環境、いわゆるクラウド。
自分のパソコンや、買ってきたサーバ上でもnodeは動きますが、最近の主流はクラウド。リモートにあるサーバを調達してその上で動かすことができます。
Amazon Web Services(AWS)
Amazonが提供しているクラウドです。有名で機能が豊富です。最初に触るなら、こちらが良いです。
Heroku
簡単にサイトを公開できます。好き。(主観)
Google Compute Engine
Googleのクラウドです。好きだった。(主観)
Microsoft Azure
Microsoftのクラウドです。
Webサーバ
nodeはそれ自体でWebサーバにもなりますが、複数のnodeアプリを立ち上げたり、アクセスするURLによって別のアプリに切り替えたり、通信を暗号化するなどは、Webサーバを使ったほうが機能が豊富です。
Apache
皆知ってます。
nginx
最近人気のWebサーバです。設定が簡単で、早いです。
データベース
データを保存しておくときに、簡単にデータを追加したり、変更したり、使ったり、削除するために利用するものです。
RDB
皆知ってます。SQLというデータ取り出し方法が使えます。RDB(リレーショナルデータベース)は規格のようなもので、製品にはPostgreSQL,MariaDB,Oracle,DB2,sqlite,等々、た~くさんの物があります。
NoSQL
RDBは正確にデータを扱うことが得意ですが、(すごく)大量のデータを扱うことは時に苦手です。そこで出てきたのが、NoSQLDBです。RDBではないデータベースの総称で、MongoDBやら、Hadoopやら、これもたくさーんの物があります。
エディタ(IDE)
プログラミングをするときには、それ専用の書くツールを使うと楽なことが多いです。もちろん、ただのメモ帳でも作れますが、見づらかったり、間違って書いた場所が探せなかったりします。
Eclipse
大好き(主観)
Vim
無言(主観。下手に口を出すと戦争に巻き込まれるため。)
Emacs
無言(主観。下手に口を出すと戦争に巻き込まれるため。)
バージョン管理
アプリを作っている時に、あるバージョンのソースコードやドキュメントの一式をとっておきたいことがあります。そんな時に利用するのがバージョン管理ツールです。チームでソースを共有したいときにも使えます。
Git
Linuxを作った人が作ったバージョン管理システムです。最近一番人気ではないでしょうか。Gitを使ってサービス提供しているGithubというサービスがあります。無料で使えるので使ってみるといいです。
Subversion
Gitの前には主流でした。
チケット管理
アプリを作っている時に作業を記録したり、人に作業をお願いするときに作業を「チケット」として管理するツールです。
Redmine
オープンソースのチケット管理システムです。
Track
オープンソースのチケット管理システムです。昔からあるプロジェクトでは使われていることが多いでしょう。
Jira
最近のオープンソースで大人気です。基本有料です。