自己紹介
ご挨拶
はじめまして。
ITエンジニアのrascalです。
名前、大丈夫ですよね?
なんちゃら権的に。。。
あらい○まラ○○ル。。
まぁ何か言われたら変えますか。
と、いうわけで、
このIT界隈の片隅に住みついて8年目になります。
これまで、旧世代的サーバーインフラ技術とネットワーク技術から始まり、
バックエンド、フロントエンドを経て、アプリ製作やIoTまで裾野を広げて参りました。
まずは初めに自己紹介から始めていこうと思います。
経歴
2012年 ~ IT界隈に出没
2014年 ~ とある大会に優勝
2015年 ~ 国際大会に出場
2016年 ~ SE的な職に就く
~ 現在 アプリづくりに興味を持つ
きっかけ
なぜブログを始めたか
今まで趣味の範囲(アプリづくり等)については #ソロプレイヤー だったこともあり、情報を共有する必要がなく、また勉強内容も頭の中に納まっていたこともあり、書き物をする理由がありませんでした。
最近になって数少ない仲間ができ、微量ながら、僕の知識の共有をしながら、
せっかくなら今まで勉強してきたことが、ほかの誰かの役に少しでもなれたらと思い技術ブログとして始めることにしました。
あと近頃、年齢を感じてきており、覚えきれなくなってきました。
ちなみに2019年(令和元年)現在、26歳です。
自分のノート代わりにもするつもりです。
題材は?
おかげさまで縁があり、いろんな分野のエンジニア知識を学ばせて頂いたので、広い範囲を取り扱っていこうと思います。
いつか #フルスタックエンジニア になれると嬉しいです。
まずは、 #Webアプリ から取り上げていきます。
チーム内でも需要のあるところから書き始めることにしました。
技術的なところ
Webアプリ
ウェブアプリケーション(Web application)は、インターネット(もしくはイントラネット)などのネットワークを介して使用するアプリケーションソフトウェアである。多くの場合、これらのアプリケーションは、Webブラウザ上で動作するプログラミング言語(たとえばJavaScript)によるプログラムとWebサーバ側のプログラムが協調することによって動作し、ユーザはそれをWebブラウザ上で使用する。
ウェブアプリケーションの一例としては、ウィキペディアなどで使われているウィキやブログ、電子掲示板、銀行のインターネットバンキング、証券会社のオンライントレード、電子商店街などネット販売のショッピングカートなどを挙げることができる。
ウェブアプリケーションに対して、ローカルのデスクトップ環境上で動作するアプリケーションは、デスクトップアプリケーションやスタンドアロンアプリケーションと呼ばれる。
昨今、スマホの普及に伴い、たくさんのアプリがリリースされている中、
iOS、Android ...etc 何から始めようか悩んでおりましたが、
「Webアプリなら両方カバーできそうだし、レスポンシブデザインを目指せば、
PCとモバイルの併用も容易かな?」
なんて安直なことを考えて決めました。。。
Node.js
Node.js は、イベント化された入出力を扱うUnix系プラットフォーム上のサーバーサイドJavaScript環境である。Webサーバなどのスケーラブルなネットワークプログラムの記述を意図している[4]。ライアン・ダールによって2009年に作成され、ダールを雇用しているJoyentの支援により成長している[5] [6]。
V8 JavaScriptエンジンで動作するが、ChakraCoreバージョンやMozillaによるSpiderMonkey移植のプロジェクトも存在する。
Node.jsはPythonのTwisted、PerlのPerl Object Environment、C言語のlibevent、RubyのEventMachineと同様の目的を持つ。 ほとんどのJavaScriptとは異なり、ウェブブラウザの中で実行されるのではなく、むしろサーバサイドJavaScriptの一種である。 Node.jsはいくつかのCommonJS仕様を実装している[7]。 Node.jsは対話的なテスト用にREPL (Read-eval-print loop) 環境を含んでいる。
Node.jsを用いた構成としてはMEAN等が提唱されている。
次に考えたのは、 #どんな環境でアプリを提供するか でした。
PHP、Ruby、Java 。。。
「どうせなら、勢いがあって、これから期待できそうなやつにしよう!」
と検討した結果、 #Node.js が来てるかも、となりました。
クライアントサイドもサーバーサイドも #javascript で書けるし学習コストも低いと感じ、僕にはちょうど良かったです。
環境は、 #Node.js で決定です。
Webアプリケーションフレームワーク
Web アプリケーションフレームワーク(ウェブアプリケーションフレームワーク、英: Web Application Framework)は、動的な ウェブサイト、Webアプリケーション、Webサービスの開発をサポートするために設計されたアプリケーションフレームワークである。 フレームワークの目的は、Web開発で用いられる共通した作業に伴う労力を軽減することである。たとえば、多数のフレームワークがデータベースへのアクセスのためのライブラリや、テンプレートエンジン(→Webテンプレート)、セッション管理を提供し、コードの再利用を促進させるものもある。
このご時世、 #フレームワーク の利用は必須と言っても過言ではないですよね。
というわけで、Node.js用のフレームワークの選定をします。
主要なフレームワーク
- Express
- Koa
- Hapi
- Sails
- Meteor
ざっと調べただけども、いろいろあって迷いますね。。。
どれも人気が高く甲乙つけがたく、どれが一番、みたいなものはないのかもしれません。
用途や個人の嗜好で、
- 作りたいものにマッチするか
- 自分が使いやすいか、理解しやすいか
などなど、総合的に判断するしかないと思います。
ほんとは全部試して決めたいところではありますが、
昔、 #Ruby on Rails に手を出したこともあり、
#Sails.js を使うことにします。
Sails.js
Sails.js(または帆)[1]でモデル-ビュー-コントローラ(MVC)のWebアプリケーションフレームワークの上に開発されたのNode.js環境、[2] :1、19としてリリース自由とオープンソースソフトウェアの下でMITライセンス。[3] [4]エンタープライズ向けのカスタムNode.jsカスタムWebアプリケーションおよびAPIを簡単に構築できるように設計されています。[3] [5]のように、他のフレームワークのMVCアーキテクチャをエミュレートRuby on Railsの、[2] :19 他のフレームワークや言語を切り替えるときの認知的な負担を軽減するために、同様のパターンと親しみやすさを提供します。
(Google翻訳)
Railsライクで個人的に扱いやすい印象を受けます。
実際使ってみて、感じたことは、
- Modelを作成することで、自動でREST APIを実装できる
- Websocketがデフォルトで使える
- npmモジュールで各種DBに対応している
なにより、起動コマンドが、
#sails lift
"帆を揚げる" って かっこいい。。。
まとめ
sails.jsの使い方等をメインにアップしていきます。