menu
阿波銘木 公式ブログ

有限会社 阿波銘木 公式ブログ

オレオレ主義のVue.js!?

今年の東京の夏は異常でしたね。

未だかつてこんなに暑い毎日を経験したことはありませんでした。

ようやく冬に向かい、いい気候で寝苦しさもなくなりました。

 

お久しぶりのwebシステム担当です。

 

現在ですが、4月から六本木の大変素晴らしいオフィスでプロジェクトの上流から下流まで担当しています。

さすがに片道90分は萎えますが。

 

開発しているプロジェクトはVue.js + Laravelという環境になります。

もちろん他にも色々使用しているのですが、プログラミング言語の主要な部分だけを取り上げると上記で事足りるでしょう。

 

さて、このVue.js。

javascript界隈では随分名前が知られていましたし、僕自身もどんなものか興味がありました。

 

僕が好んで使うjavascriptのエンジンはReactなのですが、海外ではVue.jsを使用している現場のほうが多いという結果が出ています。

 

今回のプロジェクトは設計から入らせてもらい、ありがたいことにベース構築の担当までさせてもらっています。

 

Vue.js。

うん。オレオレ主義という感じですね。

 

Frameworkとしては、かなりの自由を与えてもらえます。

しかしながらこれが厄介な部分で、ルールを厳密にしなければ各々好き勝手に書いてしまい統一性を失います。

 

みんな見てくれ。今オレはjavascriptを書いてるんだ!!』って思いたい人にはいいかもしれませんw

要はjavascriptをあんまり知らないって人でもある程度の形には出来るということです。

本当にルール付けをしっかりしないと運用フェーズに入った時点でそのプロジェクトは終了するでしょうね^^;

 

ただ、vuex(Reactで言うところのRedux)を入れればFluxアーキテクチャの流れが出来ますし、vue-routerを入れればあっという間にSPAとして開発することが出来ます。

というより近年のweb開発では、SPAとObserverデザインパターン導入しないともうやってられませんw

 

ん?阿波銘木はSPA??

あと2人エンジニアがいたら考えますw

 

今回使ってみて、僕個人としてはReactのほうが好きです。

ですが、ある程度自由にサクサクと気分良く開発したい人にはVue.jsのほうが向いてるのではないかなと思います。

僕自身がある程度使えるようになるまでReactほどの時間はかかりませんでしたし。とにかくガリガリ書いて進めようって感じにはさせてくれますね^^

何よりもとっつきやすさという点ではVue.jsは抜きん出てるのではないでしょうか。

 

 

そしてLaravel。

数年ぶりに触りましたが、とにかくAWSとの相性が非常によくなった印象を受けました。

特にクラウドストレージには衝撃を受けました。これはスゴい。でもこれAWSが無くなったらどうなるんだろう。。。

今回はFacadeパターンを採用しました。この辺はサーバサイドエンジニアじゃないと分からないだろうな^^;

Laravelに関してはバージョンは上がっているものの、普通に使用する点では大きな変更はない感じですね。

 

 

 

 

しかしサーバサイドもフロントエンドも担当するエンジニアは少なくなりましたね。

僕みたいなタイプのエンジニアに今後どれだけの需要があるのでしょうか。。。

 

尖った武器を持っている人たちが羨ましいです。

 

話は変わりますが、北海道胆振東部地震の1週間後に帰省しました。

前を向いて力強く頑張ってる姿は言葉に出来ません。強い北海道を見させて頂きました。

 

 

今年も残り2ヶ月です。また年末に帰りますね^^

フロントエンドとサーバサイドの切り分け

新年明けましておめでとうございます。

今年もよろしくお願い致します。

 

webシステム担当です。

 

さて、当サイトは昨年末にSymfony4へのバージョンアップを行いました。

その後、大きなトラブルもなく稼働しているようです。良かった^^

 

僕自身なのですが、現在Productを2つ持っています。

 

1つは新宿で上流工程を担当している案件。

もう1つはRuby on Rails5Reactを使用してのWebアプリケーションの開発になります。

 

ネイティブで動作するソーシャルゲームが普及した流れなのかもしれませんが、現在はWebアプリケーションでもフロントエンドとサーバサイドで真っ二つに作業を分担するスタイルが流行っています。

現在、Ruby on Rails5とReactで開発をしているProductもRuby on Railsは完全にAPIに徹しており、ReactのほうでAPIの呼び出し、受取り、DOMの描画を行っています。

 

ぶっちゃけてしまうと、このスタイルだと1人では限界がありますね^^;

僕もソーシャルゲーム出身なので何も言えませんが。。。

 

