お久しぶりです、やぬぬです。
一ヶ月前に独学でHTMLとCSS、JavaScriptの勉強を始めてついに今週、オリジナルサイトを公開することができた。
ひろゆきモノマネのYouTuber、西村ひろゆかないの公式ホームページだ。

我ながら、なかなかの完成度でリリースすることができてとても満足している。目的がはっきりしていて作りたいものが明確だと勉強が捗るようだ。
さてさて、次の目標を立てよう。まず現在のサイトの不満点として、特定のYouTubeチャンネルの最新の動画を表示する仕組みが半手動なところがもう一歩だ。それから特定のYouTubeチャンネルのチャンネル登録者数をリアルタイムで表示してみたい。これにはどうやらYouTubeAPIというものを扱える技術が必要らしい。いろいろググってみると、Pythonのコードが書かれたページがたくさん出てくる。スクレイピングという技術らしい。現在は原始的ではあるが定期的に手動で更新を行っている。
もう一つ、まったく新しい機能としてやってみたいのが、電子掲示板だ。
目次
掲示板=PHP?
プログラミングに出会ったきっかけは西村博之さんという巡り合わせから掲示板に憧れもあるし、Googleアナリティクスでサイト訪問者の数やPVが可視化されるようになり、サイト内にアクションが欲しくなったというのもある。
ひろゆきさんのペンギン村という有料のチャットサービスがあるのだが、聞くところによるとコンセプトはいいものの、スマホ画面での操作が非常に使いづらいらしい。
この辺の不満も解消できるようなユーザー体験で、西村ひろゆかないの視聴者層に一定の需要のあるブラウザで楽しめるチャットサービスがあれば楽しいんじゃないかということで新しい機能を検討している。ひろゆかないのYouTubeライブは特定の時間にしか行われないが、視聴者同士でわちゃわちゃしたいという人は24時間存在する。暇な人がサイトにアクセスすればいつでもひろゆかない視聴者というアイデンティティを持った人たちと楽しく雑談できる。
こういった目的で掲示板を作ってみたいのだが、チャットデータの送受信を行うにはサーバーサイドの言語が必要になる。「電子掲示板 プログラミング」などで検索すると、PHP関係の記事がたくさんヒットするので、勝手に僕は掲示板を作るにはPHPを勉強しなければならないと思っていた。
しかし、いろいろと検索ワードを変えながら調べてみると、PythonやRubyで掲示板を作っている例も多い。そもそも電子掲示板が流行ったのが2000年代と考えると、そのころ普及していた歴史の長い言語であるPHPで設計された前例が積み重なっていくのは当然だ。サーバーサイドの言語なら基本的な機能や作れるものはたいして変わらないようだ。
例えば、Python=機械学習というイメージが強いが、それは特化しているというだけであって機械学習しかできないわけではない。当然Webサービスを作ることだってできる。みんなが毎日使っているYouTubeだってPythonで作られたというのだから驚きだ。
しかし、日本においてはPythonをWebサービス開発に用いている例は少ないことからあまり求人は多くないという現状もある。
などなど各言語にメリットもデメリットもあるため、今回は有名どころのサーバーサイド言語を5つ挙げて、その中で僕がどれの勉強を始めることに決めたかについて、経験者特有のポジショントークや言語に対する愛着や思い入れなどが一切ないことは約束した上で、僕の独断と偏見でまとめてみようと思う。
サーバーサイド言語の5択
ぶっちゃけ、どれでもいい。
経験者の話を聞く限り、自分が一番興味のある言語をやればいいという意見が多かった。そしてこの選択はそこまで取り返しがつかないものでもなく、一つの言語をある程度まで習得すれば、同じサーバーサイド言語に関しては概念や文法など共通点が多く、いくらでもすぐに乗り換えることが可能だという。自分のメイン言語が10年も20年も変わらないことはまずないからプログラミングに慣れることや楽しんで学べること、挫折しないことを優先していいそうだ。これを踏まえた上で各言語の立ち位置をまとめてみよう。今回は一般論を踏まえた上でまずは掲示板を作りたいというのを前提としていることを断っておきたい。
PHP

特徴
- メインのフレームワークはLaravel
- シンプルなWebサービスに向いている
メリット
- 使用人口、求人が多い
- 情報が多い
- 比較的簡単
デメリット
- セキュリティに弱い、らしい
- エンジニア界隈では低く見られがち
掲示板に向いているか
◎ 開発事例が豊富に存在している。というか定番。
Ruby

