【PHP】オブジェクト指向を身につけたいの話
おはようございます。
PHP歴も2年弱となり、「こんな機能をつけたいな」と思ったことはググったりしながらもなんやかんやで実装できるようになってきたと思っています。
ただ、基本的に一人でしかサイトを作ってこなかったこともあり、「オブジェクト指向」というものには一切触れずにここまでやってきました。
(正確には触れようと思ったけど、難しすぎて辞めた。が現実です)
別にシステムはオブジェクト指向で書こうが、書くまいかどちらでもサイトは動きますし、利用者にとってはわからない部分です。
※ここではクラスやメソッドを使いこなすような意味で「オブジェクト指向」と書いています。
であれば、アウトプットしてくことに優先順位をつけていたので、ここには触れずにここまでやってきました。
そんな自分ですが、「オブジェクト指向」をしっかり身に付けようと思ったのには以下のような理由があります。
①開発していたプログラムが完成の目処がついた
②フレームワーク(FuelPHP)の導入を検討している
③純粋に技術力を高めたい
といったところです。
今、自分が完成させたプログラムは自分なりには見やすいように書いたつもりですが、おそらく自分しか保守、改良できないようなプログラムになっていると思います。
もちろん、「動くこと」を最優先してきたのでその結果は許容範囲ですが、そのプログラムがヒットしてより多人数で保守、改良しなければならなくなったときに今のコードでは確実に足を引っ張ってしまうと思います。
だから、完成の目処が立ったこともあり、また、フレームワークを導入するにあたってきっちりとオブジェクト指向や基礎レベルを上げていきたいと思っているところです。
また、世の中的には基本的にオブジェクト指向でプログラムを書くことが主流なんだと思っています。
ということは、きっちりクラスやメソッドなどを使いこなさないと自分は最先端の技術の取得はおろか、話に参加することもできません。
AmazonMWSのPHPのコードもオブジェクト指向で書かれているし、Qiitaでのサンプルコードや最先端の内容は基本的にオブジェクト指向に沿って書かれている。
そろそろ、技術力をもう一段階上げていかないといけないと強く思っている訳なのです。
/*————————————————————————————————————*/
ということで、これからはPHPの名著の名高い「パーフェクトPHP」の内容に沿った形で勉強していきたいと思います。
実は、この本を買ったのは1年くらい前なのですが、取りあえずサンプルコードを書き写したりするだけや、途中で挫折というのを何度も繰り返している本です。
でも、曲がりなりにも2年以上はPHPに触れてきたのだから、ここで力をいれて頑張っていきたいと思います。
具体的な内容や解説については、また明日以降書いていきます。
ご一読頂きまして、ありがとうございました。
27歳の目標についての話
おはようございます。
6/6以降放置してしまっていた(114日間も!!)のですが、昨日(9/27)に誕生日を迎えたということもあり、またブログの方も再開していきたいと思っています。
一つ年齢が上がるということで「リボーン(Reborn)」生まれ変わった気持ちで頑張っていきたいと思います。
/*————————————————————————————————————*/
27歳になったということなので、今日は「27歳の目標」を立ててみようと思います。
①ブログを週3-5の頻度で更新する。
ここまで放置していたのにも関わらずですが、ブログの更新を頑張っていきたいと思います。
ブログ内容の軸としては「プログラミング」と「ビジネス」について書いていければと思っています。
3年前に前職の不動産会社を辞めてからプログラミング(PHP)を勉強し始めて、ようやく自分の思い描いたようなものが作れるようになってきました。
でも、自分の技術レベルは
「ロジック部分とデザイン部分を分離させて書ける」
程度です。
「オブジェクト指向」での開発がまだまだ理解できていないので、ひたすら生のコードを書き続けているのが現状です。
今作成しているサイトもバージョン1.0としてようやく完成しますので、バージョン2.0はフレームワークを利用してさらなる機能の追加を考えています。
そのために、オブジェクト指向の基本やフレームワークのcore部分の理解を勉強していきたいと思っています。
で、そのインプットしたことのアウトプットの場としてこのブログを活用していこうと思っています。
②個人名を出してアウトプットする。
今まで、自分の名前を出してWeb上で発言は全くしていなかったのですが、Rebornしたので個人名を出してアウトプットしていこうと思っています。
どこかのサイトにあったのですが、
「他人の承認欲求を笑う者は一生、自分の承認欲求は満たされない」
という言葉がありました。
この言葉を見た時、どこか他人の承認欲求を笑っていた自分がいたことに気付きました。
人に認めてほしかったら、人を認めることが大事だし、
人に好かれたかったら、その人を好きになる、
分かってたつもりだったけど、分かってなかったことに気付いた瞬間でした。
具体的には、会社のブログの様なものを作って、情報を提供していって自分という人間や運営している会社について知ってもらおうと思っています。
勿論、個人名を出すことと出さないことにはそれぞれのメリットとデメリットがあると思うのでここでは実名や会社の営業はしないつもりです。
/*————————————————————————————————————*/
という感じで、27歳は「アウトプット」を意識して積極的に頑張っていきたいと思っています。
ご一読頂きまして、ありがとうございました。
手段と目的の話
おはようございます。
なかなかブログを継続して書くのも難しいなと思っている今日この頃です。
また、なかなかサーフィンでも立つことが出来ず波の上でもバタバタともがいている段階でもあります。
でも、天気のいい日に海の上でプカプカと波に揺られているのもまた大きなストレス解消法の一つとしてなっているので気長に頑張っていこうと思います。
今、書きながら思ったのですが、
「特にゴールを持たず気長にのんびり頑張る」
というのは自分の人生の中で初めてのことだなと気づきました。
勿論、早く立ててかっこ良くサーフィンしたいので、1日1日の目標は持って取り組んではいます。
でも、その目標の達成、不達成に関わらず気楽に「また頑張ろー」っていうのはこれまで無かった感情です。
今までの人生の中で、何事もやるからには
「誰かに負けたくない」
「一番になりたい」
と、ずーーーーーっと思ってやってきました。
それこそ、必死に、誰かがやっていない時間こそ差をつけるチャンスと思って、取り組んできました。
でも、「サーフィン」は良い意味で
「好きだけど、そこまで頑張らなくて良いこと」
に、なってるなと思います。
「ダメだったらダメだった時」だし「今出来ないことは出来ない」ということを、受け入れられるというか、しゃーないなと思えるのは今はサーフィンだけだなと思っています。
特に、ゴールが特になくて
「実行することが目的」
ということは、自分の中でなかなか新鮮な感情です。
よく、
「手段が目的になってはいけない」
という言葉を耳にすると思います。
全くのその通りだと思いますし、そうあるべきだと心にとめて行動してきたつもりです。
でも、
「手段が目的になっても別にいいのではないかな??」
と実感できたのは、自分に取って大きいことなんじゃないかなと自己発見をしています。
だって、「なんでサーフィンするの?」と聞かれたら
「サーフィン楽しいから」
と答えるし、
「サーフィンをすることで、自然の力を感じることができ、人間の力なんてちっぽけなもんだなと実感することで精神的成長を促すことが出来る」
や
「サーフィンは水中で行うため、関節等への負担は比較的小さく、日頃運動しない現代人にとって健康を促進するためにはぴったりである」
などは全く考えていないですからね。
でも、今思えば、今までバスケットをしてきたのも単純にバスケットが楽しかったし、仕事でもこなせるようになっていくのが楽しくなってたのかなと振り返ることもできるかなと思います。
そう思うと、
「手段が目的になっても別にいいんじゃないかな」
って思う気もします。
やってることが楽しくて、夢中になってることが、自分だけじゃなくて周りの人も楽しませることができたら、自然と成功できるんじゃないかなって。
こうやって書いたのを見直すと、今書いたのって「夢を叶えるゾウ」にもう書いてあることだなと気づく。
そう思うと、やっぱり「夢を叶えるゾウ」というのは本当に良書なんだなと改めて思う。
でも、こんな風に自分の体験に置き換えて実感することで、本の文章を自分の中に溶かすことができるんだと思って、また頑張っていきたいと思います。
ご一読頂きまして、ありがとうございました。
BitBucket+SourceTreeで共同開発
おはようございます。
今までプログラム関連は全部自分一人でまわしていたのですが、今回のプロジェクトについては2人で進めることになりました。
初めての
「共同開発」
です。
なので、非常にウキウキしています。
なんせ独立して初めての共同開発ですからね。
きっかけとしては、AmazonMWSを使ったツールを作っていることを話していたら色んなビジネスアイデアが出てきて、じゃあ一緒にやってみようということで今回スタートしました。
といっても、相手方もプログラミング始めてそんなに時間は経ってないのでスキルはどっこいどっこいなんですが。
(分担としては、デザインやSEOまわりが相手方で自分は機能構築ですね。)
ということで、意気揚々と打ち合わせていく中で2人とも一人でしかWebサイトを作ったことがないので、ソース管理をどうすればというところで頭を悩ましました。
最初は愚かにも、Dropboxに入れて共有しようという感じでしたが、すぐにどちらかが上書きしちゃうとお互いの更新が消えてしまうということに気づきます。
そうなると、片方がやっている間はもう片方はそのファイルをいじれないということに陥ります。
これは非常に非効率です。
ということで、Google先生にどうしたら良いか聞いたところ、「分散型バージョン管理システム」というのを利用すれば良いよと教えてくれました。
で、世の中には親切な方がたくさんいらっしゃってホスティングサービスやその使い方、各サービスの比較等の情報があります。
【以下、参考サイト】
比較表
Gitホスティングサービス5選【比較表付き】 | Find Job ! Startup
BitBucket
Free source code hosting for Git and Mercurial by Bitbucket
GitHub
GitHub · Build software better, together.
BitBucketの使い方
bitbucketの使い方 — Windows+TortoiseHg 2.x で始めるMercurial
Git
デザイナーでも使うと便利なバージョン管理システムGitの勉強会に参加しました - YATのBLOG
GitHubの使い方
GitHubを使ってみよう!導入と簡単な流れ、よく使うコマンドなど。 - YATのBLOG
最終的には
「BitBucket+SourceTree」
で進めていこうとなって設定が完了したところです。
最初はターミナルでGitを動かしてBitBucketを利用しようと思っていたのですが、チュートリアルに沿ってやってもよくわからんかった(できなかった。。。)ので、Gitのクライアントアプリを探したところ、BitBucketの運営会社が公開しているSourceTreeが便利そうということで、BitBuket+SourceTreeという結論に至りました。
まだまだ、「コミット」「プッシュ」「プル」ぐらいしか分からない現状ですが、「ブランチ」「フォーク」「マージ」なども勉強して活用していきたいと思っています。
GitHubが有名なのでそれを使おうかとしたのですが、プライベートレポジトリの作成が有料であるため今回については見送り、BItBucketを利用することにしました。
(BitBucketは5ユーザーまで無料)
実質的な作業はBitBucketでやり取りして、公開していくソースについてはGitHubを使っていくのが現状には合っていると感じています。
これからガンガン開発頑張っていきたいと思っています。
ご一読頂きまして、ありがとうございました。
【PHP】Amazon MWSで全ての出品者情報を取得する方法
おはようございます。
今日は、「Amazon MWSで全ての出品者情報を取得する方法」についてです。
せっかちな人のために、結論は
「Amazon MWSで全ての出品者情報を取得する方法」はありません。
です。
なので、Amazon MWSで掲題のことを実行しようと思っている人は、違う方法を考える必要があります。
※例外的にAmazon MWS Subscriptions APIを利用すれば取れることは取れます。(後で触れます)
この結論に至るまで、6時間もの時間を費やしたので今日はその経緯等を踏まえながら説明していきたいと思います。
/*————————————————————————————————————*/
この前のブログでも書いたように、Amazon MWSのAPIを使ったツールを現在作成しています。
その中で、入力したASINの商品の最低価格から誤差5%以内の出品者数をカウントするという内容が必要となりました。
で、自分がまず採用したのは、商品APIの中の
「GetLowestOfferListingsForASIN」
でした。
このAPIのレスポンス要素のなかの「LowestOfferListings」のデータを加工すればいいのではと思い、サンプルプログラムを基にプログラムを作成しました。
無事にそのプログラムも動作し、いくつかの商品でテストしてもきっちり出来ているように見えたので、実際に使ってみてもらったところ、いくつかの商品で実際に目視で数えた場合とで違いがあるケースが発見されました。
自分の作ったプログラムにミスがあったのかなと思い、いくらチェックしても自分が見る範囲では正常に見えます。
なので、あとはGoogle先生に聞くのみです。
ひたすら、聞き続けた結果が「GetLowestOfferListingsForASIN」では不可という結論でした。
【以下、参考サイト】
Get a list of ALL offereings for an ASIN - Amazon Seller Forums(英語)
Amazon’s New Pricing Information through the MWS Products API | BookScouter.com(英語)
New Amazon API Could Change Repricing Game(英語)
これがわかりやすい
ver3.0.0へのバージョンアップに伴う変更点:価格改定君-Amazonマーケットプレイス価格改定ソフト(日本語)
つまりは、Amazonが指定しているグループを代表するオファーしか表示されないということ。
なので、「GetLowestOfferListingsForASIN」を実行しても誤差が生じる場合があるということだったのです。
※ここまで、約4時間程度経過。。。
ここで、自分のミスではなくて、そもそも無理であったということがわかったのでようやく次へ進むことができます。
(原因がわからないと次にも進めないですしね。。。)
ではどうすればよいのか。
「価格改定君」さんの情報をみると、
「これにつきましては、MWSの仕様ですので、何卒ご了承のほどお願いいたします。」
とあり、ここが限界だとおっしゃっています。
しかし、自分が作成しているツールについては「ご理解の程、、、」としてしまっては、信用性が著しく失われてしまうため、代替案が必要でした。
(MWSではおっしゃる通り、全ての出品者情報を取得する方法はありません)
で、さらにGoogle先生に聞き続けた結果、サブスクリプションAPIを利用すればTOP20の出品者情報を取得することができることが分かりました。
/*————————————————————————————————————*/
【代替案】
SubscriptionsAPIを利用すればOKか?
【参考サイト】(全部日本語)
サブスクリプションAPIがご利用可能となりました - Amazon セラーディスカッションフォーラム
サブスクリプションAPIの特徴について - Amazon マーケットプレイスWebサービス(MWS) 日本公式ブログ
「これを利用すればいけるんじゃないか!!」
と思ったのでさらに、利用方法を調べていきました、
【完成イメージ】
Amazon MWS ラボ - トップページ
上記のAmazon MWS ラボ様が公開している「他社価格情報取得ページ 」が自分の求める機能をカバーしていたので、これがどうやって動いているかを検証。
簡単なステップ
Amazon MWS ラボ - トップページ
AmazonMWS Subscription APIの設定について
サブスクリプションAPI 設定方法について - Amazon マーケットプレイスWebサービス(MWS) 日本公式ブログ
どうやら、Subscription APIを利用して、Amazon SQSにデータを蓄積して、そこからデータを引っ張ってきてTop20の出品者情報を取得するという仕組みということがわかる。
仕組みが分かったので意気揚々とAmazon SQSの設定登録やSubscription APIのプログラムの作成に取りかかろうとしたところ AmazonMWS SubscriptionAPIは
「出品している商品のサブスクリプションしかできない」
という事実を知る。
(違ったらこっそり教えてください。。。)
自分が作っているツールは出品前のリサーチの為のツールなので、これではダメだとわかる。
※全ての商品に対してSubscription APIを利用してデータを蓄積しておいて、そこへ入力したASINコードを基に検索するということをすれば、できなくはないが、膨大なデータ数となるため、今回は見送り。。。
というここまでで約6時間を費やし、分かったことは
「Amazon MWSで全ての出品者情報を取得する方法」はありません。
ということでした。
方法がないのであればこのブログは意味ないじゃん。と思われるかもですが、自分はなかなか「方法が無い」ということがわかるまでかなりの時間を費やしてしまったので、自分と同じ疑問を持った人が少しでも早く回答にたどり着けるよう、筆を取らせて頂きました。
※自分ではこれでもかと調べたつもりですが、情報に誤り等があればご教示頂ければ幸いです。
ご一読頂きまして、ありがとうございました。
【PHP】PHPで月末を取得する方法について
おはようございます。
今日は、「PHPで月末を取得する方法について」です。
今作ってるサイトで毎月の月末を取得する方法を調べたので、今日はそれを書いていこうと思います。
せっかちな人のために、結論は
<?php for($m=1;$m<=12;$m++){ $targetMonth = date('Y-'.$m); $lastMonthDate[$m] = date('Y-m-d', strtotime('last day of ' . $targetMonth)); echo $lastMonthDate[$m]; } ?>
です。
(閏年もちゃんと29日になります。)
調べてると「今月末」の日付の取り方で
<?php echo date('Y-m-t’); ?>
といったコード等はよく出てくるのですが、これだとあくまで「今月分」しか取れません。
安易にこれをforでまわすと
<?php for($m=1;$m<=12;$m++){ echo date('Y-'.$m.'-t’); //結果↓ //2014-1-31 //2014-2-31 //2014-3-31 //2014-4-31... } ?>
となってしまいますので注意しましょう
(「t」のところが実行時の月末(5月なので31)が入ってしまうためです。)
簡単そうで、ハマりやすい(自分がハマっただけですが)部分かと思いますので、しっかり期待された値が取得できているかチェックが必要ですね。
他にも、こんな書き方もあるみたいです。
<?php $year = date('Y'); for($m=1;$m<=12;$m++){ echo date('Y-m-t', mktime(0, 0, 0, $m, 1, $year)); //結果↓ //2014-1-30 //2014-2-28 //2014-3-31 //2014-4-30... } ?>
参考URLはコチラ
PHP 指定した月の月末日を取得 -でじうぃき
※リンク先の2つ目のコードが参考コードですが、このコードは閉じカッコ「)」が一つ足りないので、コピペするとエラーになりますので注意です。
ご一読頂きまして、ありがとうございました。
テレビ離れの話
おはようございます。
今年の春のドラ名はどれもおもしろくて、なかなか目白押しなんじゃないかと思っています。
今見てるのは、
ブラックプレジデント
花咲舞が黙っていない
BORDER
MOZU
アリスの棘
リバースエッジ
弱くても勝てます
ファーストクラス
ルーズヴェルトゲーム
(曜日順)
という感じですね。
若者のテレビ離れ、ドラマ離れと世間では問題になってるみたいですが、まったくそんなことはありません。
(僕が若者なのかという部分考えないとして)
テレビが好きすぎるので、テレビを見ないように常にコンセントは抜いているぐらいテレビは好きです。
でも、リアルタイムでテレビ見ることがほとんどないので、そういった意味でのテレビ離れは進んでいるかもしれないですね。
で、リアルタイムで見ていない場合、何が都合悪いかというと(制作者側から考えると)
「CMを飛ばす」
というところでしょうね。
ご存知の方も多いと思いますが、テレビの大半は制作費は広告料、つまりCM料でまかなわれています。
だからリアルタイムでの「視聴率」にこだわるのですが、録画予約だといくら見てくれている人が多くても、CMは飛ばされてしまいます。
(録画の際はCMを飛ばす機能もついてるし、僕は必ずCMは早送りします)
制作者側としてはCMを見てほしいので、テレビはちゃんとリアルタイムで見てほしいんだと思います。
なので、テレビが大好きな人が多いにもかかわらず、世間では「テレビ離れ」が進んでいると騒がれているんじゃないか(発信する側が騒いでいる)と考えています。
そう思うと、テレビでの「広告」のあり方はもっと変わっていかないダメだと思うし、変わっていくと思うんです。
いくらネットがどんどん進化していっているといっても、まだまだテレビには勝てていないのが現実だと思います。
1日100万PV!!といっても、視聴率でいくと1%以下ですからね。
※日本の人口1.25億人として
しかも1日であれば、1つの番組辺り換算では0.1〜0.2%程度になるのではないでしょうか。
なので、その優位性があるうちに新しいビジネスモデルの発掘などが必要なんじゃないかと思っています。
なかなか関わる利権の大きさ半端ないと思うので「イノベーションのジレンマ」が大きく存在しそうな業界だと思いますが、僕は結構テレビっ子なので期待して待っていようと思っています。
どう変えれば良いなど具体的なアイデアがある訳でもないのにこんなことを書いてしまっていますがどうぞお許しくださいm(_ _)m
ご一読頂きまして、ありがとうございました。