今までのようにサーバサイドからViewをレンダリングする形だと、サーバサイドからフロントエンドへという一通りの流れがあったのですが(ajaxなんかは別です)、そこを分けてしまうと完全に1つ1つの機能が疎結合になってしまい、1人では管理が極めて難しい印象を持ちます。一連の流れがなく機能のぶつ切りになってしまうと一呼吸ついてしまうのが原因と思っています(もちろん疎結合なのでトラブルの際は場所を特定しやすいという圧倒的メリットはあります)。

 

また、考え方にもよりますが、Reactのcomponentを各ページ中のデザイン単位で切ってしまうと1ページを描画するだけでも何ファイルものjavascriptファイルが出来てしまいます。

このあたりはエンジニアのスタイルもありますが。

 

ちなみに僕はReactに関してはページ単位で分けているのでclass(es6を使用)のほうがfatしてしまうことがあります。もちろん共通部分は外に抜き出します。

それでもrenderメソッドの為だけにファイルを分けられるとちょっと管理する自信がないですね。。。

ファイル数が膨らみ過ぎます。

 

もちろんチームを組んでサーバサイドとフロントエンドのエンジニアがそれぞれ確保できるのであれば何の問題もないのですが。。。

 

React自体、Facebook社が作ったエンジンで、「もうDOMを追いかける作業はしたくない」というスタンスには僕も賛成です(jQueryもうヤダ^^;)。

ただ、これが都会ではなく地方だとどうなるのでしょうか?

 

唯でさえエンジニアは枯渇している状態です。それが地方だと尚更です。その環境下でサーバサイドはAPIを呼ぶだけにしてほしいという設計が上がってきたらまず無理だと思います。工数が取れません。

無理じゃないかもしれませんが僕は多分引き受けません。

 

結局、都会では最新の技術を、地方のエンジニアはWordPressで構築するという流れに拍車がかかるのではと思っています。

 

WordPressは素晴らしいエンジンですが、WordPressしか出来ないのに自分はエンジニアですという人が地方にはどんどん溢れていくのではないでしょうか。

 

「WordPressを使えばWebサイトが出来ます」という方をエンジニアと呼べるのでしょうか。

それはWordPressを使えるというだけでエンジニアではないと思っています。

それならホームページを構えたいという方にWordPressの本を紹介するほうがよほど親切だと思います。

もちろんWordPressのプラグインなんかを構築するレベルの方は話が別です。

 

ちょっと愚痴になりましたが、今の流れだとAll In Oneで請け負ってる方は大変になるなというだけでした^^;

 

ちなみに、ReactもAngularJSもvueJSもとても素晴らしい開発エンジンです。

ただ1人での開発だと、サーバサイドも絡むのならちょっと使うのをためらってしまいますね。

Symfony4 Release!!

東京もすっかり寒くなりました。

 

東京では僕の地元の北海道とは違って、クーラーをつけていてもジャージとかの長袖で過ごす毎日です。

ストーブのパワーに脱帽しますね。

 

お久しぶりのwebシステム担当です。

 

さて、前回のブログでSymfony3について書かせて頂きましたが、

ついにSymfony4が正式にリリースされました!!

 

当サイトも既にSymfony4へのコンバートに取り掛かっており、来年頭には4系での運用に入る予定です。

ちなみに同時期にリリースされた3.4は長期サポートになっておりますのでリスクを背負わずにSymfonyを使いたい方はまだ4系にするべきではないですね。

この辺は好みにもよると思いますが。

(追記:2017年12月26日により、当サイトはSymfony4.0.2・PHP7.2.0での運用を開始致しました。)

 

そんなSymfony4ですが2系3系と比べて非常に大きく変わった印象を受けます。

と、言うコトで下記にまとめてみます。

 

Bundleless Applicationになった↓↓

これが最も大きく変わった部分ですね。Bundlelessにするのは想定外でした。

Symfonyといえば2系からはBundleを切りながら、そのBundle内で1アプリケーションの機能を完結させるフレームワーク設計だったのですが、それがなくなりました(1系は忘れましたが似たような機能があったような)。

僕個人の感想ですが、Bundleを切ることでその中で完結できる反面、各Bundleごとに似たようなロジックを書くことも多いなという印象がありました。

もちろん共通のBundleを切るなりclassを実装するなりしてそっちを見ろよという意見もあると思いますが。

 

Controller Action Namingの変更↓↓

毎度恒例だったController内のfunctionにActionサフィックスをつける必要がなくなりました。

 

DIが使いやすい↓↓

DIとはDependency Injection(依存性注入)のコトを指します。

3.3系の時からなのですが4系も変わらずDIが圧倒的に使いやすいです。それまでずっと設定ファイルがカオスになってましたからね^^;

