伊藤清徳の垂直落下式ムーンサルトプレス

PerlとかPHPとかMySQLとか...がんばっても8割だ。

Author: admin (page 1 of 27)

CentOS7+PleskOnyxな環境でのはまりごと

CentOS7 + PleskOnyxな環境をはじめて借りてハマったことをメモ

イニシャルではApacheモジュール版PHPがうごいていない

Pleskではすこし前のバージョンから

  • PHPの動作モード
  • PHPのバージョンを選択

できるようになっていますが、PleskOnyxでは、PHPの動作モードが

  • FAST CGI
  • FMP

のみになっており、あれ?Apacheモジュールは???となりました。
サーバーを借りたクララオンラインさんに、サポートをおねがいしたところ
http://faq.clara.jp/index.php?solution_id=1350
をご紹介くださいました。なーるほど。Pleskはもともといろーんなものがモジュール化していますが、
mod_php自体もモジュールなんですね。


CPANモジュールが共通ライブラリディレクトリにインストールできない

sshでログインした際に自動的に環境に

  • PERL5LIB=/ユーザーディレクトリ/perl5/lib/perl5:
  • PERL_MB_OPT=–install_base /ユーザーディレクトリ/perl5
  • PERL_LOCAL_LIB_ROOT=:/ユーザーディレクトリ/perl5
  • PERL_MM_OPT=INSTALL_BASE=/ユーザーディレクトリ/perl5

がセットされる。
これに気づかずに3時間なやんだ。とっとと
perl -V
してれば気づいたのに。。。

これら環境変数を削除した上で、CPANインストールすればよろし。


cgi-binディレクトリが有効になっていない

まぁPerl/CGIとかRuby/CGIとかやんなやって話ですが、昔の枯れた技術というのはとても有用でしてね…
で、イニシャル状態では、公開ディレクトリにcgi-binディレクトリがあって、
そっちが有効になっているんです。昔良くあった構成

/ユーザーディレクトリ/cgi-bin/
/ユーザーディレクトリ/httpdocs/

って言う構成がとれないわけです。
ので、ふるいサイトを移行するとちょっとめんどい。

/ユーザーディレクトリ/httpdocs/cgi-bin/

の中に格納すればいいわけですが。


1個1個はどうってことない話ですけど
勘がない環境だとハマりますね。って言うメモです。

20周年を迎えるECサイトをリニューアルした

先日20周年を迎えるというECサイトのリニューアルを仰せつかりました。
そのいろいろを。ブログに。


てるくにでんき

今回担当したのは「てるくにでんき」というWEBサイト。
開設はなんと1996年。90年代ですよ!90年代!!
 
まず、わたくし2016年現在で36歳です。20年っていうと、僕の人生の半分を越える年月なのです。
20年前僕はまだ高校1年生。当時なんとなく音楽(プレーヤーでなく作る方)で生きていけたらなとか
かなり甘い将来観測で生きており、インターネットなんかに感心なんかない時代。
 
今の20代には信じられないかもしれないけれど、
当時パソコンは、一式揃えれば30万弱。
インターネットはISDN回線。つまり、ネットは全て通信時間による従量課金制制。
フロッピーディスクも普通につかわれていた。
もっと信じられないことに、WEBブラウザが有料だったりなど…。
ECサイト制作やコンサル歴は15年近くになりますが、
20年前には「ECサイト」ということばはなく「電子商店」といわれていたことを
最近初めて知ったくらいです。
 
そんな時代に「インターネットならいける」とECサイトをやろうとする。
ほとんど「クレイジー」です。
 


なんでやることになったのか

てるくにでんきの堂園社長と出会ったのは、たしか4年ほど前。
リーマン・ショックやら、Googleを中心としたインターネット社会の再編など
大きな時代の潮流のなかで、さまざまな施策を考えてらしゃったのでしょう、
10年以上前から協力しているクライアントさんとの、
コラボ企画での出会いでした。
 
自分では、正直、堂園さんが僕の何を気に入ったのかは
未だよくわかってはいませんが、
多分野球好きなところが気に入っていただけたのでしょうと勝手に思っていますw
 
紆余曲折もあり、そこから2年ほどあれやこれやで進まない時間がありましたが、
そんな折、堂園さんが、仙台で、震災復興のためのセミナーをされるということで、
普段のぼくは、あまり何かのセミナーのために遠出をするというのは
めったにないのですが、
 
「よくかんがえると、堂園さんと長く話したことがない」
「なんか、わからないけれど、行かなくてはいけない気がする」
 
という気持がわきおこり、仙台に堂園さんの話を聞きに行きました。
本当にそれだけのために仙台に行き、セミナー会場の周辺1キロくらいの仙台しか知りませんw
 
ありがたいことに当時から、協業の打診はいただいていたものの、
ほんとうにぼくでいいのか?というような漠然とした不安を感じていたのは確かです。
まずは、話を聞いてみて。というところから。
 
話を聞いてみると、
「僕の想像を遥かに越える歴史を刻んでいる」
「堂園さんのやりたいことは、極めてはっきりしている」
という確信を得ました。(不安を払拭できたわけではないですが)
 
その後、徐々にいろいろなお話を重ねて、リニューアルを担当したわけです。


リニューアルの作業

リニューアルは、デザインうんぬんの前にやるべきこととして、

  • これまでご自身で作っていた商品DBを紐解く
  • 堂園さんの伝えたい事はなにか?
  • 堂園さんの苦手なことはなにか?

ということをつきつめるところでした。
 
商品ページ数にして10万ページ。
重ねたコンテンツを合わせれば20万ページ近くのデータ。
  
正直、うちはデザイン性では良いとは言えない業者です。
サイトの持ち主が「何を言いたいのか」「何を伝えたいのか」より多くの表現は苦手です。
ですが、そこを1個1個拾い上げることを得意とする業者でもあります。
 
20万ページの言霊を拾いながら、思ったのは、
「20年というのは、重くもあり軽くもある」
ということ。
 
サイト制作者としてではなく、一人の消費者としてそのデータの前に立ってみると
「へぇ!そうなんだ!」とおもうことが押し寄せてくる反面、
「こういう言葉で書けば、もっとわかりやすいのに」ということも押し寄せてきました。
 
こういうのを見つけるのも、僕たち制作者のしごとだろうなと思ったわけです。
 


未来

さて、かくして、WEBサイトはリニューアルされたわけですが、
正直なところ、成功するかの確信は未だにありません。
なぜかというと「売る」のはあくまでサイトマスターである「てるくにでんき」だからです。
リニューアルはあくまで、
てるくにでんきであることを表現するためのステージを作ったに過ぎない。
まるで責任逃れのような書き方かもしれませんが、厳然たる事実です。
 
多くのクライアントさんがおっしゃることの中で、
電子商取引を失敗するクライアントさんが共通しておっしゃることがあります。
 
「売れるようにしてください」
 
「売れる」のか「売る」のか。はたまた「買わせる」のか「買ってくださる」のか。
ここのところから突き詰めなければ、WEBでの商売は厳しいものがあります。
時流の面からの解剖も必要でしょう。「今は売る」「来月は売れる」みたいな形で。
(さすがに20年選手の堂園さんはそのようなことは仰りませんでした。)
 
てるくにでんきは大量の商品をもった零細企業という日本においては、なかなか無いタイプの企業です。
つまりは「小さな巨人」で、小回りが効くが大きなパワーをもっています。
これは僕の考える「売る」「売れる」の観点から見ると、大変にアドバンテージがあると考えています。
 
一般的に、零細企業がとるべき策は、一点集中一騎打ち戦といわれています。
(いわゆる「ランチェスターの第一法則」ですね)
つまり、小さな企業では、一つの策として「売る」市場をつぶしていき、
次に「売れる」市場をつぶして…ということを繰り返ししていく必要があります。
(これはかなり第一法則を曲げて見た「あえての言い方」です。あしからず)
 
しかし、てるくにでんきでは、数の面で圧倒できる「商品数」と「実績(のデータ)」があります。
こうなってくると、頭脳戦など遠距離戦でもやっていける片鱗があります。
(こちらはいわゆる「ランチェスターの第二法則」ですね)
 
