SPICY SPACE BLOG

愛犬家WEBエンジニアの日常。

Heroku初心者がつまづいたこと3つ

FuelPHP(PHP5.3〜)を使うのに、今借りているVPSのPHPが5.2なので使えない。
そこで無料で使えるみんな大好きHerokuを使ってみることにした。

で、しばらく使ってみてこりゃあ普通のレンタルサーバーとだいぶ使い勝手が違うな、と。
当たり前か...笑

そこで、Heroku初心者の僕がつまづいたところ、分かりにくかったところを、備忘録を兼ねてまとめてみた。

1.Herokuコマンドの対象アプリ

Herokuで複数アプリを作った場合、 --app [アプリ名] と捜査対象のアプリを指定してHerokuコマンドを使えるが、めんどくさい。
で、どうにかならんもんかと調べてみた結果、--appを指定しなかった場合、git remoteに登録されたエイリアスからアプリを判断しているということが分かった。
つまり、カレントディレクトリを各アプリのリポジトリまで持って行って操作すれば指定なしでも大丈夫!
また、違うPCで作ったアプリに対してHerokuコマンド使いたいときは、gitのremoteにherokuのリポジトリを登録しておけばおk。

2.消えるシンボリックリンク

heroku run bashでリモート操作できるが、viなどでファイルを直接編集できないようになっている。 lnでシンボリックリンクは貼れるが、消える!なぜ?

ファイルは直接アップしてもダメ!

Herokuはマルチテナントであるため、以下のタイミングでインスタンスが切り替わる。
このインスタンス切り替えがあるため、直接ファイルをアップしてもムダ。ファイルのアップはGitを通してのみ行える。
インスタンスが切り替わるタイミングは以下。
* Git Push時
* Heroku config変更時
* おおむね1日1度、自動的に再起動

シンボリックリンクもGitで管理できる

これはHerokuの話ではないが、恥ずかしながら知らなかった。
なんとなくシンボリックリンクはコマンド打って貼らないといけない気がしていて、超はまってしまったが、ただローカルで作ったシンボリックリンクをプッシュするだったorz

3.SSH鍵の管理について

Macの場合、heroku login時に~/.ssh/以下の.pub公開鍵が勝手にアップされる。

Githubなど違うサービス用のものも入っているので、必要に応じてheroku keys:add/removeで手動追加/削除しておく。
ちなみにMacで複数のSSH鍵を管理する方法も今回初めて知った。
~/.ssh/configにホスト別に使用するSSH鍵を指定すればよいらしい。

参考サイト

知っておきたい!Herokuを使う上では当たり前?の16の常識 | blog.mah-lab.com

特盛!Heroku

Heroku: Up and Running

Heroku: Up and Running

  • 作者: Neil Middleton,Richard Schneeman
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2013/12/03
  • メディア: ペーパーバック
  • クリック: 2回
  • この商品を含むブログを見る

最近アツい!アイデア系カメラアプリ3選

ちょっと前から、今さらながらinstagramにハマっている。  

まぁ被写体はうちの愛犬くっぴぃばかりだが笑  

ここまで簡単におしゃれげな写真加工ができるって素晴らしい。  

折角だし最近一番いい感じに撮れたやつを載せておこう。

f:id:sp_ice:20131116182410j:plain

 

王道写真アプリといえば、言わずもがな、Instagramだ。  

他にも色んな機能を謳った写真系アプリがあるが、正直もう写真系アプリのアイデアって出し尽くされてて目新しいものはないなーなんて、思っていた。  

が、ここにきて超おもしろいiOSアプリがニュースサイト等で立て続けに話題になったので、僕なりにまとめてみた。

 1.Seene 

Seene

Seene

  • Obvious Engineering
  • 写真/ビデオ
  • 無料

 

 3D写真を簡単に撮ることができるアプリだ。  

実際に撮ってみたのが、コチラ。

http://seene.co/s/9sFWLK

 

 

これ、決して手で押さえつけてる訳ではないので!笑  

ただ流石に微動だにせずマテはできないから、少し手を添えているだけ。  