PHPのフレームワークではLaravelのDIが衝撃的に使いやすかったのですが、今のSymfonyも同じくらい使いやすいと思います。

詳しいコトはこちらのリファレンスを見れば分かるかと思います。

 

Annotationで設定を記述するのがBest Practices↓↓

Best PracticesではRoutingなどはAnnotationで記述したほうがいいとのことです。

従来と同じく設定ファイルにまとめる方法でも出来ますが、デフォルトの設定がAnnotationでやろうねってなっていますね。

当サイトも現在、設定ファイルから各Annotationへの記述に寄せています。

正直、yamlで設定するほうがいいんですが。。。

 

ディレクトリ構造が変わった(おまけ)↓↓

メジャーバージョンアップの際は毎度好例なのですが今回もディレクトリ構造に変更があります。

また、設定ファイルにも変更があります。

まぁ儀式のようなものなのでリファレンスを読めば問題ないですね。

 

 

サンプルロジックもGitHubに上がっていますのでそれを見たほうがしっくりくるかもしれません。

僕はサンプルロジック等は見ていません。リファレンスを見た結果、内部で使われているclass何かはほとんど同じと判断したので。

思想は大きく変わりましたが、1つ1つのclass自体はほとんど変化はないように思えます。

 

個人的には、旧バージョンより非常に使いやすくなった印象を持ちました。

 

 

 

これからバグなんかも出てきて何度かマイナーバージョンアップがあるかと思います。

Symfony4がどのように評価されるか今から楽しみです。

Symfonyの奏でかた

最近は阿波銘木のシステム開発にも精力的に関わっています。

 

お久しぶりです。webシステム担当です。

 

今日の東京は暑かったです。

朝から中央線が人身事故で動かなかったのが悲しかった。。。

なぜ自分はこんな日に限って早起きしたのだろうと^^;

 

まぁ、それはいいや^^

 

さてさて、

7月に当サイトのレスポンシブWebデザイン版をロンチした後は、臼・杵のページをアップデートしただけでフロントにはほとんど手を入れていません。

では、何をしてるの??と言いますとサーバーサイドの改修を行っています。

 

いつかのブログでも書きましたが当サイトはフレームワークにSymfonyを採用しています。

 

開発当初は最新版が2.3だったのですが現在はサポートも切れてしまったので(まぁサポートなどどうでもいいが^^;)現在はSymfonyのバージョンアップに注力しています。

 

現在はSymfony2.8で運用しているのですが、開発環境では3系にバージョンアップをしています。

ロンチ出来るのもまもなくではないでしょうか。

(追記:2017年09月30日により、当サイトはSymfony3.3.10での運用を開始致しました。)

まぁロンチしたところで誰も分からない部分ではありますが。。。

開発者としては最新版で運用することはとても大切なことです^^

 

また、それと平行してPHPを5系から7系にバージョンアップしました。

PHP7は無名クラスやメソッドの引数・戻り値での型付けなどの点で大きな変更があり、限りなくJavaに寄せてきたなという印象です。7.1からはNullableやvoidの指定(今までは戻り値の指定がない場合はnullが返る仕様でした)もできます。

これはJava出身の僕からするとありがたい話で、Symfonyのバージョンアップと平行して7系にどんどん寄せています。

当サイトは今現在、PHP7.1.10で運用しています。

 

本当にこの世界は移り変わりが激しいですね。

もう8年前になります。

僕が初めてSymfonyを採用したときは最新バージョンが1.2でした。

当時はSymfonyの奏でかたというブログを見ながら開発していました。懐かしい。

そんなSymfonyも今では3.3までバージョンが上がっています。

そして、PHP4大フレームワーク(CakePHP、Symfony、Zend Framework、CodeIgniter)と言われていた時代も終わり、今はLaravelに人気が集まっています(僕も何度もLaravelのプロジェクトに参画しましたが確かに使いやすい)。

 

ちなみに東京ではPHPを上回る勢いでRuby(Ruby on Rails)が伸びている印象です。

現在は僕も、Ruby on Rails + React.jsの開発に携わっています。

 

アニメーション以外でjQueryを使用するのもそろそろ終わりそうです。Ajaxもaxiosのほうが推奨されてますしね。

 

 

とりあえず今の仕事が落ち着いたらプログラミング言語の勉強を一旦止めて旅行に行きたいです^^

 

最後に大好きなSymfonyのロゴ↓↓

 

 

もうすぐ選挙だ!!

 

 

desktopファーストであるという難しさ

シャレにならない暑さですね。

 

今日は電気屋さんに来てもらって水漏れしてたクーラーを直してもらいました。