零細企業ならではの一点集中で短期計画を考え、大きな枠では、頭脳を活かせるといわけです。
なんとなく両立できそうにみえますが、正直両立できる企業はめったにないです。
僕の個人的な(妄想的なところも含めた)意見ですが、てるくにでんきではできるだろうなと思っています。
 


なんか話がまとまりませんが

兎にも角にも、やり遂げましたので、みんなお祝いしてよ!という投稿でした。
 
なお、今回のECシステム開発にあたり、ベースCMSをご提供いただいた、sugimoto1981氏には一生頭があがりません。
 
現場からは以上です。

NW.JSのPHP版 nightrain

node.jsでネイティブPCアプリを作ることのできるNW.js(旧Node-Webkit)はご存知の方は多いでしょう。
JavascriptというWEBの言語で、ちょっとしたツールを作ったり、デスクトップガジェットを作ったりできるのは、
WEB寄りのプログラマやエンジニアにとっては、嬉しいツールです。
 
で、そんな話をしていると、大体出てくる要求としては、PHPやPerlやRubyで作れないの?って言う要求ですね。
調べてないですが、多分Rubyはありそうです(文化面で)。PerlはPerl/Tkでがんばりましょうや。
PHPは?って探すと、NW.jsのPHP版とも言うべき、nightrainというのがあります。
 
それの話をば。。。


ディレクトリ構成


アプリケーションパッケージを展開すると、こんなディレクトリ構造になっています。
settings.iniでウインドウ状態の定義や、公開ディレクトリ(でいいのか?)の定義をします。
 
定義ファイルを見ると、Macの場合は、Mac標準で入っているPHPを利用するように定義してあるようです。
ということは、相対パスをつかってパッケージングすれば、バージョン違いのPHPを利用したり、
nightrain専用のphp.iniを持ったPHPを使えるということでしょうか。その辺は、未検証ですが。
 


公開ディレクトリ

公開ディレクトリは「www」内で、とりあえずCodeigniterを入れてみたところ、普通に動きました。
普通のWEBサイトのように動いてくれるようです。
__DIR__などのマジック定数もちゃんと処理してくれますし、composerもいけました。
 
まぁPHPなんでマルチスレッドには対応してなかったりなど、悲しいところは
そのままなんですが、広範なライブラリを持つPHPでちょこーっとアプリを作れるのは、
やはり大きいですねー。
 


ところがですね

こんな便利なnightrainなんですが、開発をやめちゃったようで、
プロジェクトページが閉鎖になっています。
 
どうも公開のリポジトリは残っているようなんですが、ビルドがめんどくせぇ。ということで、
Mac版バイナリが見つかったので、
それを共有するために、この記事を書きました。
 
ダウンロードはこちらから
ライセンスは、MITライセンスです。
 
現場からは以上です。

ヤフオクで中古車を買ってみた。

ぼく伊藤は、いわゆる中古車オークションから中古車をひっぱるということができる立場に
実はあるんですが、今回は、以前使っていた車の調子が悪く、
決算期末に差し迫っていたこと、たまたま良い車があった
ということで、ヤフオクで、中古車を買ってみた話をします。


ヤフオクに出品されている中古車

ヤフオクには中古車が出品されているのはご存知でしょうけれども、
出品者で大きく分けて4つの出品者から商品が出されています。

  • 路面店で出店しているようないわゆる中古車業者さん
  • 個人間取引や、買取業者toコンシューマーを仲介する業者さん
  • 個人出品(業者を介さないC2C)
  • 競売(地方自治体の差し押さえ品。公的な金融モノ)

です。
いわゆる中古車業者さんは、かなり車をきれいに調整して、保証をつけたりして、
出品物は信頼性が高いですが、その分高いです。
個人間取引や仲介業者さんの場合は、基本現状渡しになり、瑕疵担保責任については取引ごとに違いますが、
その分安く手に入れることができます。(競売は特殊なので割愛)
今回は仲介業者さんのパターンでした。
 


プジョー207SWのイエロー!


こんな車をヤフオクで見つけました。価格は40万円。
中古車業者で買うといろいろマージンとか修理とかあって60万から70万円でしょうか。
さらにそこから手続き費用と称する何か(後述)を取られて、80から90万円になるのでしょう。
 
これまでぼくは免許をとってから

  • フェスティバミニワゴン(初代デミオのフォード版)
  • ワーゲンポロ6N後期型GTI
  • オペル・メリーバ

という、なんかあんまり人が買いそうにない、輸入車のコンパクトカーを乗ってきまして、
メリーバの後に、国産車に乗ったのですが最初から最後までCVTに慣れないとかあって、
結局輸入車に気持ちが戻り、
プジョーではあまり買われることのないイエローがでてきたということもあり買うことに。
 


ヤフオクで買うときの注意点

出品者が保証をつけているタイプであれば、よほど問題ないとおもいますが、
ヤフオクの場合は、そういった自動車のが少ないです。
ですので、やはり安く買えるからには気をつけなければと言う点はあります。
 
まず第一にほとんどの車体は、現状渡しです。瑕疵担保責任を負って出品している場合もありますが、
路面の中古車屋さんが販売しているような、調整やチェックがなされていないものが多いです。
「現状動いているからOK。その現状を買ってね」
というスタンスです。
 
したがって、一般の中古車屋さんで買うより遥かに試乗や電話での相談が重要です。
メールだけでやりとりして、売る側も買う側も気づかない問題があり、
言い争っている評価もヤフオクでは、あちこちで見ます。
しかしながら、ぼくは買う側の「買う目のなさ」が原因だろうなと思っています。
 
可能なかぎり、試乗しにいき、出品者さんの人となりを知りに行くべきでしょう。
 

今回ぼくは、東京の「一之江駅」まで出品者さんに会いにいった上で、試乗もしてきました。
やはり、出品者さんが気づいていない問題もありました。
そして出品者さんと面と向かって話している間に、出品者さんの素性や、
車体がどのような経緯でヤフオクに出ているのかなど、かなりの部分がクリアになりました。
 
今回ぼくは、

  • 整備記録簿のチェック
  • 事故歴の有無
  • 出品の経緯
  • 出品者さんの素性
  • エアコンチェック

などです。

 
そして、ヤフオクの場合、全国から出品されています。どこから出品しているのかも重要です。
車検付きの車の場合は、とりにいけばよいですが、
登録のない車や車検切れの場合は、手続きを踏んで仮ナンバーで運転して帰ってくるか、
あるいは、陸送ということになります。
 
たまたま今回の出品者さんは、引取でも、陸送でもOKで、
しかも、陸送はほとんど原価で出してくれるとのこと。
今回は後述のとおりとりにいくことに。 
ある程度自動車取引に関して知識をぼくは持っていますが、
取引について知識がない方だと、陸送費を定価とかで請求されるので注意してください。
陸送費の定価と原価の差はびっくりするものがありますので。
 
そしてなにより、名義変更手続きなどは全部自分の責任になります。
中古車業者さんが、手続費用として請求してくるものの大半は、
この陸運局にいく代行費用なので、自分で調べて陸運局に行けば、
それだけ安く中古車を手に入れることができるわけですが
陸運局にいったことがないならまだしも、
車庫証明を自分でしたことがない方は、
残念ながらヤフオクでの取引は向いていないと思います。
 


落札

落札は、通常の出品物と同じです。
たとえ、大きな額の取引であろうとも、
基本ヤフオクは、取引の場の提供なんです。
それ以上でもそれ以下でもない。
というわけで普通に入札して落札です。
やりとりもメールと電話が基本です。
入金は、当然ながら銀行振込やカード支払い。
出品者さんがローンの取次をしてくださる場合もなくはないですが、
ローンが必要な場合は、9割以上は、
落札者さんが銀行などに相談して融資して貰う形になります。
 
自動車について常にオーバーチューンで販売店任せで、
特別なものを買う感覚の方が
未だ多い日本では、この取引はかなり異質に見えるのではないでしょうか。
 


取りに行く