生き物の撮影には向いてないのだろうが、撮影は本当に簡単で、最初にシャッターを押した後、上下左右にiPhoneを動かすだけ!  

ここまで気軽に3D写真を撮れるなんて、本当に革命的だ。

 

2.Frontback

Frontback

Frontback

  • Checkthis
  • 写真/ビデオ
  • 無料

 次はナイスアイデアな写真撮影&共有アプリ。  

上下2分割した写真が撮れるのだが、上半分に背面カメラで撮った写真、下半分に前面カメラで撮った写真が入る。  

つまり被写体と同時に、撮影者側の風景も撮れるというわけだ。  

 

こちらも実際に撮ってみた。  

f:id:sp_ice:20131116182252j:plain 

これ、ほんとにペット飼い主泣かせなアプリだな...笑  

写真を撮りながらニヤつく親バカの顔、もしくは可愛いペットの写真をとるためのマジ顔が写るという...w  

 

dubble

dubble

dubble

  • Dubble Me Ltd
  • 写真/ビデオ
  • 無料

 3つ目、こちらもなかなか良いアイデア。    

多重露光という撮影技法がある。もともとは、フィルムで撮影するときに1枚のフィルムで2回以上撮影することを指したが、今はデジカメやアプリの機能で撮影できる。    

このアプリでは他のdubbleユーザーの誰かが撮った写真とランダムで合成された、二重露光写真が撮れる。  

 

冒頭のInstagramで撮った写真を使って、やってみた結果がこちら  

f:id:sp_ice:20131116182316j:plain 

ランダムとあってばっちりキレイな写真が出来上がる訳ではないが、  

待っているときのどんな写真がくるんだろう、というドキドキ感が面白い。  

あと、試しに4回ほど写真をUPしてみたのだが、そのうち実に2枚がどこかの女性の無表情の自撮り写真が合成されて返ってきた...こわいわ笑

 

まとめ

以上、3つのアイデア系カメラアプリをまとめてみた。    

Seene以外の2つは、特に新しい技術を使ったりしているわけではない。  

写真系アプリに限らず、「アイデアが出し尽くされる」なんてことはあり得ないのかもしれない。

車なんて興味なかった僕が新車でCX-5を購入した3つの理由

車なんて全く興味がなかった。
だって学生のときからこの夏まで祖父が乗ってた古ーい軽自動車にずっと乗ってたくらいだし。
友達は「この車の目がたまらん!カッコいい!」とかそういう話してたけど、正直まっったく着いていってなかった。
ふーん、あっそう。ま、僕は興味ないけど。って。

で、この夏にその軽自動車のエンジンがイカれて、結婚もしてるし、社会人3年目だし、そろそろ新車買っちゃうか!となってMAZDA CX-5を買っちゃったワケですよ。
そんな安い車じゃないですよ。ただ乗るだけでいいって人が買う車じゃない。
惚れちまったんですよ。CX-5の魅力に。

そんな車に興味ない僕でも購入に踏み切った理由が、これだ。

1.走行時の安定性がヤバい

f:id:sp_ice:20131109121323j:plain

これですよ。1番は。
CX-5の試乗した後に、もう一つの候補だったホンダのフリードにも試乗してみたけど、揺れる揺れる。
多分フリードの揺れが酷かったわけじゃない。CX-5が揺れなさすぎるということだ。 2mの車幅!そして17インチのタイヤ!ガッシリ。ゴツい。
そんな見た目通り全く揺れない。助手席に乗ってる嫁が乗り心地が全然違う!って驚嘆してたくらいだ。

2.BOSEオーディオシステムがヤバい

f:id:sp_ice:20131109121338j:plain

音楽はドライブには欠かせない。
でも走りながらだと低音とか聴こえんし、まぁBGMに小さい音で流しとく程度ってのが普通だと思う。 自分でウーファー積んだりとかめんどいし、金かかるしね。

CX-5はオプションだけど、かのBOSEのオーディオシステムをつけることができる。
それもCX-5に最適化されたもので、走行時のノイズキャンセリング機能がついている。素晴らしすぎる。