こういう時は東京じゃなく北海道に帰りたいのですが北海道も暑いようで・・・。

今日も都内の一室で作業してます。

 

お久しぶりのwebシステム担当です。

 

さて、2017年07月10日に阿波銘木 公式サイトはレスポンシブWebデザイン版を正式にリリース致しました。

ここに至るまで、進捗がはっきり見えなかった時間が多かったので、どうかなーと思っていましたが、

まぁ1次フェーズとしては悪くないスピード感で対応出来たと思っています。

 

とりあえずですが。

 

この『とりあえず』というのが、なかなかにタチが悪いです。

 

阿波銘木のサイトは今までPCのみのサイトとして運営してきました。

要はPC用のページしかなかったということです(当たり前ですが^^;)。

 

主にPCからスマートフォンやタブレット用にサイトを構築するには2通りのやり方があります。

 

1つはスマートフォン、タブレット用のページを別途に作ってしまい、サーバーサイド側でUserAgentを取得し振り分ける。

 

もう一つはレスポンシブWebデザイン。

 

今回、レスポンシブWebデザインを選択したのにはいくつか理由があります。

 

・UserAgentは新しい端末が出る度に設定が必要になる可能性がありイタチごっごになる。

・1ページ当たりの管理数が多くなり1人で見切れる状態ではなくなる。

・UserAgentの異なるGooglebotごとにページをクロールする必要がないため、Googleが効率的にコンテンツを発見できるようになる。

・時代のトレンドの作りである。

 

まぁ、『Googleが推奨しているから。』と言えばそれまでなのですがww

 

ただ、レスポンシブWebデザインを採用するに当たって大きな問題がありました。

それは阿波銘木のサイトが、PCで閲覧してもらうことを基準にして作られていたというコトです。

 

レスポンシブWebデザインを採用する場合、まずは小さいディスプレイ用のレイアウトから作成する『モバイルファースト』というやり方が一般的です。

ところが阿波銘木の場合、PCからスマートフォンへという『desktopファースト』というやり方になってしまいます。

 

この場合、PCで見えるままにスマートフォンへコンバートすると必然的に文字が小さくなります。

PCで当然のようにやっていた横並びを横幅のほとんどないスマートフォン用に無理やり適応させるからです。

これは実際にサイトを見てもらったほうが早いかもしれませんね。

 

 

ですので、次のフェーズでは文字を大きくする。横並びの部分を文字サイズを出すために一部縦並びにするといった作業が中心になります。

 

上記の作業 + その他の作業も含めて2次フェーズのロンチは9月〜10月を予定しています。

 

とりあえず、頑張ります^^

 

そういえば都選はモバイルファーストでもdesktopファーストでもなく

『都民ファーストの会』が圧勝しましたね。

 

色々な意味で2017年07月10日は面白い1日でした^^

レスポンシブWebデザインって何??

今週末に東京から北海道に帰省しますwebシステム担当です。

 

今回はレスポンシブWebデザインについて。

 

今年の7月〜8月に当サイトはスマートフォンに完全対応する予定でいます。

 

このサイトはスマートフォンには優しくないよと天下のGoogle様に怒られたので実際にWi-Fiを使わずに見てみたら、マジでクソ重い(っていうか知ってたけど)www

 

とは言え、限られた時間の中での改修になるのでなかなかスムーズには進みません。

 

 

阿波銘木のサイトのPC版がリニューアルされた当時、cssのサイズはpxで指定をしていました(古い^^;)。

今はrem(root em)という考え方があります。

これはrootという文字通り、一番上の親タグのサイズを元に足し引きするというものです。

 

例えば、

html{ font-size: 15px; }

p{ font-size: 1.2rem; }

だとしたら、pタグは15px x 1.2rem = 18pxになります。
この例では親クラスの文字サイズ(font-size)を変更するだけで全ての文字サイズが変更します。

これは文字サイズ以外にも親タグで指定した要素に対して適応することが可能です。
メジャーなところでいうとwidth・height・margin・paddingとかでしょうか。

これをうまく使ってブラウザの横サイズが480pxを切ったとき上の要素をコントロールして
スマートフォン専用のページの全体バランスを整えようと思っています。

 

レスポンシブWebデザインとは上記のようなことを指します。

PC、タブレット、スマートフォンなど、複数の異なる画面サイズをWebサイト表示の判断基準にし、ページのレイアウト・デザインを動的に調整することを

レスポンシブWebデザインと言います。

 

今、流行りの作り方ですね。Googleも推奨してますし^^

もうPC用、スマートフォン用でuaを見てレイアウトを切り替える時代は終わったと言えますね(物にもよりますが)。