今回はコストを考えて、時間をつくって車体を受け取りに行くことにしました。
いろいろ良くしていただいたので、改めて、出品者さんにもお礼を言いたくてというのもあります。
 
とある日曜日再び東京都の一之江駅へ。
 
受け取りのサインを終えて、さて出発。

 
この時点では、車体には任意保険がかかっていないので、
受け取ったらすぐに近くのセブンイレブンにいき保険をかけます。
24時間500円で保険をかけることができます。
これは「マスト」です!!
 
ただ、これは前述のとおり、登録がある状態で、車検がのこっている車体を買った時のみです。
 


トラブル発生!

東名を名古屋に向けて走っている途中、いきなりセンターコンソールにエンジントラブルの表示!
まじかよ!と思いました。

急遽沼津のプジョーに駆け込んで、調べてもらったら、
このエラーはこの時期のプジョー車によくある誤審らしく、
エンジニアさんに
「細かく見たけど多分なにもないんで、このまま名古屋まで帰ってOKです。
ただ、エラーはエラーなんで、名古屋に帰ったらもう一度点検してください」
と言われた。ほぅ。。。。
エラーは出たままになっているものの、名古屋まで問題なく帰れてしまった。。。
 
エラーが出たことで逆にエンジンが好調であることが証明されたっていう、
なんか皮肉な結果にwww
 


やっぱりか…

このトラブルについてはエラーが出た時から「おそらくなんともないだろう」と思っていました。
この辺については10年近くヨーロッパ車に乗ってきた勘です。
ヤフオクでの取引については、この辺の知識もあったほうがいいです。
 
たとえば先ほどあげたチェック項目に「エアコン」というのがあります。
これはヨーロッパ車に乗っている人ならお分かりだと思いますが、
ヨーロッパ車ではのエアコン用コンプレッサーは日本車にくらべて
かなり壊れやすいのです。買った時点でこわれていることもよくあります。
特にフォルクスワーゲンなんかは、車種によっては、あまりに壊れやすくて、
中古部品や再生部品すら、あまり出回っておらず、思わぬ出費をすることも。

ヨーロッパ車に慣れていないひとは、
ヤフオクでヨーロッパ車を買うのは慎重になったほうがいいですし、
日本車に慣れていない人は、日本車をヤフオクで購入するのは慎重になったほうが得策です。
 
取引直近で、イレギュラーが発生した時に、どうしたら良いかがすぐ判断できないと、
それはすぐ取引の紛糾につながるからです。
前述のとおり、ヤフオクで買うにはそれなりのリスクを背負ってるわけですから、
「買う人としての目」がないなら、買うべきではないです。
 


名義変更手続き


 
戻ってきたら、納税する地域を担当する陸運局にいって名義変更手続きです。
その前にかならず車庫証明はとっておきましょうね。
 
車庫証明は慣れていなくても2時間くらいあれば終わります。
陸運局は慣れていないと3時間くらいかかっちゃうかもしれませんし、
書類をちゃんと揃えられないかもしれないです。
ちゃんと書類を揃えていけば、普通なら1時間で終わるのですが、
いろんな仕組みを知らないと、かなり時間がかかるのは確かです。
 
知識としては役に立つので時間があるならば、ご自身でやることをおすすめしますが、
一応代行業もあります。
地域の行政書士さんにお願いするとやってくれます。
代金は地域などによって差があります。


最後は任意保険をかけて終わり

最後は任意保険をかけておーわり。
 
どうですか?参考になれば。
現場からは以上です。

スト2がクソゲーだったはなし

このブログは2015年「クソゲーアドベントカレンダー」の12/20担当分でございます。
 


まずは自己紹介

わたくし「きよっち」といいます。Twitterアカウントはこれ
アイコンは昔懐かしの任天堂ディスクシステムのキャラクター「ディスくん」。
おー!ゲーマー!
と言われますが、実はそんなことはなく、
生まれてから「ちゃんとやったゲーム」は実は、
CAPCOMのストリートファイター2シリーズ と ストリートファイター4シリーズのみです。
ちょっと意外と言われますが。
 


スト2

今ではアーケード(いわゆるゲーセン)はもとより、
ネット回線の進化で、コンシューマーゲーム機でも、
見知らぬ人の乱入による対戦型格闘ゲームは当たり前に存在しますが、
そのフォーマットを作ったのが、いわずとしれた、
カプコンのストリートファイター2です。
 
2と名が付いている通り、1も存在しますが、
ゲームに2ほどの躍動感もなく、難解さもあるものだったので、
人気こそ出ましたが、爆発的でもありませんでした。
なお、カプコンが人気を爆発させた
他のゲームには「ファイナルファイト」というゲームがありますが、
これは「ストリートファイター’89」として開発をしたものの、
市場調査担当のカプコンUSAにNGを食らって、
別ゲームとして再出発した経緯があります。
 
スト2は、躍動感にあふれ、たくさんのキャラクターを使えること。
ゲーム性はちょうどいい難易度で、かつ明快。
ちょっとのゲーム筐体の改造で、見知らぬ人同士の対戦まで実現したことが、
爆発的な人気の要因となりました。
 
爆発的な人気にあやかり多くの家庭用ゲーム機に移植がされましたが、
当時の家庭用ゲーム機は、現在と違いアーケード用プラットフォームと
かなりの処理速度の違いや、メモリ容量の違いがあり、
移植性がいまいちなものが多かったので、
この記事では本家本元アーケードのスト2で話をすすめます。
 
またスト2シリーズでは、

  • 無印
  • ダッシュ
  • ダッシュターボ
  • スーパー
  • スーパーX
  • ハイパー
  • HDエディション(海外のみ)

というマイナーチェンジがあり、それぞれにバグフィックスバージョンがありますが、
全部を網羅するのは難しいの特にクソだったところを書いていきます。


ぼくはバルログ使い

スト2ダッシュがリリースされたのが、
ぼくが小学校5年生の終わりごろだったと記憶しています。
スト2無印は少しやっていましたが、本格的にやりはじめたのが、スト2ダッシュ。
そこからおおよそ25年間。
スト2シリーズでもスト4シリーズでも一貫してメイン利用キャラはバルログです。
余談ですが。
 


人気爆発なのにクソゲー?

さて、そんな世の中をブームの渦に巻き込んだスト2ですが、
クソなところがあるのか?
というとYESです。
 
というか、相当なバグの集まりでした。
  
例を上げると
https://www.youtube.com/watch?v=64mLwH1TsXw
こちらの動画の冒頭。
リュウという左側のキャラが、アッパーを出した後に波動拳という必殺技をつなげています。
リュウというキャラのアッパーという技は、与えるダメージが多い代わりに
技の出し入れが大振りになって技の出際と出したあとに、
大きく隙ができるという技なのです。
にもかかわらず、波動拳という技へつながっています。
 
波動拳は、特定コマンドを入力することによって発生する「必殺技」です。
特定の技と、特定の必殺技は、必殺技のコマンドを素早く入力することで繋がるようになっています。
これを「キャンセル必殺技」などと称し、スト2シリーズを元祖として、
後に生まれるほとんどの対戦格闘ゲームに導入されています。
 
が、スト2では元々このキャンセル必殺技は、狙って生まれたものではなく、
ゲームの難易度を下げるために、必殺技コマンドを入力しやすくしたためのバグでした。
カプコン曰く、テスト段階でこのバグには気づいていたけれども、
ゲーム性が広がるので残した「副産物」だそうです。
 
前述のとおり、これは狙って生まれたバグであったにもかかわらず、
それが独立して一つの概念となり、多くのゲームに影響をあたえていったわけです。
 
つまり何をいいたいかといいうと、スト2は確かにおもしろいゲームだが、
同時に「バグの塊」というクソゲーの概念ももっていたというわけです。
 
それを少々お話したいと思います。
 


ゲームバランス

スト2では多くのキャラクターが活き活きと画面の中で表現されており、
プレーヤーの性格や、プレーヤーの思惑をキャラによって反映できるところが
とてもおもしろい面でした。
 
