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

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モードとかいじり倒していきたいところですが、

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

 

このブログについて

ブログタイトルのとおりですが一応念のため。

※そもそもどれくらいの人がこれから見てくれるかわから無いけれど

 

【筆者について】

・普段は人材系サービスでUXデザインやWebマーケなどをやってる

・UXっていいながらまぁもはやWebディレクター

・設計や企画してSierに仕様伝える日々の中で、段々自らコードを書きたい欲求が高まってきてる

・趣味でコード書いてるがまぁ触っては止まりの繰り返しでここ1年一向に進んでない

・いい加減ゴールを決めて進みたいと思いブログ開始を決意

 

【言語歴】

トータル1年半くらい

Rails

・Swift

・JS(SPA)

PHP (の中でもcakeみたり、laravelみたり、symfonyみたり落ち着かない・・・)

 

railsで最初とあるアフィリサイトを作ろうと思ったがいろいろあって頓挫し

APPに興味を持ってSwiftを始めてみた。

だが途中で「Swiftって所詮フロントエンドじゃないか」と悟りサーバーサイドへ回帰志向。

いやでもやっぱAPPやりたいなと思いJSならnode使ってフロントからバックまでいけるやんと思いReactに手を出すも

fluxフレームワークの戦国時代を知って嘔吐。

いやこんなの個人でやるレベルじゃないやん...と思い、またまた頓挫。

railsの再トライを検討するも、rails5.x系以降のなんかあまり盛り上がっていない感にもやっとしたのと(なんかもはやWordPress++みたいな感じになってない?)

そもそもWebアプリケーションフレームワークの歴史・原理を一回学んでおこうというところからパーフェクトPHPを手に取り

気づいたらPHPerに移ってた。

 

と紆余曲折しています。

ただこれだけ長い時間いろんな言語を見て触れてきたからこそ感じるものもあるし

今はPHPに非常に満足してます。

 

【このブログで書きたいこと】

基本は開発日誌的なことを書くつもりですが

UXデザイナーなのでイケてる最近のサービスについてもまとめたりできたら。

まぁつまりふわっと幅広く書いていければと思ってます。

 

直近では訳あってSymfonyの開発を進めているのでそれについていろいろと書いていけたらなと。。

というわけでぐだぐだと始まりますが、今後ともぜひお付き合いお願いします。