ただ、それ以外のレイアウトはしっかりと考えないといけません。
スマートフォンには横の概念がないので画像とかは新しく作ってもらわないといけません。

この辺はデザイナーに他のスマートフォンのサイトを見ながら勉強してもらいます。

僕自身、スマートフォンのサイトを作ること自体は簡単にできますが、内容が伴わないと意味がありませんからね。
それに暫定的に作ったとしても結局は改修に追われるワケです。


阿波銘木の話は終わり!
昨日は前々から注文していたKensington社のSlimBladeというマウスが届きました!!


マウスに10,000円は高いと思いますが、商売道具ならいくら使ってもいいと思っています。

今日、帰省するためのスーツケースを出しました。
今週の金曜日に登別に帰省します^^

docker勉強

ブログを書くのは本当に久しぶりのwebシステム担当です^^

 

と言っても阿波銘木の仕事もぼちぼちしています。

今は僕が東京の現場で仕事をしているので思うようには出来ませんが。。。

 

このブログシステムも僕が作りました(ナイショ)。

 

まぁ、エンジニアなんてそんなもんだろうと思うワケですw

 

今日はdockerの勉強をしていました。

OSはCentOSを指定したのですが、まさかまさかのsystemctlで怒られるという、とんでも事件に巻き込まれていますwww

 

いつもはvagrantで開発していたのですがGCPがdockerとの連携を強めたので、これはやらないとダメだと^^;

 

以下はDockerfile

 

-----Dockerfile-----

 

# Pull base image.
FROM centos

MAINTAINER development

# timezone
RUN cp -fp /usr/share/zoneinfo/Japan /etc/localtime

# yum update
RUN yum -y install yum-plugin-priorities
RUN yum -y update

# SELinux(入ってないっぽいのでコメントアウト)
# RUN setenforce 0

# kernel
RUN yum -y update kernel*
RUN yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

# repository
RUN yum -y install epel-release
RUN curl -sL https://rpm.nodesource.com/setup_4.x | bash -
RUN rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# wget
RUN yum -y install wget

# zip unzip
RUN yum install -y zip unzip bzip2
    
# make
RUN yum -y install make

# Git(makeで死んだのでとりあえずyumで落とす)
RUN yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
RUN yum -y install git

#uninstall apache
RUN yum -y remove httpd

# nginx for centos7
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum -y install nginx

# PHP7
RUN yum -y install --enablerepo=remi-php70 php php php-mbstring php-pear php-mcrypt php-mysql php-fpm

# composer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer

# rbenv
RUN yum -y install readline-devel
RUN git clone https://github.com/sstephenson/rbenv.git /root/.rbenv
RUN git clone https://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build
RUN ./root/.rbenv/plugins/ruby-build/install.sh
ENV PATH /root/.rbenv/bin:$PATH
RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
RUN echo 'eval "$(rbenv init -)"' >> .bashrc

# add Ruby version
RUN rbenv install 2.4.0
RUN rbenv global 2.4.0

# rybygames
RUN bash -l -c "gem install bundler"
RUN rbenv rehash

# node.js
RUN yum -y install nodejs

# mariaDB
RUN yum -y install mariadb-server mariadb-devel galera

# iptables
RUN yum -y install iptables-services

 

# Java
RUN yum -y install java-1.8.0-openjdk

# jenkins
RUN wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
RUN rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
RUN yum -y install jenkins

 
# postfix(SMTPはログイン後に設定)
RUN yum -y install postfix
RUN yum -y install cyrus-sasl*
RUN yum -y install telnet
RUN yum -y install mailx

#root no password(とりあえずrootだけでやってみるのでコメントアウト)
#RUN echo 'LoginGraceTime 120' >> /etc/ssh/sshd_config
#RUN echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
#RUN echo 'StrictModes yes' >> /etc/ssh/sshd_config

# docker user setup(とりあえずrootだけでやってみるのでコメントアウト)
#RUN useradd docker
#USER docker
#ORKDIR /home/docker
#ENV HOME /home/docker

#RUN mkdir .ssh
#RUN chmod 700 .ssh

# waiting port
EXPOSE 22
EXPOSE 80
EXPOSE 443

EXPOSE 3306
EXPOSE 8080

#mount
VOLUME [ '/var/www/html' ]

 

-----/Dockerfile-----

 

 

以下はdockerのimageにログインしてcommitしたいもの

 

-----docker images-----

 

# vi /etc/nginx/nginx.conf

------vi /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    index   index.php index.html index.htm;

    upstream phpfcgi {
        server 127.0.0.1:9000;
        # server unix:/var/run/php5-fpm.sock; #for PHP-FPM running on UNIX socket
    }

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}
------/vi /etc/nginx/nginx.conf