が。しかし、それは諸刃でもありました。
どういうことかというと、ひとつのバグが見過ごされることにより、
1体のキャラが圧倒的な強さをもってしまったり、
逆に圧倒的な弱さになってしまうということでした。
 
特に有名なバグがこれ
https://www.youtube.com/watch?v=dclJsFQu1SI
初代スト2にあったバグで、ガイルというキャラのバグです。
問答無用で相手キャラを投げることができたり、
相手キャラが何もできない状況をつくったりと、
とまぁひどいバグでした。
元々ガイルというキャラが、使いやすいわりに、技性能が異常なほど高く設定されていて、
かつ、このバグですから、ゲーム性が大きく損なわれた、
まさにクソゲーでした。
 
スト2シリーズは、こういったゲームバランスを調整していくごとに、
新バージョンができていったと言って過言ではありません。
 


小さなバグがゲームバランスを崩すこともある

スト2が流行っていた頃にアーケード、つまりゲームセンターのゲームの攻略雑誌といえば
「ゲーメスト」です。誤字誤植の多い雑誌として有名なアレです。
 
そのゲーメストが発見した、小さなバグから大きくゲームバランスをくずしたという歴史もあります。
https://www.youtube.com/watch?v=JVzhl2AYusY&start=170&end=178
それがこちらの動画。再生スタート位置から3つのキャラの連続技を紹介しています。
いずれの連続技も、しゃがんだ状態からのキックから、立った状態のパンチへ移行しています。
これは通常動作では繋がらないようになっているのですが、
特定状況においてつながってしまうという「バグ技」なんです。
 
たかがそれくらいと思うかもしれませんが、
当時のスト2は使い手のレベル差に対する考慮はほとんどされておらず、
この技がつながってしまうことによって、
キャラのHPが半分以上のこっていたとしても
一気に死亡に持っていけるほど脅威なバグ技でした。
このバグ技を持っていないキャラを使うユーザーに対しても脅威なら、
初級者にとっても脅威だったのです。
 
これが故にスト2ターボの頃にはユーザーが固定化してしまっていたのも事実で、
このあたりも「クソゲー」といって過言ではないものでした。
(実際のところそういった面を打開するために生まれたのがスーパースト2でした)
 


その他のバグ

その他詳しくのバグは
http://games.t-akiba.net/sf2/bug.html
こちらに表があります。
 
そしてこちらが、当時小学生のぼくがゲーセンでやらかしてしまったバグ
https://www.youtube.com/watch?v=85l1ox5JlEg
このバグを発動すると、永久ループが発生して、電源を落とさないと戻らないものでした。大顰蹙です。
 


それでもこよなく愛されたスト2

スト2が生まれて、そして多数のバグが生まれてから、
対戦格闘ゲームの開発というのは、ゲームバランスを作り上げる世界になりました。
対戦格闘以外のゲームが、世界観を作り上げていくことに苦慮しているのとは、
全く別のアプローチです。
現在稼働中のストリートファイター4シリーズと、
2016年2月18日発売のストリートファイター5シリーズでも、
同様です。
 
スト2流行当時は、スト2クローンのようなゲームがたくさん生まれました。
そういったゲームの中で好きだったのが
https://www.youtube.com/watch?v=Az84v21uv7w
こちらの大江戸ファイトですが、
そりゃもうひどいゲームバランスで、それなりに面白かったですが、
シリーズとしては続かないよねぇ‥という出来だったわけです。
 
スト2という「クソゲー」は、
対戦格闘型ゲームの雛形をつくったという功績とともに
クソゲー要素を多分に含んでいることが、
対戦格闘型ゲームの歴史を語る上で重要なわけです。
 


最後に

「クソゲー」は賞賛に値する称号です。
だれもやらないゲームには「クソゲー」という称号はつきません。
 
ぼくは愛着をもってスト2を「クソゲー」と呼びます。

はつこいのはなし

この記事は2015年初恋アドベントカレンダーのために書いた記事です。
 
昨日までが、GOUTENさんの3部作で、そのあとってことで強烈にやりにくいですが、まぁ書いてみます。
 
すっごい昔のはなしで、結婚しているいま、妻にも申し訳ない思いで書きます。
 


はつこい

えっと、みなさんは初恋っていつくらいなんですかね。
幼稚園?小学校低学年?中には18才なんていうお嬢様もいるでしょう。
 
ぼくの場合「これなんだ?」ってなったのが、小5のはじめ。
周りの人の話を聞く限りこれが恋愛ってやつだと気づいたのが、小5の夏です。
小学校ずーっと同じクラスで、
ずーっとぼくが男子の名簿順筆頭、彼女が女子の名簿順筆頭という間柄で、
要するに、学年が上がると数ヶ月は必ず席がとなりという関係でした。
 


彼女は

彼女は頭脳明晰、スポーツもできて、
見た目のことは小学校のときはあんまり気にしてなかったけど、
今になって思えば、中の上?(なんて上から目線なんだw)。
決して底抜けに明るいわけではないけれども、心優しい女の子でした。
小1のときは、最初から同じクラスだったわけでなく、
親の転勤で小1の夏休み明けに、海外から帰ってきた帰国子女だったと記憶しています。
 
まぁですね要するにですね、高嶺の花なんですわ。
 
でも、ぼくはそういう世間的によしとするところを好きだったという記憶はなく、
いつもちかくにいて感覚がとても合うという感じだったという記憶はしています。
 


ところがですね。

小学校5年くらいになると、林間学校やら修学旅行やらで、
泊まりがけでどこかに行くという学校行事も出てきます。
 
そこであるのは「ねぇねぇだれがスキなの?」みたいなやつだよね。
男女それぞれに。
 
そこでわかったことが、どうもいわゆる「両思い」ってやつだったわけです。
 


当時のぼくは

当時のぼくは、いわゆる肥満児で、小学生のころの貴乃花親方のような体型。
いまでもそうですが、きわめて運動神経はにぶかったです。
今のぼくに照らし合わせて考えると、
これもまたウソのようなはなしかもしれませんが、
極度にシャイで家から出るのがイヤで、
特定の誰かとしか遊びたくないという感じのこどもでしたね。
小学校の花型男子といえばドッジボールができてかけっこの速い男の子。
ぼくの地元でも、例に違わずで、そういう男子がモテていました。
が、その中でぼくが?という感じも。
いまになっても不思議で仕方ないです。
 


でもですね

ぼくの地元はとっても田舎。
名古屋市のベッドタウンとして発展している町ですが、所詮は田舎。
しかも25年も前のはなし。
小学生の両思いなんていうのは、とてもセンセーショナルなんです。
 
汚いはなしですが、よく小学生にうんこをする権利はない。なんてはなしがありますが、
それに近いものがあり、
かなりからかわれました。。。
 
彼女も相当つらい思いをしたと思います。
ごめんなさいを何回言ったら良いかわからないくらいです。
 


ぼくは救われた

いきなりはなしが飛びますが、ちょうどその頃。
ぼくの実家は破綻しました。父のお店が借金まみれであることがわかりました。
ぼくの母は元来、動揺することはなく、かつ奔放で、いつでもどっしりと
ぼくたちの前に立ちはだかる母なんですが、
あの頃は、母は動揺し、時にはつらい思いを口にすることもありました。
ぼくの仕事におけるコンサル方針はこの頃の経験をもとに考えるくらい、
たった35年しか生きていませんが、とても大きなできごとの一つです。
 
両親は離婚するのか?家を出ていかなければならないのか?
を考えたり、
何も知らずにとった電話が借金の取り立ての電話だったりと。
 
まぁおおよそ普通の小学生では体験できないような苦痛です。
小学校中学校の頃の、諸先生方にはこの点をご考慮いただき続けて、
いまでも本当に感謝の念しかありません。
 
おっと、閑話休題。
こんな時期に、その女の子のことをはじめて「好き」と思ったのです。
偶然なのかなんなのか、彼女も好意をもってくれていたようで、
ぼくの小さな変化に気づいてくれていました。
極力明るく家の話題は学校では話していませんでしたが。
どういうことで変なのかはわかっていなかったようですが、
事あるごとに声をかけてくれたり、家に来てくれたり、
妹にまで気を使ってくれたこともありました。
 
