アプリ開発

アプリ開発

Laravelで開発する時の文字コードはUTF-8(但しBOMに限る!! ←ココ重要)なのでエディタを設定しよう

PHPのWebアプリ開発フレームワーク「Laravel」のお勉強メモ。

Ruby on Railsを3日くらいかじって、むしろLaravelじゃないかという謎の発送でLaravalを勉強し出したが、Laravelの開発2日目に躓いたのが文字コード問題だった。

結論を言うと、Laravelでは文字コードはUTF-8N(BONなし)が基本。問題無さそうなのに原因不明の謎エラーが出る時は使っているエディタの設定を見直そう。

そもそもBOMなしとは?

普通にWebデザイナーがHTMLをいじったりする時はUTF-8が基本ではあるけど、それ以上のことは考える必要がないのが通常。UTF8のBOMがどうのでエラーが出た経験は過去10年一度もない。

なので、UTF-8に種類があることも遠い記憶だったのだが、確かにBOMがどうのという話は薄っすら記憶にある。

BOMの有り無しはファイル先頭の3バイトの違いだと言う。UTF8は自分の理解ではUNIX系の文字コードがルーツであり、本来はBOM無しが基本。しかし、MicrosoftのExcelがどうの~という話が出てくるあたりから、BOM有りはWindowsアプリでの標準のようだ。

ケースバイケースでBOMの有り無しはどっちが良いかが変わってくるが、PHPのプログラムはBOMなしが必須でHTMLもBOMなしの方が好ましいという。

使っているエディタによって設定方法が違うが、まともな開発用エディタだったら必ず設定方法があるので各自で調べてみよう。そもそも、Visual studio codeとかを使った方が良い気もしてきた。

ちなみにLaravelで遭遇したエラー

某チュートリアルサイトの通りに作業していたが、下記の名前空間がどうの~というエラーで1時間ハマった。

Namespace declaration statement has to be the very first statement or after any declare call in the script

英語の意味の通りの意味で当たりを付けてでエラーを解消しようにも、それらしい原因はなかった。しかし、エラー内容で検索をかけてみるとBOMの有り無しという情報があった。指摘されているファイルをBOM無しで上書きしたらあっさり解消した・・・。エラー文で検索するの大事!

PHPをやっている人には常識だったのかもしれないが、LaravelではBOMの有り無しは大いに動作に関係することは覚えておこう。

あと、チュートリアルの鉄則だけどLaravelのバージョン合わせもしておくべきだった。最新の8系と7系で記述がかなり違う部分があることがわかって初心者泣かせに・・・。

アプリ開発

【どっち?】プログラミング言語「PHP」と「Ruby」の違いについて知ったかで語ってみる

Web界隈のプログラミング言語として広く使われている2大プログラミング言語(と勝手に思っている)の「PHP」と「Ruby」について、それぞれの特徴を主観をベースに調べたことをまとめてみた。

なお、「同じことを繰り返さない」が執筆思想(?)なので、Wikipediaに載っているような基本事項は極力省く。個人的なメモに近いので間違いもあるかもしれない。

PHPとRubyの共通点と違う部分

どっちも1995年頃に登場したコンピューターの歴史においては比較的新しいプログラミング言語で、インターネット、つまりWebサイトでの利用を想定している。

C言語とかJAVAとかに比べると、どちらも初心者でもとっつき易いプログラミング言語とされる。

PHPに至っては、ほとんどのレンタルサーバーが標準でサポートしている。今どきのWordPressなどのCMSで表示されているWebサイトではPHPが動作するサーバーであることが前提なので、Webサイト界の標準的なプログラミング言語と言えよう。なにを隠そう(隠す意味もないが)、このサイトもPHPで動作しているので、個人的にはPHPの方が身近。

対してRubyは、Ruby自体はそのへんのレンタルサーバーでもサポートしているものの、Rubyと組み合わせて利用されることが多いRuby on Railsというフレームワークはそのへんのレンタルサーバーでは動作しない。