# vi /etc/nginx/conf.d/web.conf

------vi /etc/nginx/conf.d/web.conf
server {
    listen 80;

    server_name localhost;
    root /var/www/html/public;

    fastcgi_read_timeout 120;

    client_max_body_size 5M;


    location / {
        try_files $uri /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        include        fastcgi_params;
    }
}
------/vi /etc/nginx/conf.d/web.conf

# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
# systemctl start nginx
# systemctl enable nginx

# vi /etc/php-fpm.d/www.conf
user = root
group = root

# systemctl start php-fpm
# systemctl enable php-fpm

 

# systemctl start mariadb
# systemctl enable mariadb
# mysql -u root
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO administrator IDENTIFIED BY 'admin' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;

# iptables -P FORWARD DROP
# systemctl stop iptables
# systemctl disable iptables

# systemctl stop firewalld
# systemctl disable firewalld

 

-----docker images-----

 

 

systemctlさえ問題なければすぐに開発環境の構築に成功するのですが、こう言ったアプリケーションはなんだかんだでうまくいかないものです^^;

大きな問題ではないですが。

 

これからはvagrantよりdockerのほうが主流になると信じてdockerで環境を作ろうと思っています。

 

こぼれ話で今までJavaとPHPの開発環境で使用していたVagrantfileも載せておきます。

 

-----Vagrantfile-----

# development Vagrantfile

Vagrant.configure("2") do |config|

  # OS
  config.vm.box = "bento/centos-7.2"
  config.vm.provider :virtualbox do |vb|
     vb.gui = true
     vb.customize ["modifyvm", :id, "--ostype", "RedHat_64"]
  end

  config.vm.provision :shell, inline: <<-EOT

    # timezone
    cp -fp /usr/share/zoneinfo/Japan /etc/localtime

    # yum update
    sudo yum -y install yum-plugin-priorities
    sudo yum -y update

    # SELinux
    sudo setenforce 0

    # kernel
    sudo yum update -y kernel*
    sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

    # repository
    sudo yum -y install epel-release
    sudo curl -sL https://rpm.nodesource.com/setup_4.x | bash -
    sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    sudo yum -y install wget

    # zip unzip
    sudo yum install -y zip unzip

    # Git
    sudo yum -y install wget gcc
    sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
    sudo yum -y install git
    cd /usr/local/src/
    git clone git://git.kernel.org/pub/scm/git/git.git
    cd git
    sudo make prefix=/usr/local all
    sudo make prefix=/usr/local install

    #uninstall apache
    sudo yum -y remove httpd

    # nginx for centos7
    sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    sudo yum -y install nginx
    sudo systemctl enable nginx
    sudo systemctl start nginx

    # PHP7
    sudo wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    sudo rpm -ivh ./remi-release-7.rpm
    sudo yum --enablerepo=remi-php70 -y install php php php-mbstring php-pear php-mcrypt php-mysql php-fpm
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm

    # composer
    cd /var/www/html/
    curl -sS https://getcomposer.org/installer | php
    sudo mv composer.phar /usr/local/bin/composer

    # mariaDB
    sudo yum -y install mariadb-server mariadb-devel galera
    sudo systemctl start mariadb
    sudo systemctl enable mariadb

    #sudo mysql -u root
    #MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO administrator IDENTIFIED BY 'admin' WITH GRANT OPTION;
    #MariaDB [(none)]> FLUSH PRIVILEGES;
    #MariaDB [(none)]> quit;

    # iptables
    sudo yum -y install iptables-services

    sudo iptables -P FORWARD DROP
    sudo systemctl restart iptables
    sudo systemctl enable iptables

    # firewall
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld

 

    #Java

    sudo yum -y install java-1.8.0-openjdk

    # jenkins
    sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
    sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
    sudo yum -y install jenkins
    sudo systemctl start jenkins
    sudo systemctl enable jenkins
    sudo yum -y install cyrus-sasl*

    # postfix
    sudo systemctl start saslauthd
    sudo systemctl enable saslauthd
    sudo yum -y install telnet
    sudo yum -y install mailx
    
    #ネットワーク再起動
    sudo systemctl restart network.service
  EOT

  config.vm.network :forwarded_port, guest: 22,   host: 22, id: "ssh"
  config.vm.network :forwarded_port, guest: 80,   host: 80
  config.vm.network :forwarded_port, guest: 3306, host: 3306
  config.vm.network :forwarded_port, guest: 8080, host: 8080
  config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=755']

  config.vm.synced_folder "local directory', "host directory", owner: "vagrant", group: "vagrant", mount_options: ["dmode=777", "fmode=755"]
end

 

