読者です 読者をやめる 読者になる 読者になる

Developerを目指すWebマーケターの奮闘記

マーケターからDeveloperへ転身するべく、日々の気づきなどをメモしています。基本自分用のメモになっていますが、時間があれば読みやすいように更新していきます。

【Symfony開発日記】1日目:なぜ今symfonyか〜開発環境構築まで

なぜ今symfonyを選んだか

ある種備忘録かねてですが記載しておきます。

実際はもともとCakeかLaravelをやる予定でした。

Railsから入った経緯もあるしCakeだったらすんなりできそうでしたからね。

作ろうとしているのはとあるアフィリサイトでその中でクローラーおよびスクレイピングをする必要があります。

PHPスクレイピングを検討した時にまず出てきた候補が「Goutte」でした

 

qiita.com

 

Goutteをいじっていくためのリファレンスを読み込んでいく中で

GoutteそのものがSymfonyコンポーネントの一つのDomCrewlerを使っていることが

わかってきたため必要にかられてSymfonyの勉強を始めたのが経緯でした。

 

 

完成されたフレームワーク

最初はSymfonyコンポーネントと言われてもピンときてませんでしたが、実際にsymfonyに触ってみて大きな気づきを得ました。

確かに各コンポーネントが単体だけでも十分ライブラリとして利用出来るという洗練されたコードであること。

これは非常にメリットが大きいです。ただ逆に、だからこそSymfonyの全体構造を理解しないままやるのは非常に効率が悪いとも感じました。それが開発を始めた経緯です。

 

また仕事柄、CRM / Marketing Automationの領域を担当しているのですが、

その中で昨今じわじわと話題になっているOSS Matketing AutomationツールのMauticも

調べてみるとSymfonyベースとのことだったのでこれはもう是非触り倒して

ゴリゴリカスタマイズできればといいなと思ってます。

 

 

開発環境の構築

今回は以下の環境で構築を進めています

vagrant 1.8.6
Virtual Box 5.0
OS centos7
パッケージ管理 Composer
PHP ver 7.0

 

開発の中でのFindingsは次回以降まとめていくとして、

事前に超初歩的なレベルになりますが、1時間近くはまった内容を以下に。。。

本当に無駄な時間過ごした。。。

 

Symfonyの概要把握のこの期間においては、下記の書籍を参考にしています。

gihyo.jp

Symfony Installerを利用し、下記の流れで進めています。

* Apache, composer及び mysql, phpのプロビジョニングは終わっている前提

$ curl -LsS http://symfony.com/installer > symfony.phar
$ sudo mv symfony.phar /usr/local/bin/symfony
$ chmod a+x /usr/local/bin/symfony
$ symfony_demo

こうするとSymfony_demoフォルダができますね。scaffold的な

ここからがいくつかどハマりでした

1. symfony_demoは最新版のsymfony APPを作ってしまう

symfony2 入門の書籍のバージョンは2.8を想定しているため30ページあたりから上手くいきません。

# app/console -> bin/consoleへ
$ php app/console  // 機能しない
$ php bin/console  // 機能する

app/check.phpはファイル自体がなくなっているので確認方法がわかりませんが、

3.x系でDir構成が変わっていても部分的にはついていけると思います。

問題は次です。。

2.ビルトインServerが起動できない

これが一番はまりました。そもそもRailsやCake、Laravelなどはビルトインサーバーを実行しなくても、Apacheを常時起動にしておけばそちらで接続してくれます。

しかしSymfonyについてはそれが上手くいきませんでした。(Internal Server Error

 

そのためビルトインサーバーの起動でやってみるもこれまた上手くいかず。。。

そしてRailsのときにあった以下の内容にヒットしました。

 

qiita.com

 

そう、Vagrant上でビルトインサーバーを立ち上げるとき、VMで起動しているRailsサーバーに外のOSからIP指定でアクセウするには以下のようにbindingオプションで0.0.0.0を指定します。またSymfonyはデフォルトではポート番号8000を見ているのでVagrantのポートフォワーディングも8080から8000に変えてあげる必要がありますね

 

    $ php bin/console server:run 0.0.0.0:8000

ん、まさかこれ・・・?と思ったら上手く起動!

 

f:id:azurverde-tkhr725:20161214005636p:plain

 よしきた!

さぁこのあとDevモードとかいじり倒していきたいところですが、

ここまでで大分疲労感溜まったので続きはまた次回。