Ruby=RailsというくらいにRailsは必須なので、AWSやHerokuと言ったクラウド環境を使う必要がある。クラウド環境は設定などもそうだが、従量課金制だったりと料金的にも素人の個人がガチで使うには敷居が高い印象。

求人が多いのはPHP、給料が高いのはRubyらしい

多くのWebサイトに多かれ少なかれ使わている気がするPHP

PHPが使われている(使われていた?)有名サイトとしては、FacebookやYahoo!など。

個人や中小企業などのブログ系サイトでよく使われているWordfPressもPHPなので、PHPベースで作られているWebサイトは数として最大ではないかと思う。

個人のサイトでも企業のサイトでもPHPが使われていることは多い。ガチガチな開発案件だけでなく、ちょっとPHPが触れるレベルというWebデザイナー案件なども多い。フリーランス向けエージェントだとPHP関係の求人はRubyより2~3倍くらい多い。

個人的な感覚だと、もっとPHP関係の案件は多くて、世間的にはRubyより5倍以上多い気がする。いや、RubyやRailsの案件というのはガチエンジニア向けだから、目にする機会がなかったというのもあるが。

Rubyは前述のようにRuby on Railsがセットで使われる。

代表的なサイトとして必ずクックパッドが提示されるけど、株価はともかくとして、初心者に向く言語と言いながらも、ユーザー数が多い大規模有名サイトに耐えられる実力があることが伺える。

印象としては、Railsを使うと雛形をベースにハイスピードで開発できるので、ベンチャー企業やスタートアップ企業に特に好まれているようだ。

教育界隈ではWebアプリ≒Ruby on Rails

ベンチャー企業のWebアプリで使われている気がするRuby(Rails)

Webアプリとは、個人的にはWebサイト上で情報を登録したり、ログインできたり、アプリのように使えるサイトのことを言う。ツイッター、インスタグラムなんかがわかりやすい例。

WordPressなどのCMSは、記事などのコンテンツを管理することに特化したWebアプリとも言えなくもないが、境界線ははっきりしない。管理者からするとPHPのプログラムで動作しているアプリであることは明白なので、管理者からしたらWebアプリとも言える。

ところが、プログラミングスクールなどの教育界隈ではWebアプリ≒Ruby(Ruby on Rails)という式が成り立っている。

世の中のwebアプリというのはPHPであったり、様々な開発言語やフレームワークが使われているはずだが、プログラミングスクールというビジネスモデルとの相性か良いのかどうかわからないものの、多くのプログラミングスクールではカラキュラムを見ると暗黙の了解的にRailsを学ぶことになっている。

大手企業のサイトなどでもPHPが使われていることは多いし、WordPressなどの個人の趣味目的でも、求人案件的にもPHPの需要は大きいと思うが、不思議でPHPをメインで扱っているプログラミングスクールはあまり見たことがない。

その理由としては、PHPのフレームワークは固定化されておらず様々だというのがありそう。RubyだとRails一択というほどに固定化されていて、求人にさえありつければ学んだことを直に生かしやすいという事情もありそうだ。



個人的に学びたいのはPHPなのはやまやまだけど

WordPressを触っていたり、企業でWebサイトをいじっているなら、PHPは多少は目にしたり触ることは多いはず。PHPを学ぶことは意味が大きいと思うが、体系的に学ぶのが難しい印象があるのもPHPとも言えるだろう。

そういう意味では、確かにRuby(とRails)の方がチュートリアルや教育環境が充実している気がする。現実の求人事情や使われているサイト数なんかではPHPの方が上という気がするのがひっかかる所ではあるが。

Railsはそんへんのレンタルサーバーでは動かないので、素人の個人としては敷居が高いと思ってしまうのだ。

AWSとかに比べて敷居が低そうなのが、調べた範囲だとConoHa VPSとかだろう。どちらしろ、Railsで開発できないと能力を生かせそうにないが。



アプリ開発

初心者がRuby on Railsのインストール(環境構築)で死にかけた話

この画面に辿り着くのにどれだけ疲れ果てたか・・・