ほんとうに救われましたよ。
ありがとうも何回言っても感謝になりません。
 
 


例に違わず

初恋というのは実らず終了するものです。
それで良いのです。
 
どうやら彼女は優秀な大学を卒業し、有名企業に入ったらしい話は聞いています。
きっと幸せな家庭生活をしているか、
はたまたバリバリのキャリアウーマンとして活躍しているかでしょう。
 
いまは残念ながら、ご実家も地元を離れたようで、
1人2人はさめば所在はわかっているものの、
直接の連絡はとれないため、詳細は不明です。
 
ただただ、当時の思いを書くために、この記事。
いつかどこかで届けばいいですが。
 

フリーランスが新卒で一本釣ってみた

どうもこんにちは。きよっちこと伊藤清徳と申します。
 
この記事は2015年フリーランスアドベントカレンダー6日目の記事です!
 
昨年は、プロレスのフリーランサーのことについてかいてみました。今年はもうちょっとまじめに書きますすみません。


まずは自己紹介

まずはわたくしが何をしているかという話から。
普段は、主に電子商取引(EC)のコンサルティングと、EC向けなシステム開発を生業としていますが、
その他チラシプランニングやら、店舗プロデュースやらと、「人がどこかのお店に行く」ということを
クライアントさんと一緒にいっしょにやってる、
マーケッターなんだか、WEBプロデューサーなんだか、WEBプログラマなんだか
よくわからない立場で生きている人です。
 
2011年4月に個人事業を開始し、今に至ります。
「伊藤くんさ。給料高いし、出ていこうか」と
まさかの宣言を前職社長より受け、
そして開業にむけていろいろやっているなか、
2011年3月あの未曾有の災害を通りぬけての独立でした。
まぁこのお話はどこかで。
 


わが店は2人体制に

わたしは「春芳堂(しゅんぽうどう)」という屋号で仕事をしておりまして、
2015年4月。春芳堂は二人体制になりました。
しかも体制がちょっと風変わりでして、新卒を専属委託外注として採用しました。
(この新卒を以下「新人くん」と書きます。)
 
なぜ雇用でないのか、なぜ新卒なのか。などその辺を書いていこうと思います。
 


新人くん


左が新人くん。21才。
わたし。ちょうど開業準備中より、某専門学校にて、
PHPとかをおしえていまして、彼はその生徒です。
2014年夏頃からアルバイトにきてもらっていて、そのまま採用となったわけです。
 
はじめて人を使うという立場になるわけで怖さはありましたが、
一人でやりつづけるよりはずっといいなーと思って、来てもらいました。


専門学校はよいリクルートの場

前述のとおり専門学校の生徒からの一本釣りをしたことがおおきなきっかけですが、
これもアルバイトながら専門学校という場所に携わっていなければできなかったことです。
正直なところ、専門学校の臨時講師としてもらえるフィーは決っして良いものではないですが、
若い人に突っ込まれながら、冷や汗を書きながら教えるというのは、
叱られる立場にないフリーランサーにとっては貴重な場所でした。
30を超えてしまうと、20代前半の人たちが言ってることに聞く耳をもたず、
なにかというと見下してしまいがちなものですが(つまりおっさん化)
講師をやるとなるとそうはいきません。
生徒たちの人となりを理解しながら、会話をして授業をすすめるので
そのうちには「こいつとなら仕事やってみたい」というやつもでてくるわけです。
 
わたしの事業である春芳堂はどちらかというとジェネラリストとしての動きを
クライアントさんから求められることが多く、
どこかに突出した技術、たとえばデザインが凄いとか、すごいエンジニアだとか、
そういうのは不要で、満遍なく俯瞰しながら、どんな人とでも一定の会話が必要です。
(自分ができているかどうかは置いておいて)
うちの新人くんは、いまのところ、何かに専門化したような感じでもなく、
かといって、大きな弱点がなかったことが近くにおいてみようと思った所以です。
 
またもう一つの見方として、自分のリクルートだけでなく、
様々なタイプのクライアントさんと直接のやりとりを行うフリーランサーにとっては、
クライアントさんの求人に合う新卒を、マッチングすることもできちゃったりします。
「伊藤くんさーこんな人いない?募集してるんだけど」
「あーちょうどいい子いますよ!」
なんていう感じですね。
これひとつで結構クライアントさんとの距離をぐっと縮めることもできたりするわけです。
 


ところでなんで雇用じゃないの?

フリーランスという言葉のイメージで言えば雇用のイメージはないかもしれませんが、
個人事業でも雇用はもちろんできます。正社員やパートなど。
では、なんで、雇用にならなかったかというと、
正直に言ってしまえば、雇用にかかる費用が大きいこともありますが、
もう一つが、春芳堂の将来展望と、新人くんの将来展望には大きなズレがあるからです。
 
わたしたちフリーランサーは、事業主個人の考えを色濃く反映した事業展開をしていくことが、
生き残る唯一の道です。決めてくれる人がいるわけでもなければ、決めなければ何もできない。
そのへんは去年の記事にも書きました。
 
フリーランサーが一人くらいを雇うとなると、
やはり、上下関係はあれど、関係は1対1なんですね。
つまり道は一筋に通っていないとうまくいかない。
 
新人くんは元々は絵を書いたりイラストレーションを作ったりなど、
WEBとは関係のないところの技術が長けている人物です。
ですが、大変言い方が悪くなってしまうけれども「器用貧乏さ」により、
WEBが「できてしまっている」という感じで、
将来はきっとWEBを自分の表現の手段として利用するんでしょう。
わたしきよっちには、もともとクリエイティブな感覚はなく、
クライアントさんの表現のお手伝いにWEBを利用しています。
ここには大きな違いがある。
雇用してしまえば、うちのやり方に染まってもらうしかなくなってしまうので、
1対1の両個人事業での関係でスタートを切りました。
 


それでも見える世界がかなり変わる

そんな感じでふたり体制の春芳堂が今年からはじまるわけですが、
ふたりになると見える世界もだいぶ変わるものです。
フリーランスがひとりで仕事をする分には良くも悪くも自分の裁量です。
っていうか、ひとりでやってる分には
良くも悪くもの「悪くも」が存在するのに、目をそらしている部分があります。
それをまざまざと見せつけられました。
 
クライアントさんとの関係やら、結果の求め方、
結果の明文化やら逆にプロセスの明文化など。
 
フリーランスは、作業に専念するだけでなく、
自分自身のマネジメント(将来展望も含め)が必須の働きかたです。
そりゃそうです。自分でしか何も動かせないんですから。
でも、まぁ人ですからねぇ。自分に甘えますよ。
で、そのうちそれに慣れていってしまう。
 
そんな自分をまざまざと見せつけられました。
転換が必要なほど、大きく舵を切ることはないですが、
方向の修正は必要だと気付かされました。
 


なんか…

なんかとりとめのない文章になってしまいましたが、
フリーランサーだからといって一人でいることがいいわけではないと思ったので、
今回このことを記事にしてみました。
 
参考にはならないかもしれませんが、こんな変わった奴もいるんだなと思ってくれれば。
 
あーそうそう。2015年は沖縄県那覇市に事務所を開設しました。
この記事も沖縄で書いています!沖縄県のフリーランスさん会いましょう!

本気でやってみろよ同窓会

去る2015年10月18日に、中学の同窓会がありました。
5年に一度同級生全員を対象とした同窓会で、
僕の代では同級生300人以上を対象とした同窓会です。
卒業校は愛知県の「ダイナマイトシティー」知多郡武豊町の武豊中学です。
(大爆発事故を起こす程の火薬/爆薬工場があるのでダイナマイトシティーです)
 
一般的には同窓会というと数十人くらいを目標にした居酒屋をつかったこじんまりとしたものですが、
僕たちは、同窓生半数150人程度の出席を目指している大掛かりなものです。
ちょっとその話をしようと思います。
 


やると決める中心人物の存在

fixer平山氏
これが僕たちの同窓会のフィクサーである平山氏です。
(本人の希望により顔は半分隠しています)
 