実際聞いてみると、ベースが!!!聴こえる!!!!!
それだけじゃない、爆音にしても全く音が割れない!
車でこれだけ聴けたら、家にスピーカーとかもういらんわ! 爆音でドライブ楽しすぎわろた!

3.白黒!そう、つまりモノトーン!

f:id:sp_ice:20131109121359j:plain

外装がね。そっくりなんですよ。こいつの色に。
ただ、そこに惚れたね。

裏3つの理由

と、まぁ3つ理由を挙げたけど、現実的な理由は
1.前の車が壊れた
2.来年には増税
3.将来的に子どもも乗れる車がほしい。子ども生まれる前に車のローン終わらしときたい。
だけどね…笑

いや、でもとにかくCX-5は素晴らしい車だから、もし車購入検討中の方は是非!

マツダCXー5のすべて (モーターファン別冊 ニューモデル速報)

マツダCXー5のすべて (モーターファン別冊 ニューモデル速報)

オーバーステア 1/64 MAZDA CX-5 アルミニウムメタリック

オーバーステア 1/64 MAZDA CX-5 アルミニウムメタリック

ホームページ要らない!は極論すぎやしないかい?

最近、ブログがキテる!ホームページなんてもう不要!みたいな記事をいくつか目にしたので、少し感じたことを書いてみる。
 
 
 
これってSEOとか、仕事をもらえるかどうかしか考えてなくない?  
 
アクセス数稼ぐため、ファンを創出するために「ブログ」が有用というのは、ものすごく納得なのだが、
検索の受け皿として、整理された情報を提供するのがホームページの役割なんでは?  
 
不必要とまで言ってしまうのはどうなのか。  
えんじょうまーけてぃんぐ、というヤツではないの?
 
自分は俗に言うデジタル・ネイティブ世代だけど、ブログしかやってない企業とか、お店とかってお金ないのかなーとか、どこか不安なきもちになりますよー。
 
と、そんな戯言を「ブログ」に書いてみる、今日この頃。
 

曲のポップ性を定量的に求める方法

僕はポップスが好きだ。
ポップスとは和製英語で、語源はポピュラーミュージック。大衆向け音楽だ。

大学時代、軽音楽部に居たせいか、ポップスは忌み嫌われていた。
「音楽好き」が聴くものじゃない。そんな風に思ってる人が少なくとも僕の周りには居た。何人か。
まぁ普通の人は聴かない音楽聴いてる俺カッケー!的なのをディスるのはちょっと趣旨が変わってしまうので辞めるが…

なんでこんな記事を書こうと思ったかというと、これを聴いたから。

tofubeats - Don't Stop The Music feat.Chisato Moritaka (official MV) on Vimeo

もうね。素晴らしい。まさに、ポップス!

僕が考えるポップスの1番重要な要素は「中毒性」だ。 CMの音楽なんかが特に当てはまると思うが、聞いた瞬間忘れられなくなるフレーズ。
メロディーと歌詞がビシッと完全に合致した感じ。もうこの歌詞といったらこのメロディー。これしかありえん!みたいな。
そして、それが頭の中を反芻する。勝手に。つい口ずさむ。 「止めないで〜♪」…って言われなくても脳内ループが止まんねぇよ。

で、ふとアホなことを考える。
この脳内ループの回数って、曲のポップ性と比例するんじゃね…?
とすれば、この脳内ループを数えれば曲のポップ性を定量的に表すことが可能だ!
一日の間に何回脳内ループしたか。「この曲は30LPD(Loop Per Days)だね」とかwww

とはいえ、自分で脳内ループの回数をカウントするなんて、不確定すぎる。
1フレーズ再生だけでいいのか、サビ全て再生しないといけないのか。
そもそも脳内ループが終わったタイミングって分からんし。

では、ちゃんと基準を決めたらどうか。
脳内再生は計測しにくいから、妥協してリアルに何回飽きずにきけるかという基準にしよう。
サビを100回連続で繰り返し聴いてみて何回目で飽きるか。

音楽の好みもあると思うからこれを違うジャンルが好きな何人かに対して実施して、平均を出す。
これで擬似的にではあるがLPDを求められる…!!!