-----/Vagrantfile-----

 

これだけでは動きません。実際にはvagrantにログインしてサーバ設定してます。

 

 

参考になる方はどうぞ使って下さいwww

 

東京は今日は19度まで上がりました。

 

いよいよ春ですね。

GWに北海道に帰省したら何しようかな^^

 

 

laravel5

ご無沙汰しております。

阿波銘木のwebシステム担当です。

最近はたまの週末にちょこちょこやってるくらいですが。。。

 

現在の僕は他の仕事も担当しているため、阿波銘木の大きなシステム開発は出来ていません。

それでもちょこちょこ呼ばれてはマイナーチェンジしてます。

要チェックや(スラムダンク風に)w

 

さて、私事ではありますが、今年はlaravelでの仕事を担当しています。

基本はsymfonyをラップしたものですからsymfonyを使っていた僕からすると

 

「はいはい、なるほどね。」

 

という感じで扱いやすいです。

 

laravel自体が非常に伸びているフレームワークなので僕としても早く触ってみたかったという感じです(詳しくはこちらのグラフを見てください)。

 

PHPのフレームワークは非常に乱立しているので数年後には新しいフレームワークが人気になってるのかなと思います。

 

PHPもversion7が発表されてますしね。

 

本当にこの業界は勉強×2ですね^^;

こんな業界だって知ってたら多分やってないですw

 

北海道は冬に移っている途中です。

寒いです^^;

 

○○何かで書いてるから

本日も臼の取材がありました。

メディアの皆様にはとても感謝しております。ありがとうございます。

 

臼の取材が始まると、もう年末かーって思いますね。

今年はゆっくりしたいです。

 

さて、とある開発で最近までJavaを使っていたのですが・・・。

うーん。やっぱり手数がかかるw

そして設計に悩む。

まぁきっちり設計して共通意識もしっかりとさせるのがJavaなので手数が増えても仕方ありません。

ただ1人での開発だと「インターフェースいるかな??」って思ってしまいます。ちなみに今回はちゃんとインターフェースや抽象クラスで共通意識を持たせながら実装しました。

1人で実装したんですけど・・・。

 

まぁ特別Javaで実装する理由はなかったんですよねw

たまたま使えそうなjarがあって試してみたら「これはイケる!!」ってなっただけなので。

 

それでも色々な言語をやるのはいいことだなーと思います。

 

あまり言語のコトを言うとケンカになってしまうのでw

お酒の席で言語の話をしてると

「お前は○○なんて使ってるからそんなプログラムしか書けないんだ!!」

みたいな感じでケンカに突入します。

まーアレですね。言語は宗教に近いところがあるので・・・。

 

僕は動けば何でもいいと思ってるんですけどね(爆)

 

ただ、エンジニア同士で飲むときは言語の話はしない!!って決めてますw

 

tag : 

雑談

 

メディア

 

ローンチって何??

先日、赤ちゃん・子供をメインとしたフォトフレームのページ〜購入までのシステムをローンチしました。

 

専務が言った一言です。

 

僕『これからフォトフレームのシステムをローンチします。』

 

専務『ローンチってどういう意味?

 

僕『お客様が実際に見る本番に上げることです。。。』

 

うーん。

そう言われると僕も何となくローンチって言ってましたがイマイチ意味が分かってませんでしたw

ということで調べました。

 

こちらのサイトに書いてありました。

以下、引用させていただいております↓↓

 

ローンチとは、新しい商品やサービスを世に送り出すことである。

日本語では「立ち上げ」「公開」「開始」「発進」などの語が相当する。 

ローンチという表現は、WebサイトやWebアプリケーションを新たに公開する場合などで用いられている場合も多いが、それだけでなく、新商品や新サービスの公開という意味で一般的に用いられている。

 

だそうです。

 

エンジニアの業界は横文字が多いコトもあって当たり前のように使っていました。

とりあえず、間違っていなくて一安心です^^

 

iOS8

来週中には赤ちゃん、子ども用のフォトフレームがリリースされます。

楽しみにしていてください!!

 

 

さて、本日からiPhone6が発売となりiOSも8がリリースされました。

混んでいたのでなかなかバージョンアップ出来ませんでしたが、先ほどようやくiOS8にするコトが出来ました^^

 

ユーザビリティな部分はiOS7とさほど変わりないかと思います。

iCloud Driveはバグがあるようで、その他の部分でもしばらくは様子を見ないと分からない部分が多そうです。

またバージョンアップにも相当な時間を費やしました^^;

その辺りはAppleですから次は大丈夫だと思っています。

 

ちなみに僕もiPhone6予約してます^^

多分1ヶ月以内には届くのではないかと思っています(期待も込めて)。。。

 