僕と彼との関係を話しておくと、
彼とはたしか10才くらいからの付き合い。
実は通っていた小学校は違っていたけれども、
どういうわけか仲良くやってかれこれ25年くらいです。
親友というよりは、理解者というほうが正しいそんな関係です。
 
平山氏は実直な性格で、何事も理路整然と、首尾よくこなし、
やると思ったことは、人をうまく使いながら、最後までやり切る男です。
(僕とは色んな意味で正反対の人物かもしれません)
 
5年に1回となった僕たちの同窓会の発端は、彼の発案でした。
(実際はやろうという話は持ち上がってましたが、実際にやるといったのは彼)
 


やるからには本気で

第一回目の開催時には、平山氏の首尾良い準備により、
全8学級あったクラスのほとんどのクラスから、
実行委員メンバーを出すことができました。
これにより、スタート時点からある程度の人数の出席は確保ができました。
 
加えて実行委員のメンバーを少し多めにしたことで、
実家への電話作戦により、つながりを保っていない同級生への連絡も、
大変ながら効率よくできました。
 
とはいえ、いきなりの実家への電話で怪しまれることも多かったようで、
実行委員メンバーの苦労がうかがえますが、
こんな経験、他ではなかなかできることではないので、よかったのでは。
 
本気の人集めをしたら、110人を越える参加者をあつめることができました。
残念ながら2015年の今回は、用事が重なることが多く
その人数には届きませんでしたが、それでも80人は来てくれました。
当初の努力がなければ、今回の参加者はもっと少なかったのでは?と思います。
 
というかそもそもにおいて、5年に1回全同級生を対象にということ自体がなかなかないので、最初スタートを切ったところの本気が全てでしょう。
 


平山氏曰く「場所だけどうにかできれば」

平山氏がフィクサーとして数回実行してきて言えることは
「場所だけどうにかできれば」とのこと。
 
僕たちの場合は武豊町の劇場「ゆめたろうプラザ」を利用しています。パーティー会場として向いているわけではないですけれども、その分人を入れるのにちょうどいい広さをもっていて、劇場なので、舞台設備が整っている分、歓談だけで終わるのではなく、様々な仕掛けで、同窓生の交流の場にできます。
 
その分料理の提供にはこまることが多いのですが、実行委員と出席者のあたりだけつけることができれば、その人脈をつかってどうにかこうにかできます。
 
鯛がいますよ!
僕たちの場合はなんと鯛の尾頭付きでございます。
人脈を通じて、知多郡阿久比町にある「徳川」様にご協力いただきました。
 
実行委員ひとりひとりや、平山氏が何か特別な能力をもっているかといえば、
失礼な言い方かもしれないですが、
特別なにかすごい権力や人脈をもっているわけではありません。
ただただ「やろう」と思っただけです。
 


参加者にはすごいひとも

毎回ぼくたちが参加者を集められるだけ集めてよかったと思うのは、
やはりたくさんの人がいまどうしているのかを知ることができるから。
 
結婚は?お子さんは何歳になった?みたいなことから、えっ!?お前そんな仕事してんの?すげえじゃん!ってことまで。
 

  • 経済産業省を退庁したあと弁護士になったやつ
  • ゲームアプリをガンガンつくってるやつ
  • 有名スウィーツ店のオーナー夫人
  • 母校の中学で教師やってるやつ
  • え?君あいつと結婚したの?
  • そっか東京にいるのか!え?それ僕がいつも出張で行くとこのすぐ近くじゃん

 
などなど。気持ちが動かされることが、たくさん詰まっています。
 
今回の同窓会に来てくださった、恩師の先生のひとりが
「ちょうど僕が君たちの担任だったときは、
 君たちの今の年齢より若かったはず」
と言っていました。そうか…そうなれば、これだけの人数が集まれば、
いろいろな人が出てくるもんです。
 
そういうことに触れる機会がないというのは、
なんとなくもったいないなと思ったわけです。
 


で、ところで、有名スウィーツ店って?

同級生の女の子が、愛知県の瀬戸市と尾張旭市にある「栄泉堂(EISENDO)」のオーナーとご結婚され、旦那様と二人三脚で頑張って、ヒット商品を出しています。

http://tabelog.com/aichi/A2303/A230302/23009411/
http://tabelog.com/aichi/A2303/A230302/23050872/
 
おっと!尾張旭のお店のほうは、僕のクライアントさんの「ティーズリンアン」さんの競合じゃないかw
 
昔は、この女の子をいじって遊んでいたものですが、、、なんかごめんなさいです。
そんな反省も同窓会ならでは。


で、あんたは何したのよ?

実は僕は、同窓会実行員のメンバーではありません。
が、僕はあまりコミュニケーションを取るのが得意なほうではなく、
そんなことを知ってか平山氏が、
エンドロール作成などの役割を与えてくれます。
さすがですね。
 
当初は作成をしておいたエンドロールをDVDで流す形をとっていたのですが、
今回は、その場でとった写真をエンドロールにいれて流すという、
結婚披露宴でよくあるアレの方式を採用しています。
 
おいら
 