誰か、誰か、やってみてはくれまいか!!←おい

最近の車のゲーミフィケーションがすごい

今年の夏、新車を購入した。もちろんローンで。
MAZDAのCX-5。
白と黒のボディは、うちの愛娘にそっくりだ。

f:id:sp_ice:20131020010100j:plain

24歳。社会人3年目にはすこし高い買い物だったかもしれない。 おかげで毎月ぱっつんぱっつんだけども、後悔はしていない。 毎週末のドライブが楽しみだ。

それはさておき、このCX-5についているi-DM(インテリジェント・ドライブ・マスター)がすごい。
まぁ簡単にいうと、自分の運転を採点してくれるものなのだか、 購入する前は、

「あーはいはい。はやりの"ゲーミフィケーション"、安易に取り入れちゃいましたって感じのオマケ機能ね。」

くらいにしか思っていなかった。
でも1ヶ月ちょっと運転してみて、いい点数を取ろうと頑張っている自分に気づく。

普通に走っているとやさしい運転を指す緑色のランプが光る。
なめらかな減速やハンドル操作で青色のランプが光り、加点される。
急加速や急ブレーキは減点。
家の近くのコンビニに行くだけだと、「距離が短すぎるため採点できません」と表示されるということは、全体の走行距離の中の良い運転をした距離の割合で点数が算出されているのだろう。
5点満点で採点されて、10回連続で4点以上を取ると、「ステージ」が1st → 2nd → 3rdとあがって行くらしい。

と、まぁこんな単純なしくみなのだ。
たぶんきくだけだと、「それの何が面白いの?」って思うはずだ。

だが、実際に運転して体験すると、これがおもしろい。 運転し始めの、アクセルやブレーキの踏み具合に慣れていなかった頃には低かった点数が、最近はアベレージ4以上を常にキープできている。
信号で停車するときに、少しだけ気をつけてゆるやかに止まると、青いランプが光って加点される。「よっしゃ」て口に出していっちゃう。

自分がした工夫(=攻略)が目に見える成果として表れる。
レベル上げして技を覚えて、強い武器を買って、最初は倒せなかった敵を倒す。RPGも同じ。 ゲームの本質ってこんなに単純だったんだ。

Sublime Text2 PHP用スニペット

sublime text。カスタマイズしやすく人気のエディタですね!
皆さん使ってますか?僕は使っています。

軽いし、ちょっとした便利機能がいっぱいあっていいんですよねー。

で、中でも便利なコードスニペット機能ですが、自分用PHP向けスニペットを作ったので晒します。

スニペット作成方法

Tool->New Snippetから新規作成できます。 保管場所はwinデフォルトでは↓です。

C:\Users\UserName\AppData\Roaming\Sublime Text 2\Packages\User\xxx.sublime-snippet

macはココ↓

/Users/UserName/Library/Application Support/Sublime Text 2/Packages/User/xxx.sublime-snippet

自分用スニペット集

  • print_r 「#$+Tab」で起動。 変数名のところにカーソルが合うようにしてみました。
    pre要素をつけてブラウザでそのまま表示されるようにしました。
    これ大分はかどります。
<snippet>
    <content><![CDATA[
//###
echo "<pre><-";
print_r(\$${1:xxx});
echo "-></pre>";
exit;
//###
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>#$</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.php</scope>
</snippet>
  • title なんか毎回----が違う長さになっちゃうのでつくってみた、、、笑
<snippet>
    <content><![CDATA[
//--------------------------------------------------
// ${1:TITLE}
//--------------------------------------------------
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>#tit</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.php</scope>
</snippet>
  • 関数(説明つき) Tabキーで順番に書いて行けばキレイなソースの出来上がり、と。
<snippet>
    <content><![CDATA[
/**
* ${3:関数の説明}
*
* @param ${5:string} \$${6:_path}
* @return ${4:void}
*/
function ${1:func_name}(\$${2:param}){
    
}
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>#func</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.php</scope>
</snippet>

まぁ使って行くうちにもうすこし改良していくか。