特徴
- メインのフレームワークはRuby on Rails
- 主にWebシステムの開発に使われる
- インタプリタ方式
- オブジェクト指向
メリット
- ユーザーの年齢層が若い
- 日本人が開発した言語なのでネット上に日本語情報が多い
デメリット
- 実行速度が遅い
- 人によって記述の仕方に差が出やすい
掲示板に向いているか
○ 言語名を含めて検索すれば、開発事例はたくさんヒットする。
Python

特徴
- Django, Flaskなどのフレームワークがある
- インタプリタ方式
- 動的型付き言語
メリット
- ライブラリが充実している
- オールラウンドに開発できる
デメリット
- 実行速度が遅い
- インデントが必須
掲示板に向いているか
○ 言語名を含めて検索すれば、開発事例は複数ヒットする。
Java

特徴
- 大規模開発向け
- JSF, Spring Framework, Play Framework, Apache Strutsなどのフレームワークがある
- コンパイラ型言語
メリット
- ライブラリやAPIが充実している
- 実行速度が速い
- セキュリティに優れている
デメリット
- 小規模システム、個人開発には適していない
- プログラミング初学者には難易度が高い
- 学習コストが高い
- 環境構築が大変
- コードが長くなる
掲示板に向いているか
○ 言語名を含めて検索すれば、開発事例は複数ヒットする。
Go

特徴
- Googleが開発した言語
- Echo, Revel, Gin, Beego, Goji, irisなどのフレームワークがある
- WebサーバーやAPI開発に用いられる
メリット
- 処理速度が速く、メモリリソースの消費量が少ない
- 非同期処理が簡単に作成できる
デメリット
- 他の言語に比べて日本語情報が少ない
- 開発人口が少なく、求人も少ない
掲示板に向いているか
△ 検索してみると「簡易掲示板作成」「掲示板っぽいものを作る」などの記事が多く、釈然としない。
PHP, Python, Rubyに絞られる
そもそもJavaは個人で使うものではない。Goはまだまだニッチすぎる。
結果、残ったのはPHP, Python, Rubyの3つ。
就活のときのこと考えるとRuby大事だよなー。PHPはセキュリティに弱いだと?Pythonで実務に繋がるの?などと、この問題はなかなか答えがなく、まるでポケモンで最初の3匹の中から1匹選ぶのにいつまでも悩んでいるみたいになってきた。
試しに、実際の成果物をみてみよう。他の人が各言語で作ってみたというデモサイトを探してみた。
PHPで作った簡易掲示板(ひと言掲示板)
とてもシンプルでいい。はじめはログインとかアカウントなし、名前とメッセージだけで投稿できるようなシンプルなものでいいのだ。ただ、この「ああああああ」とか「qwせdsrfbxgcvgんhm」みたいな落書きのような投稿は一定時間後に自動で削除できると掲示板の見栄えはよくなるのにな。といっても有益な投稿と落書きの区別はかなり主観になってしまうのが難しいところだ。
Pythonで作った簡易掲示板(BBS)
こちらは投稿前にさらにスレッドという、カテゴリーを設定できる機能が追加されたものだ。このページはなくてもいいなら一つ目のサイトと機能はほぼ同じと言える。掲示板はほんとにPHPでもPythonでも作れるのだなと実感した。作ってくれた人には失礼だが、こういうデザインのサイトをみると、もっと使いやすくCSSを修正したくなる。
Rubyで作った簡易掲示板(Talks)
こちらは少し趣向を変えたTwitterのようなデモサイト。こちらも「話す」「聞く」のページを一つにまとめてしまえば掲示板になる。このサイトが他2つと違う点は投稿を削除、修正できるところだ。しかし、ユーザー登録の機能がないこのサイトだと他人の投稿も書き換えることができてしまう。ここの機能はトレードオフだ。セキュリティを気にしてログイン必須にしてしまうとそもそも書き込んでみようというハードルが上がってしまう。
結論
とりあえずPythonで作る方向性で勉強を始めてみようと思う。無理そうならPHPに軌道修正。やっぱり一番テンションが上がる言語で作るのがいい。ゆくゆくはスクレイピングでYouTubeAPIとかを使ってチャンネル情報をリアルタイム取得するつもりなのでまとめてPythonで統一して設計するのがファイル構造としてシンプルになりそう。一ヶ月以内に簡単な掲示板機能が実装できるように頑張ろう。