同窓会でこんな写真を残せるのも平山氏のおかげでしょう(仕事してる姿とかわんねぇじゃねぇか!というツッコミはしないでください。
 


人生やったもん勝ちだぜ

もちろん大変は大変ですよ。それでもやったもんがちだぜ人生は。
みんな本気の同窓会やろうぜ。
(というわけで小学校のやつも再来年位にやってみたいな)
 


参加してくれた同級生のみんなへ

参加してくれた同級生もきっとこの記事をみていることでしょう。
今回はどうでしたか?みんなと話せましたか?あの時好きだった、あいつと話せましたか?先生と話せましたか?ぼくは大体できたと思っています。
次は40歳になる2020年を予定。そのときもぜひ来てね。


追伸

優良物件である、繰り返し出てきている平山氏の嫁候補をさがしております。
どなたか、いらっしゃいましたら。

WordPressに無理やりYii2を入れてみた。

PHPerの悩みどころっていうところで、
WordPressはWordPressのお作法があって、PHPの開発手法とは別だったりとか、
WordPressはMVCでなかったり、とか、スカッフォールディングあったらいいのにとか。
いろいろ悩むのである。
WordPressを拡張したり、プラグインをつくったりというのは、
WordPress使いが思うより、遥かに大変なのである。。。
 


フレームワーク使えたらなぁ

とはいえ、WordPressベースの案件というのはかなり数はある。
さてどうしたものか。
 
僕は普段Yii、Yii2というフレームワークをよく利用する。
http://www.yiiframework.com/
日本ではあまり使われないのだけれども、、
(CakePHPとか、Laravelがよく使われるのかな)
スカッフォールディングが非常に使いやすい、
既存のライブラリに頼らず、しっかりとチューニングしている、
なによりモデルの仕様が非常にわかりやすい。
などの理由でYiiを好んで使っている。
余談だが、日本における有名なYiiの使い手さんは田中ひさてるさんです。
 
閑話休題。
 
WordPressベースの案件にしても、何か簡単にデータベースの管理ができるといいなぁというのが、
PHPerの本音だったりするのでは…。
 
というわけで、どうにかしてみようと思った次第。
その話をしましょう!


Yii1.x系ならプラグインがある!

http://cornernote.github.io/yii-embed-wordpress/
YiiをWordPressのプラグインとしてインストールできるようにしてみようという試みのプラグイン。
うん。すごい。
 
使ってみた。そのまんまではスカッフォールディングなどは使えず。ちょこっと改造が必要。
それについては今度どこかで。
それでもYii1系は非常に見通しが良いフレームワークでPHP5.1.0以降をサポートしている。
この点においては、有用だと思う。
 
ただし、このプラグイン自体がメンテされていないのと、
Yii1.x系も公式には2015年末でサポートを切る予定(セキュリティ面での調整は当面続く)なので
その辺りを十分に認識した上で、利用していく必要がある。
 
やはりYii2でいきたいね。


Yii2でやる!

Yii2でやる!俺はやる!!と決めた。

どうしよう。Yii1のプラグインのようにやっても良いが…簡単ではない…
で、考えた、テーマディレクトリにインストールしたらどうか?
調べたら、codeigniterでやっている人がいた。

なるほど!single.phpなどindex.php以外のテーマファイルがなければ、自動的にindex.phpが、まず呼ばれる。
多くのフレームワークもindex.phpを起点としてルーティングしているので、
そのことを利用すれば、フレームワークをテーマディレクトリにインストールすることはできる!


テーマディレクトリにYii2をインストール

今回は、twentyfifteenテーマをコピーする形で「yii2」というテーマを作っていくことにしましょう。
子テーマで作るなどやり方はいくつかありますが、学習のためということで。
 
下準備として、WordPressをインストール後、
パーマリンク設定もGETパラメータを不要とする設定にしておいてください。
 
まず、wp-content/themes/yii2ディレクトリをつくります。
 
それでその中にYii2をインストールしますが、Yii2はcomposerでインストールします。
WordPressユーザーにはもしかするとcomposerは馴染みがないかもしれません。
composerはPHPのライブラリなどのパッケージをインストール管理をする仕組みです。
最近はアプリケーションのコアをcomposerで提供するなど利用が進んでいます。
Yii2など最近のフレームワークではインストールをcomposerでインストールすることを推奨することが多いので、
覚えておいて損はないでしょう。
 
というわけで、yii2ディレクトリを黒い画面で操作することになります。
 
まずはcomposer自体のインストールを。(Windowsの場合はまた違うの注意)

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

 
つぎにYii2をインストール

cd wp-content/themes/yii2
composer global require "fxp/composer-asset-plugin:~1.0.0"
composer create-project --prefer-dist yiisoft/yii2-app-basic .

 
つぎ、WordPressでは、テーマの構成として

  • index.php
  • style.css
  • functions.php

を最低限必要なファイルとなっています。
index.phpは、YiiによってインストールされているのでOKですから、
style.cssとfunctions.phpをtwentyfifteenフォルダからyii2フォルダにコピーします。
 
Yii2のインストール初期値では、
webという名前のディレクトリを公開ディレクトリして想定していますので、
構造を変更します。
wp-content/themes/yii2/web/
ディレクトリ内の各ファイルを
wp-content/themes/yii2/
ディレクトリへ移動し、
wp-content/themes/yii2/web/
を削除します。
 

これで「インストールの作業」は終了です。
ここからは「設定の作業」です。


style.css

WordPressでは、テーマ名などをstyle.cssの冒頭コメントから取得する仕組みになっていますので、
まずstyle.cssを変更しましょう。

/*
Theme Name: Yii2
Theme URI: http://agilmente.com/
Author: the Kiyonori Ito
Author URI: http://agilmente.com/
Description: Yii2 on WordPress Test!
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: black, 
Text Domain: Yii2

This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned with others.
*/

冒頭をこのように自分のテーマのものとして書き換えます。
 
OK!NEXT!


functions.php

とくにやることなし!
OK!NEXT!


index.php

index.phpにはちょっと仕掛けが必要です。

  • yiiの公開ディレクトリを変更したための書き換え
  • WordPressがmagic_quotesを使うことを前提としている

特に後者が厄介で、PHP5.3では非推奨となっていますが、WordPressのお作法としては必須で、
WordPress自前のmagic_quotesがグローバルに影響を与えています。
(この辺が WordPress ≠PHPなわけなんですが)
 
というわけで、これを回避しましょう。

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/config/web.php');

//wordpressのマジッククォーツを回避
$_GET = stripslashes_deep($_GET);
$_POST = stripslashes_deep($_POST);
//stripslashes_deep($_REQUEST);//リクエスト全体も必要な場合。

(new yii\web\Application($config))->run();

このように書き換えます。

OK!NEXT!


config/web.php

Yii2の設定ファイルを変更します。
 
まず、$config[‘components’]に

        //ショートカットURL
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
                '' => 'wordpress/index',
            ],
        ],

を追加。デフォルトインストール状態では、Yii2はPrettyUrlになっていませんので、これを有効にします。
また、一旦どんなURLだろうとも、wordpressというYii2のコントローラーにいれてしまう設定をします。
これについては後述。
 
次に、同じく$config[‘components’]に

        //アセットの場所を設定
        'assetManager' => [
            'basePath' => get_template_directory() . '/assets/',
            'baseUrl' => get_template_directory_uri() . '/assets/',
        ],

を設定します。
これは、Yiiが認識するwebrootと、実際のYiiのインストールディレクトリにズレがあるのを修正します。
 
次、$config[‘components’][‘request’]に

    'enableCsrfValidation' => false,

を設定します。いまのところまだ研究中なんですが、Yii2のCSRF対策がうまく効かなくなるので、自動化は中止します。
必要であれば自前のヘルパを用意するのがよいでしょう。
 
OK!NEXT!


config/db.php

データベース設定です。これはWPの設定を引き継ぎたいところです。

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHARSET,
    'username' => DB_USER,
    'password' => DB_PASSWORD,
    'charset' => 'utf8',
	'tablePrefix' => $wpdb->prefix
];

このように設定します。WPの定数とプリフィックスを取得して設定すればOK。

OK!これで設定は完了です。
次に必要なのはコントローラーの設置です。


controllers/WordpressController.php

controllersフォルダの中にWordpressController.phpを作成し

namespace app\controllers;
use Yii;

class WordPressController extends \yii\web\Controller
{
    public function actionIndex()
    {
		//ルーティングを書き換える
		$route = $this->checkMethod();
		if( $route !== FALSE )
		{
			return Yii::$app->runAction($route);
		}
		return $this->wp();
    }
	
	// ----------------------------------------------------
	/**
	 * WP用の外出し
	 */
	protected function wp()
	{
		
		if ( is_robots() ) {
			do_action('do_robots');
			return;
		}
		else if ( is_feed() ) {
			do_feed();
			return;
		}
		else if ( is_trackback() ) {
			include(ABSPATH . 'wp-trackback.php');
			return;
		}
		else if ( is_404() ) {
			return $this->renderPartial('404' );
		}
		else if ( is_search() )
		{
			return $this->renderPartial('search' );
		}
		else if ( is_tax() )
		{
			return $this->renderPartial('taxonomy' );
		}
		else if ( is_home() )
		{
			return $this->renderPartial('index' );
		}
		else if ( is_attachment() )
		{
			//remove_filter('the_content', 'prepend_attachment');
			return $this->renderPartial('attachment' );
		}
		else if ( is_single() )
		{
			return $this->renderPartial('single' );
		}
		else if ( is_page() )
		{
			return $this->renderPartial('page' );
		}
		else if ( is_category() )
		{
			return $this->renderPartial('archive' );
		}
		else if ( is_tag() )
		{
			return $this->renderPartial('archive' );
		}
		else if ( is_author() )
		{
			return $this->renderPartial('author' );
		}
		else if ( is_date() )
		{
			return $this->renderPartial('archive' );
		}
		else if ( is_archive() )
		{
			return $this->renderPartial('archive' );
		}
		else if ( is_comments_popup() )
		{
			return $this->renderPartial('comments_popup' );
		}
		else if ( is_paged() )
		{
			return $this->renderPartial('paged' );
		}
		else
		{
			return $this->renderPartial('index' );
		}
	}
	
	// ----------------------------------------------------
	/**
	 * コントローラーメソッドの存在チェック
	 */
	private function checkMethod()
	{
		$pathInfo = explode( '/', Yii::$app->request->pathInfo );
		$controllerList = [];
		while( count($pathInfo) > 0 )
		{
			$controllerList[] = array_shift( $pathInfo );
			$method = $pathInfo[0];
			$controllerListSet = $controllerList;
			$contorollerName = array_pop($controllerListSet);
			$contorollerName = ucfirst( $contorollerName ) . 'Controller';
			
			$controllerFile = 
				Yii::getAlias('@app')
				. '/controllers/'
				. (
					(
						empty($controllerListSet)
					)?'':implode( '/', $controllerListSet ) . '/' 
				  )
				. $contorollerName
				. '.php';
			$method = $pathInfo[0];
			if( $method == '')
			{
				$method = 'index';
			}
			
			if(file_exists($controllerFile))
			{
				$space = 'app\\controllers\\' . $contorollerName;
				$setMethod = 'action' . ucfirst($method);
				$methodExists = method_exists( $space, $setMethod );
				if( $methodExists === true )
				{
					$return = implode( '/', $controllerList ) . '/' . $method;
					return $return;
				}
			}
		}
		return false;
	}
	