元々、東京にいた頃はソーシャルゲームの開発もしていたので、OSの変化は敏感に対応しないといけないんです(それを言い訳に毎回予約させてもらってますw)。

 

来週はフォトフレーム関連のページをローンチします。

ローンチほど不安なことはありません。

『トラブルがあったらどうしよう』とか『あれ、あの部分のテストしたっけ?』とか自問自答の繰り返しです。

だからこそ安定稼働すると嬉しいんでしょうね。

 

エンジニアだけの幸せな時間かもしれません^^

 

 

 

Symfony

先日、ノートPCを購入しました。

当然ディスプレイは小さいのでもう1つ付け足してデュアルディスプレイに、

キーボードが使いにくかったのでキーボードをつなぎ、内蔵タッチパッドも使わないので

マウスをつないで。。。

結局、ノートPCは電源ボタン以外触れなくなってしまいました。

 

今回はフレームワークのお話です。

阿波銘木のサイトはSymfony2を導入しています。

SymfonyはPHPフレームワークの草分け的存在なんです。

今まで関わってきたPHP案件ではZend FrameworkやCodeIgniter、fuelPHPなんかを触ってきましたが、

なぜこのサイトにSymfonyを導入したのでしょうか?

 

それは名前がカッコイイからです^^

うん。半分くらい本気なんですが、一番の理由は最初に使ったフレームワークがSymfonyだったからです。

Symfonyは手数の多いフレームワークなのですが、マッピングや制約が厳格なため大規模開発に向いていると言われます。

このサイトは決して大規模ではないのですが、ゼロベースからの開発ということで2系を使おうと思ったワケです。

ちなみにメジャーのバージョンアップは思想まで変わっているので名前が同じだけで中身は大きく変わります。

大きな変化がなかったのはCodeIgniterくらいでしょうか。

このサイトを作ったのは約1年前なのですが、当時はSymfony2の日本語のドキュメントも充実しておらず、英語の公式ページとにらめっこしながら開発してました。

今は、日本語の翻訳も進んで非常に充実したドキュメントになっているので分からなくても比較的すぐ解決できます。

 

 

ただ最近はSymfony自体、学習コストが高いとの理由で導入しにくいという声を多く聞きます。残念^^;

 実績としてはYahoo! BookmarksやDailymotionなどがSymfonyを採用しているみたいです。

 

Bootstrapその2

前回のBootstrapでの画面作成の続きです。

細かい修正はありますがひとまず落ち着きました。

 

皆さんの目に見える部分ではないのですが、非常に綺麗に見えるようになりました^^

 

後はタグを整えて、僕が作成したベースになっているcssを修正すれば作業は終わりです。

 

来週からは久々にサーバ周りの作業になります。

また調べながらの作業です^^;

 

1つ1つ勉強だと思ってやっていきます。

 

tag : 

雑談

 

Bootstrap

もうちょっとwebからの買い物を簡単にできないかというコトでいろいろ作業してます。

 

それに伴った追加開発部分でBootstrapが使えそうだったので初めて使ってみようと思いました(今までは使わず嫌いなところがありましたので・・・)。

 

あー、これは使いやすいなーと思いましたね^^

 

とりあえず30分くらいhttp://dotinstall.com/lessons/basic_twitter_bootstrap_v4で使い方をざっくり覚えて

後はひたすら分からない部分をググるのみです。

実際、開発よりも開発するための勉強時間のほうが長かったりします^^;

 

HTMLは自分で書けるからいいやじゃなくて、やっぱりこういう便利なモノは導入するべきだなと改めて感じました。

 

そんなこんなで今週はBootstrapを導入した作業がメインになりそうです。

まだまだ勉強しないといけませんね^^;

 

tag : 

雑談

 

レコメンド機能を追加しました。

おはようございます。

昨日から社長が脱腸で入院しており、本日は静かなオフィスで作業しています。

 

さて、先ほど表札ペット商品・フォトフレームの詳細ページにレコメンド機能を追加いたしました。

 

レコメンドって何?って方もいると思いますがA○azonとかにある

『この商品を買った方はこんな商品も買っています』っていうアレです。

 

阿波銘木のはこんな感じにしてみました。

http://awameiboku.com/hyousatsu/categoryDetail/7/item/200189

 

商品が増えてきたらスライダーとか付けてもっと見れるようにしていく予定です。

 

今後はタブレット用のページの作成に入ります。

 

とりあえず朝ごはん食べることにしますね^^

 

tag : 

雑談

 
カテゴリー
最新記事
アーカイブ
カテゴリー
最新記事
アーカイブ
facebook
Twitter
TOPへ戻る