Webアプリケーションの影の立役者は、バックエンド処理です。
フロントエンドで良いデザインで良いUIを構築できても、バックエンドがおざなりになっていたら、使いずらいアプリケーションというレッテルを貼られてしまいます。
サーバー側でエラーが多いアプリや、データベースからのレスポンスが遅いアプリって、使う人は必ずストレスを感じますからね。
フロントエンドにも様々なフレームワークがありますが、基本的にJavascriptベースの物なので、プログラム言語はJavascript(最近では派生型のTypeScript)を学習していればOKです。
バックエンドに関しては、様々なプログラム言語があり、その他にも便利なフレームワークなども存在することから、このプログラム言語を押さえていればOKという状態では無いようです。
では一体、バックエンドは、どのプログラミング言語を学習するのが一番良いんでしょうか?
プログラミング初心者で、この疑問に悩んで先に進めなくなる人も少なく無いと思うので、Webアプリケーション開発では、必須のバックエンド技術、どれがいいのか考えていきたいと思います。
こんなにたくさんあるバックエンドプログラミング言語
とにかく数が多くそれぞれ特性が違うプログラミング言語、あなたならどれを選ぶ?
Python
AI関連のライブラリがとにかく豊富で人気の言語。
最近ではMacOSなどにはデフォルトでインストールされている。
2系と3系という、所作の違うバージョンの境目があり、いまだに2系も混在して少し混沌としているが、最近では組み込み系などにも使われているぐらい範囲が広くなっている。
Ruby
老舗の玄人エンジニアが好んで使う言語。
最近では、処理速度が遅いとされて、敬遠する現場も増えてきているらしい。
インタプリタとしては、初期バージョンからプログラミングの構造体がしっかりと作れる優秀なプログラム言語としてもてはやされてきた。
PHP
Webと言えばというポジショニングの言語だが、どうしても素人感が出てしまう言語なため、現場でディスられる傾向が高い。
しかし、ほとんどのWebサイトで使われていると言っても過言では無い言語。
お手軽さと、許容範囲の広さも考えると、覚えておいて損は無い。
Perl
Web黎明期を支えたCGI言語の代名詞言語。
サーバーのコマンドラインでも関数などをそのまま使えるなど、利用範囲は広いが、オワコン感が強いプログラム言語でもある。
C,C#,C++
C言語は、プログラミングの基礎という事で、初心者学習に進めるスクールなどもある。
C#やC++は、C言語からの派生系で、それぞれ構築環境を意識した作りになっているが、
最近では、UnityなどのフレームワークでC#が使われていることから、C#は人気が急上昇しているようだ。
また、プログラム構造体で、C言語では行き届かないオブジェクト指向を実現できるC++も、エンジニアには人気の言語でもある。
Go言語
Googleが作ったバックエンド用のプログラミング言語で、比較的今時のベンチャーIT企業が好んで使っている。
コンパイル言語の為、処理速度が速いことと、マルチスレッドの平行処理が問題なく行えるため、スペックの高いオンプレミスサーバーなどで使うことで、成果が期待できる言語。
Node.js
フロントでもサーバーでも、Javascriptでコーディングできるということで、学習コストが抑えられる上、
ポーリングや、各種便利ライブラリもOSSで膨大に開発されているため、覚えていくことで効率アップできること間違いなしのプログラム言語。
Java
とにかくビジネス系に強い、安定のコンパイル言語です。
世の中がまだFlashを使っていた時代や、スマートフォンがまだなかった時代には、servlet(サーブレット)というサーバー専用アプリケーションを構築しておいて、
ローカル側で、Javaモジュールをインストールしておくことで、マルチプラットフォームを実現できる理由で人気を博していたが、
Webアプリの登場で、あまり優位性を感じられなくなり、最近では業務用アプリ開発には強いがWebで使われているケースはほとんど見なくなった。
Scala
関数型プログラミング言語ということで、玄人ウケする言語の印象。
Javaとの連携が可能で、Javaのライブラリがほぼ使えるというメリットから、やはりビジネス現場での利用が多い。
その他多数のライブラリやフレームワーク
上記のプログラム言語それぞれに便利なフレームワークやライブラリが存在します。
データベース直結するGraphQLなどは、プログラミング言語ではなく、フロントエンドから直接データベースからデータ取得ができてしうまうので、特殊ですが、多くの場合は上記のどれかのプログラム言語のライブラリとして使われます。
フレームワークは無限に存在するので、ここでは紹介しませんが、独自で便利に使えるフレームワークを自作するという事も視野に入れてもいいかもしれませんね。
※そもそも、何かしらのプログラミングは行うはずなので、ベースを改良することに抵抗がない人にとっては、自作した方がいい場合が多いでしょう。
バックエンド言語の選定方法
バックエンドプログラミング言語に求められるのは、速度と安定性です。
古いプログラム言語だろうが、新しいプログラム言語だろうが、安定性は必須です。
セキュリティも安定性に繋がります。
人気のプログラム言語は、脆弱性報告などの頻度も高いので、対応アップデートの頻度も短期間です。
最新セキュリティのアップデートを適用したら、更新バグによる不具合でサービスが停止したという事例はこれまで何度も見た事があるので、もしかしたらマイナー言語の方が安定感はあるかもしれません。
処理速度は、圧倒的にインタプリタ言語よりも、コンパイル言語の方が早いです。
でも、更新手順やトラブル対応時の迅速性は、インタプリタが圧倒的に早くて楽です。
個人的には、エコシステムをコンパイル言語で単一処理構築して、CGI言語でそれらを実行して結果を返すというバックエンドの仕組みを作り込めば、処理速度も安定運用もできるのですが、
複数のプログラム言語が混在する事になるので、学習コストは爆上がりしてしまいます。
ちなみに、どのプログラム言語がいいか論争は、開発現場だけじゃなく、ネット上でも至る所で議論されています。
そして、こうした議論では一つ大きな共通点があり、誰もが、
自分が今現在使っているプログラム言語が一番良いと言い張って譲りません。
そもそも、Rubyをメインで使っている人にPHPをメインで使えと言っても、門前払いを食らうだけなので、こうした議論は、終わりのない平行線でもあります。
結局のところどのプログラム言語が一番良いの?
ハッキリ言えることは、自分がこれまで学習してきて一番自信があるプログラム言語がもっとも安定運用に近いWebアプリのバックエンドシステムが構築できるでしょう。
仕事の現場であれば、多くの場合、どのプログラム言語がいいかというのを選べることは少なく、大体はコレ!という言語に決められているはずです。
間違いなく言えることは、新し目のリリースされたばっかりの新規プログラミング言語は選択肢から外しましょう。
何度かバージョンアップを経て、安定運用されているプログラム言語が、一番良いし、
誰か質問できる環境やコミュニティが存在する言語の方が、構築に困った時の助けにもなります。
StackOverflowなどの質問サイトで、スレッドが立ち上がっている事を一つの条件にしてもいいかもしれませんね。
そして、個人的には、今回紹介したプログラミング言語はほぼ全て触ってきたユゲタが結論づけるのは、
PHPを使っていると困る現場がほぼ無いという事に気がつきました。
Webサーバーには、大体インストールされている(されていない場合もありますが)事と、
インタプリタだけど、別言語との繋ぎ込みも柔軟に行えるので、言語の枠に捉われない使い方もこれまで何度もしてきました。
Wordpressをつかっている多くのWebサイトでバックエンド処理が同時に行うことも可能になります。
※あくまで個人的な意見です。どのプログラム言語を使っても同じ事が言える事を併せてお伝えしておきます。
あとがき
バックエンドが安定すると、フロントエンドに集中できるようになります。
Webアプリを複数作る場合、バックエンドはどれも同じ作りにしておいた方がいいでしょう(または共通して使えるようにしておいた方が良い)。
バックエンドを安定させるためには、仕様をしっかりと設計する事が重要です。
初めてWebアプリを作る人には少し難しく聞こえるかもしれませんが、Githubなどで他の人の構成や設計を見て学習できる事も多いので、
数多くWebアプリを作るという、100本ノックをやってみてもいいかもしれませんね。
今回のWebアプリ制作チュートリアルで、基本的な知識は身につけられたかと思いますので、是非次は実践を行いましょう。
0 件のコメント:
コメントを投稿