	// ----------------------------------------------------

}

と書きます。
ここでは何をやっているかと言いますと、上述のweb.php設定の中で、
いかなるURLであろうとも、一旦wordpressコントローラーのindexアクションを呼ぶように設定しています。
このアクションの中で、WPの投稿であればsingle.phpなどを呼び、そうでなければ、
Yiiのコントローラーアクションを呼ぶという設定をします。
YiiではHMVCというデザインパターンを採用されており、
コントローラアクション内から別のコントローラアクションをコールできるようにしています。
 
そのことを利用して

      URLからYiiのコントローラーアクションがあればHMVCコール
      WPのページならWPのテンプレート

という順番でルーティングを処理するようにしています。
ここのところで少々速度を食われてしまうわけですが…
 
現時点ではGETパラメータをどうするのかという点については、
考慮していません。
ここについてはURL構造の問題ですので、続編をお待ちください。
最低限YiiがWPの中で動くことを想定しています。


ビューファイルをコピー

次に、WPのsingle.phpなどをYiiのビューとしてコピーします。
このとき注意しなくてはならないのは、
single.phpやarchive.phpなどWPから最初にコールされるファイルは
Yiiのビューファイルとして配置。
header.phpなどのテーマファイルの中からコールされるファイルは、
Yiiのルートに置く必要があります。
 
yii2/views/wordpressフォルダを作成し、
その中に

  • 404.php
  • archive.php
  • author-bio.php
  • image.php
  • index.php
  • page.php
  • search.php
  • single.php
  • sidebar.php

をコピー。それ以外のファイルはYiiのindex.phpと並ぶように配置します。
 
よっしゃ次最後!


views/layout/main.php

最後に、Yiiのレイアウトファイルから余分なタグを削ります。
views/layout/main.php

<?php

/* @var $this \yii\web\View */
/* @var $content string */

use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;

AppAsset::register($this);
?>
<?php $this->beginPage() ?>
    
    
    
    <?= Html::encode($this->title) ?>
    <?php $this->head() ?>
	
	
	<?php $this->beginBody() ?>

isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]) ?>
<?php $this->endBody() ?> <?php $this->endPage() ?>

とします。
 
本来であれば、WP側のheader.phpとの兼ね合いでタイトルを設定したりは必要だと思いますが、
まずはこれだけあれば大丈夫でしょうという動きを。
 


以上で、なんとかWPの中でYii2を動かすという流れでした。
この状態で
http://domain/gii
を動かすとYiiのスカッフォールディングが動きます。


 
▲上記のような画面構成になります。
なんとかWPの中でYiiが動くようになりました。
これで複雑な検索を必要とするページを作ったり、
WPではまかない切れない難しい一覧ページを出力したりできます。
WPのデータベース設定を継承するようにつくられているので、
WPのデータベーステーブルに対してモデルファイルをつくっておけば、
WPの複雑なリレーションに対して簡単なデータ呼び出しも可能になるでしょう。
 
次回は、

  • GETパラメータの処理
  • header.phpの最適化
  • WPのログオン情報を継承してYiiのコントローラにアクセス制限

をやってみます。
 


P.S.
上述の通り、ほとんどのWEBアプリケーションフレームワークは
一旦index.phpが呼ばれる前提になっていますので、
Yii以外でもHMVCがサポートされていれば、
同じアプローチができるとおもいます!
 
出てこい!俺より強いやつ!!

沖縄好きが1週間沖縄でリモートワークしてみた

先日のブログで書いたとおり沖縄好きの私が27回目の沖縄訪問でやったことは、10日ほど沖縄に滞在し、平日は沖縄県の宜野湾市にあるGwaveにて、リモートワークをしてみるという実験でした。
 


背景

まず私が沖縄に行き始めたのが、2003年の8月。当時は、単なる観光気分で行っていたのですが、沖縄の食にはまり、沖縄の人に触れ、沖縄の歴史を知り、沖縄の友達ができて、、、、としていく間に、だんだん沖縄のひとみたいになってしまい、最終的には愛知県沖縄県人会に入るまでに至りました。私のことを「沖縄県出身」だと勘違いする人が現れるほどです(笑)。
そんな私が沖縄を第二の故郷にせずにどうする?ということで、沖縄で普通の生活をしたいということがまずひとつ背景としてあります。
 
第二の背景としては、2011年に独立をしてから4年あまり。多くの人と連携をもって仕事をすることが多くなりました。本当に1人で仕事をしているのであれば、PCと携帯電話をもってどこにでも行けば良いのですが、誰かとつながって仕事をし続ける状況において、顔が見えない距離で仕事をするということが、果たしてできるのか?という実験をしたかったというのがあります。
 


結果

その結果です。
 
まず、沖縄で普通の生活をしたいという願望ですが、これに関しては65%のくらいは実現できたと思いますが、やはりいつもの自分というわけではなかったです。やはり、そこはパラダイス沖縄。誘惑がたくさんある。そして、独特の文化をもつ沖縄。私の目には次々と新しいものが飛び込んできます。27回目の沖縄とは言え、訪問は多くても年に4回程度。ここまで積み上げたものは、あくまで「お客様としての自分」であって「日常の自分」ではありませでした。ちょっと悔しい気分でもあります(笑
 
そして、遠い距離で連携しながら仕事ができるのか?というところですが、ここは結構問題がありました。仕事ができないかというとできます。が、本当にコミュニケーションにかかるコストが大きい。電話やSkypeにて、仲間と話をしなければならない時間を結構考えないといけません。メールやチャットなどでは、文字を打つ時間もかかり、かつ、伝わらない。やはりSkypeはそういうとき最強のツールだったわけですが、隣に座っている人に対して「ねぇねぇ」と声をかけられないというのはこんなにもコストがかかるのかと、驚きました。
名古屋⇔沖縄の遠距離で仕事をするには、それ相応の訓練が必要だろうと思います。
 


沖縄県の人々は

そんな悪戦苦闘をしながら過ごす私を尻目に、沖縄県民は私たちが名古屋にいるのと変わらない生活をしています。当たり前といえば当たり前なんですが、意識のどこかで「沖縄=観光立国」がこびりついているのでしょうね。本土と変わらない営みをしていることに「へぇ」と感心してしまった自分がいました。
はっきり言えばこれは、自分自身とてもイヤになった感情です。
差別をしているわけではないですが、明らかな区別をしていました。
沖縄県人会に入りながらも、ほとんど沖縄県民のことを理解していなかったです。
 
ちょうど、沖縄県にいる間
「沖縄県は本当に被害者なのか?」
と発言して問題になった作家さんがいたようでしたが、
これも、きっと差別はしていないでしょうけれども、
「区別はしているがゆえの無知」だったのでは?
と思います。
 


そんなこんなで

1週間が過ぎ、沖縄での仕事は結構疲れてしまいました。
沖縄が疲れるんじゃないです。私の意識が疲れさせたんです。
 
私は愛知県知多郡武豊町というところで生まれ育ちました。
いつか、武豊町で何か仕事ができたらなと思っています。
(田舎なので、WEBに関する仕事そんなにないんです…探してないだけかもしれませんが)
 
それと同じくらい沖縄で何か仕事したいと思っています。
 
それでです。その足掛けとして、このたび8月をめどに、
沖縄県那覇市松川町に、私が営む春芳堂の沖縄事業部を立ち上げることにしました。
具体的に何をはじめるかは未定ですし、何ができるかもわかりませんが、
やってみることにしました!
 
可能なら、EC関連のお手伝いや、マーケティングの一端のお手伝い、顧客管理システムなどの構築なんかができたらな。って思っています。
 
開設祝待ってます!!!!
(武豊町も待っててね)

Older posts