Webアプリケーション開発の代表的なツールの一つRuby on Railsに挑戦しようと思い、『たった1日で基本が身に付く! Ruby on Rails 超入門 たった1 日で基本が身に付く!』という超初心向けの入門書を見ながら、環境構築に挑んだのだが・・・。

結論を言うと、難しすぎて1日で7回くらい死んだ。環境構築だけで丸1日費やした。

入門書あるあるだけど初心者向けじゃない

『超初心者』とあるから、ホントの超初心者でも大丈夫などと思ってはいけない。

出版不況のこのご時世、売れるためなら内容に反していようが売れそうなタイトルを付けるのである。どう考えても書籍のタイトルを考えている人と、中身を書いている人は同一人物ではない。だって、初心所には難易度が高すぎたもの。

バージョン合わせは必須

Android StudioやXcode、Unityでさんざん泣きを見た反省から、バージョン合わせは徹底しようと思った。

バージョン合わせとは、この手の入門書やチュートリアルをやる時は、バージョンを1mmの狂いもなく合わせることである。書籍の場合は発売直後でもない限りは、リアルタイムより古いバージョンで解説されているはずだから、何のバージョンを使っているか慎重に調べて、同じバージョンをダウンロードするなりしてインストールしなければならない。

そうしないと本やチュートリアルの通りにやっても同じ結果にならないからだ。

Railのインストールは複雑

オープンソース系の開発言語あるあるだが、インストールや環境構築が難しい。

Windowsのアプリとかみたいにウィザードでクリックしているだけで完了するなんてことはない。自分でコマンドを打ち込んで、必要なツールを導入していくのだ。

『たった1日で基本が身に付く! Ruby on Rails 超入門 たった1 日で基本が身に付く!』の序盤には環境構築のやり方が乗っていて、それぞれのソフトやツールのバージョンも記載はされていはいるが落とし穴があった。

Railsは自動的に最新版がインストールされる

本の通りにやっていくと、特に記載はないが本体とも言えるRailsのインストールコマンドをそのまま入力すると、その時点での最新版が自動的にチョイスされてしまうのだ。

一度入れてしまうと削除するコマンドなんかも自分で調べないとならないし、分けが分からないことになる。

RubyはGemという一般で言うところのプラグインみたいな機能ごとのパッケージをインストールして環境構築するのだが、Gemを入れる時はRails本体を含めてバージョンには細心の注意が必要だ。

間違って最新版のRailsを入れてしまうと仕様が変わっているため、追加でインストールしないとならないGemが出て来たり、ややこしいことになってしまう。

基本的にバージョンさえ合わせればOK

うまく行かない時は一応、コンソールに英語でエラーメッセージが出るのだが、それをググって解決策っぽいことを書いているエンジニアの人のメモを見て解決していくのも一つ。

ただ、超初心者がこの『たった1日で基本が身に付く! Ruby on Rails 超入門 たった1 日で基本が身に付く!』の本でぶち当たる問題は、多くの場合はバージョン違いによるものだと経験的には思う。

インストールするもののバージョンを一つ一つ確認して、間違ったらアンインストールしつつ、進めていけば大丈夫。

格闘すること丸1日!

本のタイトルの通りだったら、本1冊分の学習を終えているはずだけど、実際には序盤30ページくらいの環境設定で丸1日が終わった。ほぼ脳死状態で先に進むのは不可能なくらいに疲弊していた。人は何のために生きていくのだろう、私は誰だったか・・・。

そんなやっとの思いで『localhost:3000/』が表示できた時は、長年追い求めていた獲物を仕留めた思いでいっぱいだったのである。

決めてとなったのは間違って最新版を入れてしまったRail本体をアンインストールして、本と同じバージョンでインストールや環境構築をやり直したこと。色々やっているうちに上手くいったのだ。

・・・と、いざ冷静になって『localhost:3000/』の画面を見ると、Railsが最新版の表示になってる。なんでやねんという気持ちでいっぱいだが、結果オーライということにしよう。