<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>pblo</title><link>https://blog.playispeace.com/</link><description>Recent content on pblo</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Thu, 05 Jul 2018 22:21:41 +0000</lastBuildDate><atom:link href="https://blog.playispeace.com/index.xml" rel="self" type="application/rss+xml"/><item><title>関西Node学園 梅田キャンパス 2時限目で発表してきました #kng2</title><link>https://blog.playispeace.com/1329/nodejs-unit-test-on-aws-lambda/</link><pubDate>Thu, 05 Jul 2018 22:21:41 +0000</pubDate><guid>https://blog.playispeace.com/1329/nodejs-unit-test-on-aws-lambda/</guid><description>&lt;p&gt;前回の1限目で発表できなかったので、リベンジ&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nodejs.connpass.com/event/89037/"&gt;関西Node学園 梅田キャンパス 2時限目&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="発表内容"&gt;発表内容&lt;/h4&gt;
&lt;p&gt;資料は以下にアップしてますので、そちら参照ください。&lt;/p&gt;
&lt;p&gt;freeeさんからスポンサーされており、始まる前に飲み物（お酒含む）をいただけました。&lt;/p&gt;
&lt;p&gt;これが発表を控えた自分にはとてもありがたかったです。&lt;/p&gt;
&lt;p&gt;というのも、やはり人前でしゃべるのは緊張するもので、その緊張を少しでも和らげるのにお酒は最強のアイテムなのです。freeさんありがとーーー！&lt;/p&gt;
&lt;p&gt;酒の力は偉大
freeeさんありがとー&lt;a href="https://twitter.com/hashtag/kng2?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#kng2&lt;/a&gt;— papettoTV (@papettoTV) &lt;a href="https://twitter.com/papettoTV/status/1014828201682526209?ref_src=twsrc%5Etfw"&gt;2018年7月5日&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;で、いざ発表になると、足りないと思ってた15分の時間をほぼ使い切り、なんなら少し延長する勢いでしゃべってしまいました。やはり、予定より時間かかる法則は健在でした。（とはいえ、短く終わる恐怖もあるんよなー&lt;/p&gt;
&lt;p&gt;今回の反省（振り返り）は以下&lt;/p&gt;
&lt;p&gt;酒の力は偉大
freeeさんありがとー&lt;a href="https://twitter.com/hashtag/kng2?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#kng2&lt;/a&gt;— papettoTV (@papettoTV) &lt;a href="https://twitter.com/papettoTV/status/1014828201682526209?ref_src=twsrc%5Etfw"&gt;2018年7月5日&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近、日常では背筋伸ばすのをかなり意識しているのですが、やはり、何かに気を取られると忘れるんですよねー。意識！&lt;/p&gt;
&lt;p&gt;あと、帰りに &lt;a href="https://twitter.com/leichtgewicht"&gt;@leichtgewicht&lt;/a&gt; と一緒に帰れて色々話できてよかった。また機会あればぜひ！&lt;/p&gt;
&lt;p&gt;てなわけで、久々の発表乗り切った！&lt;/p&gt;
&lt;p&gt;会場提供のさくらインターネットさん、企画してくれた運営スタッフ、発表の機会をいただきありがとうございました！&lt;/p&gt;
&lt;p&gt;（懇親会帰りのほろ酔いで、一気に書きました）&lt;/p&gt;</description></item><item><title>HIGOBASHI.AWS 第4回 ネットワーク × ガチ編 に参加してきた #higobashiaws</title><link>https://blog.playispeace.com/1326/higobashi-aws-no4/</link><pubDate>Fri, 08 Jun 2018 19:02:01 +0000</pubDate><guid>https://blog.playispeace.com/1326/higobashi-aws-no4/</guid><description>&lt;p&gt;&lt;a href="https://classmethod.connpass.com/event/89725/"&gt;HIGOBASHI.AWS 第4回 ネットワーク × ガチ編&lt;/a&gt; に参加してきたので、メモを残します。&lt;/p&gt;
&lt;p&gt;ネットワークをテーマにクラスメソッドさんが開催する勉強会で、&lt;/p&gt;
&lt;p&gt;最後の４回目ということもあり、よりマニアックな内容になっていたようです。&lt;/p&gt;
&lt;p&gt;会場は、肥後橋（リモート）と秋葉で開催でした。&lt;/p&gt;
&lt;h4 id="宣伝"&gt;宣伝&lt;/h4&gt;
&lt;p&gt;「InsightWatch」AWSのセキュリティサービス。無料。&lt;/p&gt;
&lt;h4 id="俺が考える最強のネットワーク構成"&gt;俺が考える最強のネットワーク構成&lt;/h4&gt;
&lt;p&gt;大栗宋氏（@maroon1st）&lt;/p&gt;
&lt;p&gt;※あくまで個人的思想に基づいた考え&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ネットワークでもMulti-AZを基本&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;基本的に密結合する範囲を一つのVPCに、疎結合なものは別VPC&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サブネットはルーティングの単位と考える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FirewallはSecurityGroupをメインに。必要最低限のNACL。（AWSのベストプラクティスとは相違あり）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VPC間の通信は、Peering（密な関係）とPrivateLing（疎な関係）を使い分ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;事例&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ログ収集機能：PrivateLink使う。各Log AgentからPushを受ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;監視機能：PrivateLingを使う。TCP受信のみ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prometheus等のPull型はPrivateLinkでは無理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;各アプリケーション：PrivateLinkでログ等のサービス基盤にアクセス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サブネット分割の考え方。４パターンに分ける。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Public：インターネットとの通信&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Internal：他システム（VPC）連携&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Protected：サーバ配置（アプリケーション）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Private：サーバ配置（データベース）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;インターネットとの通信&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ALB/NLB&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;直接外部から接続されるインスタンス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他システム練気&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ALB/NLB&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;直接外部から接続されるインスタンス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サーバ配置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;APサーバ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サーバ配置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;EC2以外のVPC内に配置できるリソース&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;データストア on EC2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;外部接続が必要な場合はForwaard Proxyを挟む&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;質問&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regionまたいでデータを共有したい場合はどういう思想？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そもそも、本当に別リージョンで同じデータが必要か業務要件を確認する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PrivateLink使って監視サービス（UDPしたい）場合は？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;あきらめましょう（笑）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="ハマりポイントから考察するmicrosoftadの裏側"&gt;ハマりポイントから考察するMicrosoftADの裏側&lt;/h4&gt;
&lt;p&gt;豊崎隆氏&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;AWS Directory Service&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft AD&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mictosoft ADとVPCエンドポイント&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mictosoft ADのドメインに参加しているEc2からVPCエンドポイント経由でSSMを利用したかった&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;期待してた動きと実際の動き&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provided DNSからプライベートIPが返ってくることを期待&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実際はパブリックIPが返ってきた。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mictosoft ADの裏側を空想&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mictosoft ADは別のVPCにある？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="nlbとprivatelinkの仕様に立ち向かう"&gt;NLBとPrivateLinkの仕様に立ち向かう&lt;/h4&gt;
&lt;p&gt;菊地修治氏&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;NLB + PrivateLink のエンドポイントサービス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;インターフェイスエンドポイント&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;独自のサービスをVPCエンドポイントを提供&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ハマりどころはいっぱい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DirectConnect経由のアクセスは可能だがVPC経由は不可&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;リージョン内VPCピアリング、m5（c5）.largeだとアクセス可、m4.largeだと不可&lt;/p&gt;</description></item><item><title>関西Node学園に参加してきた #kng1</title><link>https://blog.playispeace.com/1320/kansai_node_school_1/</link><pubDate>Fri, 20 Apr 2018 22:23:30 +0000</pubDate><guid>https://blog.playispeace.com/1320/kansai_node_school_1/</guid><description>&lt;p&gt;本日こちらのイベントに参加してきました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nodejs.connpass.com/event/82614/"&gt;関西Node学園 梅田キャンパス 1時限目&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本当は、登壇するつもりでしたが、仕事の状況が読めず参加するら危うかったので、今回は聴くだけの参加しました。&lt;/p&gt;
&lt;p&gt;具体的な登壇内容はいずれ共有されるであろうスライドに期待するとして、個人的メモを残しておきます。&lt;/p&gt;
&lt;h4 id="春からはじめる新しいnodejs-v10"&gt;春からはじめる新しいNode.js v10&lt;/h4&gt;
&lt;p&gt;平野（&lt;a href="https://twitter.com/shisama_"&gt;@shisama_&lt;/a&gt;） さん&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;現在のNodejs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Current,Active,Maintenance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LTS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node4,6,9 はもうすぐLTS（サポート）切れる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node10(来週リリース予定)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dynamoic Import&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Async Iteration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Promise.protoeyp.finally&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RegExp New Features&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;formatToParts&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;toString&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tryCatch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;trimEnd&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node green&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;node –v8-options | grep harmony&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今、自分は、AWS LambdaでNodejs使ってるので、バージョンは6。最近ようやく8が利用できるようになったところ。&lt;/p&gt;
&lt;p&gt;なので、将来のための予習になります。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aws.amazon.com/cn/about-aws/whats-new/2018/04/aws-lambda-supports-nodejs/"&gt;AWS Lambda が Node.js v8.10 をサポート&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="typescript--express"&gt;TypeScript + Express&lt;/h4&gt;
&lt;p&gt;かみやん(&lt;a href="https://twitter.com/kamiyam"&gt;@kamiyam&lt;/a&gt;)さん&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;TypeScript導入&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;静的型付けできる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;例）number,string,number|string,any（禁じ手？！）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JSのスーパーセットなので、そのままJSが動く&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TypeScript + Express&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公式？のはmongodbとか入ってて、重い&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vscode-node-express-example&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;npx は node_module/.binの代わり？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大規模/多人数での開発向け&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;型付けした開発したことないのですが、大規模/多人数、なときはTypeScript導入したいですね。&lt;/p&gt;
&lt;p&gt;スライド内でのデモ用ページ&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/kamiyam/996023564d4d2cc04334b1197c693c36"&gt;https://gist.github.com/kamiyam/996023564d4d2cc04334b1197c693c36&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="babel7xで変わること"&gt;Babel7.xで変わること&lt;/h4&gt;
&lt;p&gt;YukimasaFunaoka（&lt;a href="https://twitter.com/mochiya98"&gt;@mochiya98&lt;/a&gt;）さん&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;パッケージの名前が変わる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ex-20xxが非推奨&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;babel公式ブログ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最新情報はNearning the Release 7.0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;（これがおそらく最新。なければ）Plannninng for 7.0&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最新かつ正しい情報を追うのはコツがいるような印象受けました。&lt;/p&gt;
&lt;p&gt;あと、 npxというコマンドを初めてしりました。&lt;/p&gt;
&lt;p&gt;今まで、&lt;/p&gt;</description></item><item><title>Web based IoT KANSAI 3 開催した #webbiot</title><link>https://blog.playispeace.com/1310/web-based-iot-kansai-3/</link><pubDate>Wed, 21 Mar 2018 01:26:11 +0000</pubDate><guid>https://blog.playispeace.com/1310/web-based-iot-kansai-3/</guid><description>&lt;p&gt;&lt;a href="https://webbiot.connpass.com/event/80342/"&gt;Web based IoT KANSAI 3&lt;/a&gt; を開催しました。webのクリエイター、エンジニア、デザイナー、もIoTやっていこうぜ、というイベントを関西で実施してまして、今回で３回目です。&lt;/p&gt;
&lt;h4 id="イベントの雰囲気"&gt;イベントの雰囲気&lt;/h4&gt;
&lt;p&gt;イベントの形式ですが、まず、各自お酒とつまみを持参します。&lt;/p&gt;
&lt;p&gt;そして乾杯から始まり、飲み食いしながらLTしたい人が喋る、という形式で、かなりゆるいです。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2018/03/IMG_4698-min-768x1024.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;LTの時間も一応10分とは書いてますが、あくまで目安です。&lt;/p&gt;
&lt;p&gt;途中で質問するわ脱線するわで、結局30分経ってた、ということもありますし、LT予定してなかったけど、イベント来ていきなりLT始める、というのもあります。&lt;/p&gt;
&lt;p&gt;それも、酒を飲みながらなので、気軽に話せたり、突っ込んだ話も聞けるしなイベントで、３回やってみて思いました。&lt;/p&gt;
&lt;p&gt;これは「いきなり懇親会」だな、と。&lt;/p&gt;
&lt;h4 id="いきなり懇親会"&gt;いきなり懇親会&lt;/h4&gt;
&lt;p&gt;こういったイベントではよく、懇親会からが本番、というのを聞きます。&lt;/p&gt;
&lt;p&gt;それは、理由として&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;講演のような硬い形式の発表では聞けない、言いにくい内容の話が聞ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;発表者に直接１対１で、話が聞ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;酒も入ってるので、本音（に近い深い）話が聞ける&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という点が挙げられると思うのですが、このWeb based IoT KANSAIは、いきなりこのメリットを享受できているのかも、と思いました。&lt;/p&gt;
&lt;p&gt;本当は、人数増やして規模を大きくしていきたい、という思いはあるのですが、一方で、この形式も悪くないなと、思ってもいます。「この形式良いですね」とも言って頂けますし。&lt;/p&gt;
&lt;h4 id="内容"&gt;内容&lt;/h4&gt;
&lt;p&gt;発表内容はざっと以下のようなものでした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;広島県のIoTへの取り組み&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;明星和楽という良い意味でカオスイベント&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ユニロボット（ユニボ）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;介護とIoT&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;codey-rockyという全部のせロボット&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ルワンダと神戸の熱い関係&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここからもろもろ脱線も含め３時間ほどの会になってしまいました。。。&lt;/p&gt;
&lt;p&gt;少人数だとみなさん結構しゃべりますよね。&lt;/p&gt;
&lt;p&gt;これも懇親会ぽいなと思いました。発表してーだと遠慮しちゃうけど、喋りたい気持ちはあるんですよね。きっと。&lt;/p&gt;
&lt;h4 id="総括"&gt;総括&lt;/h4&gt;
&lt;p&gt;少人数ゆえの気軽な形が好評なので、今後もこのイベント続けていきたいなと思いました。&lt;/p&gt;</description></item><item><title>Node-RED UG Japan Osaka キックオフ</title><link>https://blog.playispeace.com/1305/node-red-ug-japan-osaka-kickoff/</link><pubDate>Sun, 25 Feb 2018 15:05:52 +0000</pubDate><guid>https://blog.playispeace.com/1305/node-red-ug-japan-osaka-kickoff/</guid><description>&lt;p&gt;2/24（土）に Node-REDのユーザグループ&lt;/p&gt;
&lt;p&gt;Node-RED UG Japan の大阪拠点のキックオフがありました。&lt;/p&gt;
&lt;p&gt;そこで、運営のお手伝いとLTしてきました。&lt;/p&gt;
&lt;h5 id="発表資料"&gt;発表資料&lt;/h5&gt;
&lt;p&gt;内容は、Node-REDのフロー処理で、2股に分けた際に、outputノードがない場合に、その処理の終了確認をした後にもう片方を処理させる方法を頑張って調べた、というものです。（文章で書くと伝えづらい）&lt;/p&gt;
&lt;p&gt;ということで、最後のページに書きましたが、今後、NodeREDカスタムノードを書く場合は、ぜひともoutputを付けて頂ければ、使う側も利用しやすくなると思いますのでおすすめです。&lt;/p&gt;
&lt;h5 id="運営スタッフとして"&gt;運営スタッフとして&lt;/h5&gt;
&lt;p&gt;また、久々にコミュニティのスタッフやらせてもらいましたが、裏方の大変さを改めて知りましたね。いやー、普段参加してるだけのイベントのスタッフさん、改めて感謝です。&lt;/p&gt;
&lt;p&gt;今後も、定期的に開催しますので、この記事を読んで少しでも興味を持たれた方は、ぜひ次回（4月予定）ご参加下さい。&lt;/p&gt;
&lt;h4 id="イベント情報"&gt;イベント情報&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://togetter.com/li/1202778"&gt;イベントの様子（togetter）&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.facebook.com/groups/noderedjp"&gt;Facebook Group&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>JP_StripesでLTしてきた</title><link>https://blog.playispeace.com/1297/lt_in_jp_stripes_osaka_vol2/</link><pubDate>Tue, 05 Dec 2017 00:23:24 +0000</pubDate><guid>https://blog.playispeace.com/1297/lt_in_jp_stripes_osaka_vol2/</guid><description>&lt;p&gt;&lt;a href="http://eventregist.com/e/JP_Stripes_OSK_2"&gt;JP_Stripes (Stripe ユーザーグループ）in Osaka Vol.2&lt;/a&gt; でLTしてきました。&lt;/p&gt;
&lt;h4 id="webサービスにstripeを導入するまでの軌跡"&gt;webサービスにstripeを導入するまでの軌跡&lt;/h4&gt;
&lt;p&gt;このタイトルで、発表してきました。資料はこちら&lt;/p&gt;
&lt;h4 id="発表の経緯"&gt;発表の経緯&lt;/h4&gt;
&lt;p&gt;なぜ発表したかは、資料内で簡単に触れてますが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;最近、ローンチした&lt;a href="https://isyo.herokuapp.com"&gt;遺書一筆&lt;/a&gt;に、オンライン決済サービス導入したかった&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;どのサービス実装しようか探していたら、たまたまJP_Stripesの勉強会を発見した&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自分を追い込むためLT枠申し込んだ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という流れです。イベント・ドリブン開発、または、テスト前必死に勉強するメソッド、です。&lt;/p&gt;
&lt;h4 id="発表の目的"&gt;発表の目的&lt;/h4&gt;
&lt;p&gt;目的を整理すると、発表することが、一番の勉強法だと思っているからです。&lt;/p&gt;
&lt;p&gt;発表することで、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;意地でも何かしらのアウトプットを作るので頑張れる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;発表資料も作るので、自分のアウトプットが形に残せる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ただ誰かから教えてもらう、のではなく、まずは自分からアウトプットすることで、誰かの助けになり、それが巡り巡って、自身のインプットになる、と思っている&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というように、精神的に追い込まれる（追い込む）部分は、ありますが、それを上回るメリットがあるので、LTすることにしました。&lt;/p&gt;
&lt;h4 id="アウトプットは"&gt;アウトプットは？&lt;/h4&gt;
&lt;p&gt;とりあえずローカルで動かすものは作れましたが、実際のサービスインにはまだ半分ぐらい作業が残っております。。。&lt;/p&gt;
&lt;p&gt;それができ次第またまた報告したいと思います。&lt;/p&gt;
&lt;p&gt;あと、LT発表枠でTシャツもらえました。&lt;/p&gt;
&lt;p&gt;LT枠で参加したらTシャツ貰えた。やったぜ！ &lt;a href="https://t.co/C8RNjYCRHv"&gt;pic.twitter.com/C8RNjYCRHv&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— papettoTV (@papettoTV) &lt;a href="https://twitter.com/papettoTV/status/937628110438014976?ref_src=twsrc%5Etfw"&gt;2017年12月4日&lt;/a&gt;&lt;/p&gt;</description></item><item><title>「遺書一筆」の作り方</title><link>https://blog.playispeace.com/1288/how_to_make_isyoippitsu/</link><pubDate>Tue, 24 Oct 2017 00:46:34 +0000</pubDate><guid>https://blog.playispeace.com/1288/how_to_make_isyoippitsu/</guid><description>&lt;p&gt;&lt;a href="https://isyo.herokuapp.com/"&gt;遺書一筆&lt;/a&gt;というサービスの技術解説編です。&lt;/p&gt;
&lt;p&gt;想い編は&lt;a href="https://blog.playispeace.com/1285/isyoippitsu/"&gt;前回のこちらの記事&lt;/a&gt;です&lt;/p&gt;
&lt;h4 id="サービス構成"&gt;サービス構成&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;express + loopback&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;React.js&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bootstrap（react-bootstrap）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を使った構成としました。プログラムはすべてjavascriptです。&lt;/p&gt;
&lt;p&gt;これは現在会社で開発しているサービスを学ぶために、同じ構成にしました。&lt;/p&gt;
&lt;p&gt;どちらかというと、React.js が初挑戦のため、こちらメインです。&lt;/p&gt;
&lt;h5 id="学んだこと"&gt;学んだこと&lt;/h5&gt;
&lt;p&gt;とにかくこの点が圧倒的に大きい&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SPAっぽいサービスにReact.js使うときって、設計の考え方を変えないといけない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今までの、サーバ・クライアントが、だいたい１対１で処理し合う関係、でした。&lt;/p&gt;
&lt;p&gt;この考え方だと全くReact.jsらしくない構成になってしまうので、ここは何度も壊して作り直しました。&lt;/p&gt;
&lt;p&gt;今の私のイメージだと&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;最初の画面（例えばindex.html）をロードしたら、それ以降の遷移で必要なパラメータはできるだけ一気にロードしておく&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;それ以降の画面遷移や画面の切り替えは、React（つまりクライアントのみでサーバと通信しない）で処理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;画面遷移先で、特定ユーザの情報など、再度サーバと通信が必要な際に、&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;画面ごと遷移してロードし直し（今まで /#〜　というURLで動いていたものが、 例えば /mypage#〜 に変わる）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;非同期で、取得（ajaxで非同期通信してその結果を受けて、画面再描画）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;のどちらか２つを選ぶ、という考え方になるのかなと思いました。&lt;/p&gt;
&lt;p&gt;この最後の２択の判断基準に、まだ知識が足りてない感があるので、今後の課題ですね。&lt;/p&gt;
&lt;p&gt;とりあえず、まだまだreactらしく作れていない点はあるとおもいますが、&lt;/p&gt;
&lt;p&gt;この、今までとの作りの考え方に、大きな違いがある、ということが学べたことが収穫でした&lt;/p&gt;
&lt;h5 id="reactjsの特に悩んだところ"&gt;React.jsの特に悩んだところ&lt;/h5&gt;
&lt;h6 id="最初の構築環境の壁が高すぎる"&gt;最初の構築環境の壁が高すぎる・・・&lt;/h6&gt;
&lt;p&gt;色々試した結果、&lt;a href="https://qiita.com/kjugk/items/e23556bb1ca908dd6f6b"&gt;ここ&lt;/a&gt;が一番触りやすかったです。&lt;/p&gt;
&lt;p&gt;Bootstrapも導入したかったので、その導入のし易さでこちらをベースにさせていただきました。&lt;/p&gt;
&lt;h6 id="画面遷移をどう設計するか"&gt;画面遷移をどう設計するか&lt;/h6&gt;
&lt;p&gt;そもそも、画面を遷移させる必要があるのか、を考えないといけない。&lt;/p&gt;
&lt;p&gt;単なる、ポップアップ（modalとか）でいいのじゃないか。とか。&lt;/p&gt;
&lt;p&gt;細かいUIは後付でなんとなりますが、大きな遷移（データの流れ・外部サービスとの連携とか）は変えにくいので、きっちり設計しないといけませんね。&lt;/p&gt;
&lt;p&gt;（というとwebサービスでは当たり前の話でした。。。&lt;/p&gt;
&lt;h6 id="apiの叩き方"&gt;APIの叩き方&lt;/h6&gt;
&lt;p&gt;ajaxなスクリプト呼んだけど、これはスマートなやり方なのか。。。&lt;/p&gt;
&lt;p&gt;でも、これはあくまで、ReactはUIライブラリなので、React関係ない話ですかね。にしても、componentファイルにajaxのコード書くのは違和感があるなー。&lt;/p&gt;
&lt;h6 id="値の引き回し方"&gt;値の引き回し方&lt;/h6&gt;
&lt;p&gt;これ自体、あまりスマートに掛けないことがわかった。多くの遷移を跨いでの引き回しは非常にコードがきれいじゃないなと。&lt;/p&gt;
&lt;p&gt;だからFluxやReduxが必要になるんだなと理解しました。まだそこまではいけてない。&lt;/p&gt;
&lt;h5 id="見た目"&gt;見た目&lt;/h5&gt;
&lt;p&gt;デザインの設計なんて出来ない人なので、そこはBootstrapにお任せ。難しいことはしない、できるだけ身を任せました。&lt;/p&gt;
&lt;h5 id="その他感想"&gt;その他感想&lt;/h5&gt;
&lt;p&gt;ただ、ちょっとしたUIパーツの実装は非常に楽だしスマートですね。&lt;/p&gt;
&lt;p&gt;例えばmodalとかこんな感じで書けます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
 このサービスについて

 「遺書一筆」は、遺書を書くことができるサービスです。
 ・・・
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;cssやjavascriptを考えなくても、単にModalタグを呼び出せばokです。楽ですね。&lt;/p&gt;
&lt;h5 id="ソース"&gt;ソース&lt;/h5&gt;
&lt;p&gt;ソースコード絶賛公開しております。&lt;/p&gt;
&lt;p&gt;見て参考にしていただくなり、プルリクエスト投げるなり、好きに使ってください！&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/papettoTV/isyo"&gt;https://github.com/papettoTV/isyo&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="今後"&gt;今後&lt;/h4&gt;
&lt;p&gt;課金機能つくらねば。。。&lt;/p&gt;</description></item><item><title>「遺書一筆」リリース</title><link>https://blog.playispeace.com/1285/isyoippitsu/</link><pubDate>Fri, 20 Oct 2017 01:28:22 +0000</pubDate><guid>https://blog.playispeace.com/1285/isyoippitsu/</guid><description>&lt;p&gt;&lt;a href="https://isyo.herokuapp.com/"&gt;遺書一筆&lt;/a&gt;というサービスをリリースしました。&lt;/p&gt;
&lt;h4 id="遺書一筆とは"&gt;遺書一筆とは？&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://isyo.herokuapp.com/"&gt;遺書一筆&lt;/a&gt;とは、遺書を書くことができるサービスです。&lt;/p&gt;
&lt;p&gt;遺書を書くことで、普段中々意識しない&amp;quot;周りへの気持ち&amp;quot;や&amp;quot;日常の有り難さ&amp;quot;という気持ちが、少しでも意識できると思います。それにより普段の&amp;quot;生きる&amp;quot;が、少しでも充実できると考えて、サービスを作りました。&lt;/p&gt;
&lt;h5 id="何ができる"&gt;何ができる？&lt;/h5&gt;
&lt;p&gt;遺書を書けます。それだけです。もちろん、いくつも書くものではなく、書ける遺書は一つだけ。簡単に言うと、１つしか書けない日記サービスです。&lt;/p&gt;
&lt;h5 id="何故こんなサービスをつくったか"&gt;何故こんなサービスをつくったか？&lt;/h5&gt;
&lt;p&gt;このサービスを作った目的は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;（想い）自分の周りのみんなに、少しだけでも&amp;quot;生&amp;quot;を充実させる方法を伝えたかった&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;（技術）技術的に勉強したかった（loopback,react）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;の２つがあり、今回は&amp;quot;想い&amp;quot;について書きます。次の記事で技術編を書きます。&lt;/p&gt;
&lt;h5 id="作った想いについて"&gt;作った想いについて&lt;/h5&gt;
&lt;p&gt;ここ数年ですが、&amp;ldquo;生きる&amp;quot;ってなんだろう？と改めて考える機会が増え、自分の中である一定の答えが出ました。それは、&lt;/p&gt;
&lt;p&gt;&lt;em&gt;いつ死ぬか分からないので、今生きるていることに出来る限り感謝する&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;と言うものです。ありふれた言葉ですが、色々考えが巡った結果、一言でいうとこの形になりました。&lt;/p&gt;
&lt;h5 id="感謝しているか"&gt;感謝しているか&lt;/h5&gt;
&lt;p&gt;では、普段から全力で感謝しているか、を振り返ると、そうでない日々がすごく多いことに気づきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;誰かと比較して、劣等感を感じる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自分か感じた嫌な気持ちを、人にも押し付ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;仕事のプレッシャーがきつくて、会社に行きづらい&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;など、息苦しく生きている時間がないか？小さなストレスを貯めてないか？そうやって自分を追い詰めてないか？&lt;/p&gt;
&lt;p&gt;そんな、辛い時間が少なからずあることと想います。&lt;/p&gt;
&lt;p&gt;でも、もっと、&amp;ldquo;生きる&amp;rdquo;、って本当はそれだけで幸せなことじゃないか？そう考えるようになると、そんな嫌な気持ちにも、ありがたいと考えれるようになってきました。&lt;/p&gt;
&lt;h5 id="感謝を意識する"&gt;感謝を意識する&lt;/h5&gt;
&lt;p&gt;簡単に言うと、&amp;ldquo;生きていること&amp;quot;そのものに感謝できれば、日々の生活が充実したものになる、そう気づきました。それができるようになると、普段の様々な出来事にポジティブでいられるようになりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;３食食事が食べられること&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;会社の仲間とともに笑いあい、目標に向かって頑張ること&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;帰る場所があること&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;外の空気が吸えること&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;いつものように朝が迎えられること&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なんでもない日常に少しでも感謝できれば、普段の&amp;quot;生&amp;quot;が少し充実する、ということに気づきました。&lt;/p&gt;
&lt;h5 id="みんなに伝える"&gt;みんなに伝える&lt;/h5&gt;
&lt;p&gt;これが分かって、自分の&amp;quot;生&amp;quot;は少しずつ充実し始めたのですが、これをみんなに伝える・分かってもらいたい、と思うようになりました。自分とコミュニケーションできる人には伝えることができますが、自分と関わらない人には、中々伝えることは難しい。そこで、考えたのが、このwebサービスです。これを通して、利用者に&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;普段中々意識しない、&amp;ldquo;生&amp;quot;への感謝を意識する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ということを伝えたいと思いました。&lt;/p&gt;
&lt;h5 id="遺書を扱うこと"&gt;遺書を扱うこと&lt;/h5&gt;
&lt;p&gt;一見、遺書というセンシティブなものを扱うのは、ためらいがあったのは確かです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;そんな大事なものを個人が運営するようなサービスで利用しようと思う人が現れるのか？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;扱うデータの内容が重すぎない？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そもそも、本当に遺書として遺す人が現れて、何かトラブルに巻き込まれない？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記のように、本当に&amp;quot;遺書を遺す&amp;quot;サービスとして、捉えられると、本来の意図とずれてしまうという懸念はあるので、webサービスとしての、メッセージの伝え方は難しいなと思っています。公開した今も、最適な形とは思いませんので、ぜひ、皆様からのフィードバックいただければ思っています。&lt;/p&gt;
&lt;h5 id="個人だからできるサービス"&gt;個人だからできるサービス&lt;/h5&gt;
&lt;p&gt;ですが、だからこそ、こういったテーマを扱うサービスは他で見当たりません。&lt;/p&gt;
&lt;p&gt;なので、存在意義があり、公開する意味があると思っています。もし、公開して、利用者が増えれば、個人的にもやった甲斐があったなと思えますので、広まってほしいという気持ちはあります。&lt;/p&gt;
&lt;h5 id="非公開"&gt;非公開&lt;/h5&gt;
&lt;p&gt;「え、恥ずかしくて遺書なんて書けない」そう思いましたか？&lt;/p&gt;
&lt;p&gt;安心してください、公開されてませんよ。&lt;/p&gt;
&lt;p&gt;書いた遺書は、書いた本人しか見れません。&lt;/p&gt;
&lt;p&gt;※今後のversionで、見たい遺書に課金した人のみに公開する予定です。&lt;/p&gt;
&lt;h5 id="えwebなのに非公開ってそれ意味ある"&gt;え、webなのに、非公開ってそれ意味ある？&lt;/h5&gt;
&lt;p&gt;このSNS全盛の時代に、非常にクローズドなwebサービスです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;遺書というセンシティブなテーマ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;クローズドなサービス&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;誰もやろうとしませんよね、特に企業は。だからこそ個人でやる意味があるのかなと思いました。&lt;/p&gt;
&lt;p&gt;※今後のversionで、見たい遺書に課金した人のみに公開する予定です。&lt;/p&gt;
&lt;h4 id="まとめ"&gt;まとめ&lt;/h4&gt;
&lt;p&gt;とにかく、一度書いてみてほしいです。&lt;/p&gt;
&lt;p&gt;そのときに何を感じるか、何を想って書くのか。&lt;/p&gt;
&lt;p&gt;  “それ”を感じ取ってもらえれば幸いです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://isyo.herokuapp.com/"&gt;遺書一筆&lt;/a&gt;&lt;/p&gt;</description></item><item><title>リモートワークを始めて１ヶ月経って気づいたこと</title><link>https://blog.playispeace.com/1279/remote_working_for_a_month/</link><pubDate>Mon, 02 Oct 2017 20:47:07 +0000</pubDate><guid>https://blog.playispeace.com/1279/remote_working_for_a_month/</guid><description>&lt;p&gt;リモートワーク（自宅勤務）始めて１ヶ月過ぎましたので、感想まとめます。&lt;/p&gt;
&lt;h4 id="生産性"&gt;生産性&lt;/h4&gt;
&lt;p&gt;結論から言うと、体感ですが、１日８時間労働内での生産性は大きくは変わりません。どちらかというと、自宅の方が高いかな？ぐらい。（でもほぼ誤差）&lt;/p&gt;
&lt;p&gt;実施する前は、自宅勤務だと生産性が下がるのでは、という不安なところは有りましたが、それは無かったのでまずは安心です。&lt;/p&gt;
&lt;h5 id="気づき"&gt;気づき&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;オフィスってそれなりに最適化されてるので生産性が悪くない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;それと同じような環境が自宅でも実施できた&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というのに気付けたことが一つの成果と思っています。&lt;/p&gt;
&lt;p&gt;オフィスワークとの違いは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;メリット：オフィスに居るときには入ってくる雑音（自分に関係のない会話等）に巻き込まれない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デメリット：オフィスに居ないことによる気の緩みで、余計なことしちゃう（facebook見がちとか、少し家の作業手伝っちゃうとか）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;で、プラマイゼロ感はあるのですが、マイナスは、打ち消していけそうなので、自宅勤務の方がまだ伸びしろはあると感じはします。&lt;/p&gt;
&lt;h4 id="出来た時間の使い方"&gt;出来た時間の使い方&lt;/h4&gt;
&lt;p&gt;通勤時間（3.5時間）がまるまる浮くわけですが、どう活用できたか。&lt;/p&gt;
&lt;p&gt;まずは朝の時間&lt;/p&gt;
&lt;h5 id="朝にできた時間"&gt;朝にできた時間&lt;/h5&gt;
&lt;p&gt;ここの時間は、活用が難しかったです。&lt;/p&gt;
&lt;p&gt;理由は「仕事モードへの切り替えがあいまいになる」ためです。&lt;/p&gt;
&lt;p&gt;従来なら、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;朝飯食べて&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;着替えて&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通勤して&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;オフィスに着いて着席&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というステップがあり、仕事モードへスイッチが切り替わるのですが、自宅だと&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;朝飯食って&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;着替えて&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デスクに着席&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;となり、目が覚めないうちに作業開始となるので、スムーズに始めれませんでした。&lt;/p&gt;
&lt;h5 id="気づき-1"&gt;気づき&lt;/h5&gt;
&lt;p&gt;ここで気づいたのは、通勤中に歩いたり朝日を浴びたりすることに、意味があったんだなと確認できました。&lt;/p&gt;
&lt;p&gt;なので、自宅勤務でも頭を切り替えれるようなこと（朝デスク着く前に少し外を散歩するとか、読書してみるとか）をすれば、スムーズに仕事始めれそうな気がしてます。&lt;/p&gt;
&lt;h5 id="夜にできた時間"&gt;夜にできた時間&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;outputが増やせました&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プライベートワークが充実しました&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="output"&gt;output&lt;/h6&gt;
&lt;p&gt;outputで言うと、このブログがまさにそれで、こんな記事は平日に書く時間の確保は難しかったのですが、時間に余裕ができたことで、執筆できました。&lt;/p&gt;
&lt;h6 id="プライベートワーク"&gt;プライベートワーク&lt;/h6&gt;
&lt;p&gt;プラベートワークに関して言うと、今は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;筋トレor水泳&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;個人サービスの開発&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ピアノ練習&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;に当ててますが、それぞれゆったりこなせる時間の確保ができました。&lt;/p&gt;
&lt;p&gt;あと、夜出来た時間というより、家庭内スケジュールの都合ですが、&lt;/p&gt;
&lt;p&gt;今まで殆どが一人で晩御飯でしたが、家族と晩御飯を一緒に過ごせるようになりました。&lt;/p&gt;
&lt;p&gt;これ、意外と大事なことですよね。&lt;/p&gt;
&lt;h4 id="まとめ"&gt;まとめ&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;生産性は変わらない（若干まだ向上の余地あり）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;朝の時間は、目覚めの切り替え方法の確立が重要&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;夜の時間は、プライベートワーク充実し、家族との時間が増えた&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と、書くと、いい事ずくめには見えますが、かと言ってリモートワーク&amp;quot;だけ&amp;quot;しようとは思っていません。オフィスに出向いて、みんなと同じ場所で働く重要さもあると思っているからです。&lt;/p&gt;
&lt;p&gt;なので、今後も週の半分リモートワークで、半分をオフィス勤務にしようと思っています。&lt;/p&gt;</description></item><item><title>EVO2017が面白すぎたので資料作っちゃいました</title><link>https://blog.playispeace.com/1273/evo2017/</link><pubDate>Sat, 16 Sep 2017 01:07:10 +0000</pubDate><guid>https://blog.playispeace.com/1273/evo2017/</guid><description>&lt;p&gt;タイトルの通り。面白すぎて何度も見てしまうので、この面白さをみんなに伝えるべく資料をつくっちゃいました。&lt;/p&gt;
&lt;p&gt;見たことない人も見たことある人もぜひ一度ご覧あれ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="//www.slideshare.net/YokotaEiji/evo2017-79603876"&gt;Evo2017&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;途中貼ってる動画は、必ず見てください。&lt;/p&gt;
&lt;p&gt;会場の熱、コメントの盛り上がり、解説・実況者の興奮。&lt;/p&gt;
&lt;p&gt;感じてください。&lt;/p&gt;</description></item><item><title>リモートワーク、始めました</title><link>https://blog.playispeace.com/1266/start_remote_work/</link><pubDate>Tue, 05 Sep 2017 00:41:05 +0000</pubDate><guid>https://blog.playispeace.com/1266/start_remote_work/</guid><description>&lt;p&gt;「私、今日が初めてなの」&lt;/p&gt;
&lt;p&gt;ということで、本日よりリモートワークを開始しました。&lt;/p&gt;
&lt;p&gt;多分、初日の今日、感じた初めての気持ちは、もう今後一生感じれないと思うので残しておきます。&lt;/p&gt;
&lt;h4 id="リモートワーク初日"&gt;リモートワーク初日&lt;/h4&gt;
&lt;p&gt;今までもリモートワークっぽいことはしていましたが、正式に会社・上司に認められる形で今月から週２回の試験運用を開始、その初日が今日でした。&lt;/p&gt;
&lt;h5 id="環境"&gt;環境&lt;/h5&gt;
&lt;p&gt;まず場所ですが、実家の2F、余り使われてない部屋があったので、片付けて、IKEAで揃えた机とイスを新調。それだけの、簡単な環境です。&lt;/p&gt;
&lt;h6 id="準備"&gt;準備&lt;/h6&gt;
&lt;p&gt;だいたい、机で¥15,000、イスで¥20,000ぐらいで揃えました。&lt;/p&gt;
&lt;p&gt;イスはもっとお金かけていいとこだと思ってるのですが、いきなり掛けて失敗できないので、まずは手頃なものを選びました。&lt;/p&gt;
&lt;p&gt;今後ちょくちょく必要な備品は揃えたり、versionアップしていこうかと思っています。（まずはマルチディスプレイにせねば。。。&lt;/p&gt;
&lt;h6 id="プラス35時間"&gt;プラス3.5時間&lt;/h6&gt;
&lt;p&gt;私は通勤時間だけで往復約3時間半移動で消費してました。これを活かせるのが大きいです。&lt;/p&gt;
&lt;p&gt;今日は、朝、机やイス、PCのベストポジション探しに時間使いましたが。。。&lt;/p&gt;
&lt;p&gt;新たに生まれたその時間に何か色々実施したいので、何かしら目標を決めようと思ってます。&lt;/p&gt;
&lt;h6 id="集中力"&gt;集中力&lt;/h6&gt;
&lt;p&gt;今日だけで評価するのは早い気もしますが、ちょっと慣れない、足りてない感じと、リモートワーク自体に浮ついてしまい、若干ふわふわしていた感があります。&lt;/p&gt;
&lt;p&gt;が、やはりオフィスには無い、集中のし易さは感じます。&lt;/p&gt;
&lt;h6 id="動きがない"&gt;動きがない&lt;/h6&gt;
&lt;p&gt;人が自分しかいない部屋なので、周りに目線を奪われる動きがありません。これは集中しやすいですね。&lt;/p&gt;
&lt;h6 id="雑音が少ない"&gt;雑音が少ない&lt;/h6&gt;
&lt;p&gt;これも同様、基本的に、人が自分しかいないので、関係のない会話や雑音が少ないです。近所の雑音はありますが、イヤホンをしてしまえば、完全に一人の世界になれます。&lt;/p&gt;
&lt;p&gt;これもオフィスに比べて、集中しやすいですね。&lt;/p&gt;
&lt;h6 id="まだまだ向上できる"&gt;まだまだ向上できる&lt;/h6&gt;
&lt;p&gt;今後、環境をどんどん良くしていけば、オフィスより確実に良い環境になるなという期待があり、楽しみです。&lt;/p&gt;
&lt;h4 id="勤務外の活動"&gt;勤務外の活動&lt;/h4&gt;
&lt;p&gt;運動不足解消のため、週に１，２度、帰りの通勤路の途中駅で降りてプールに通ってました。&lt;/p&gt;
&lt;p&gt;今日は勤務終了後、家を出てプールに向かったのですが、家を出てまでプールでしんどい思いをするのか、というのが億劫に感じました。&lt;/p&gt;
&lt;p&gt;これは家でのリモートワークの欠点かもしれません。&lt;/p&gt;
&lt;p&gt;ただ、普段オフィス通いならできない、サンダル履いてプール行けたので、泳いだ後シャワーを浴びて、サンダルで帰れて気持ち良かったです。これ地味ですが個人的には大きいです。&lt;/p&gt;
&lt;h4 id="疲労感の軽減"&gt;疲労感の軽減&lt;/h4&gt;
&lt;p&gt;通勤による疲労が無いせいか、疲労感が普段より少ないです。これはいいことですね。&lt;/p&gt;
&lt;h4 id="欠点"&gt;欠点&lt;/h4&gt;
&lt;p&gt;誰も居ないので、ついついfacebookや長めのyoutubeを見てしまう。。。というのはありますね。&lt;/p&gt;
&lt;p&gt;人は弱い生き物。。。ここは自制心との戦いですが、仕組みで防げることも分かりました。&lt;/p&gt;
&lt;p&gt;メインの案件で、夕会という形で毎日進捗報告しています。&lt;/p&gt;
&lt;p&gt;その為８時間の業務で、何かしらのアウトプットがないと、報告することがありません。&lt;/p&gt;
&lt;p&gt;これがいいプレッシャーになって、仕事に向かわせてくれます。&lt;/p&gt;
&lt;p&gt;毎日の定例大事。&lt;/p&gt;
&lt;h5 id="１日やってみて"&gt;１日やってみて&lt;/h5&gt;
&lt;p&gt;改めて振り返ると、１日がとても長く感じました。今まで当たり前のように毎日通勤に時間を浪費していましたが、当たり前にしてはいけないなと。こんなに１日時間があったのかと、思い知らされました。&lt;/p&gt;
&lt;p&gt;まとめとしては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;オフィスよりも集中できそうなので、生産性はあがりそう&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通勤による余計な疲労が少ない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プライベートワークな時間が増え、仕事以外のアウトプット量が増える&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;※このブログを書けるのも増えた時間のおかげです。&lt;/p&gt;
&lt;p&gt;ということが今日の感想でした。もうちょっとこなれてくれば、また違った感想になりそうです。またその時にまとめたいと思います。&lt;/p&gt;
&lt;h5 id="おまけ"&gt;おまけ&lt;/h5&gt;
&lt;p&gt;せっかくリモートワークできるチャンスを頂けたので、最高の環境で普段以上のパフォーマンスを出すのが最低限の責務と思ってます。&lt;/p&gt;
&lt;p&gt;なので、まだまだ改善・及びアウトプット続けていきたいと思います。&lt;/p&gt;</description></item><item><title>まにフェスでIoTの魅力についてLTしてきました</title><link>https://blog.playispeace.com/1263/iot_lt_at_manifes/</link><pubDate>Sun, 03 Sep 2017 16:47:06 +0000</pubDate><guid>https://blog.playispeace.com/1263/iot_lt_at_manifes/</guid><description>&lt;p&gt;&lt;a href="http://m2college.net/fes5/index.html"&gt;まにフェス&lt;/a&gt;で発表してきました。&lt;/p&gt;
&lt;p&gt;その時の資料はこちら&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="//www.slideshare.net/YokotaEiji/iot-79384491"&gt;IoTの魅力&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href="https://www.slideshare.net/YokotaEiji"&gt;Eiji Yokota&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;神戸デジタルラボの村岡さんが総合司会を務めるこのイベントで、ウェアラブルデバイスユーザ会で発表の枠を頂けましたので、IoTの魅力、というタイトルで話してきました。&lt;/p&gt;
&lt;p&gt;こういった場での発表は久々だったので、発表の話を頂いたその日から、実は緊張が。。。&lt;/p&gt;
&lt;p&gt;発表当日も落ち着こうと思ってたのに、やはり、落ち着きが無く。&lt;/p&gt;
&lt;p&gt;一方的に話すような形になったな、と反省。&lt;/p&gt;
&lt;p&gt;聞いてくださった皆さんにうまく思いが伝わったか不安ですが、&lt;/p&gt;
&lt;p&gt;次機会があれば、もっと皆さんの様子を見ながら話せるぐらい落ち着いて話ししたいですね。&lt;/p&gt;
&lt;p&gt;今回の機会をいただいた、村岡さん、またこのイベントの運営しているかぷっとさんに感謝です。&lt;/p&gt;
&lt;p&gt;また機会があればぜひよろしくお願いします。&lt;/p&gt;
&lt;p&gt;（招待されるぐらいの人間にならないと！&lt;/p&gt;</description></item><item><title>Web based IoT 勉強会立ち上げました</title><link>https://blog.playispeace.com/1260/startup-web-based-iot-community/</link><pubDate>Thu, 17 Aug 2017 23:19:00 +0000</pubDate><guid>https://blog.playispeace.com/1260/startup-web-based-iot-community/</guid><description>&lt;p&gt;もっとwebの人たちにIoTを！ということでこのような会を @bathtimefishこと村岡さんと企画し、&lt;a href="https://webbiot.connpass.com/event/61299/"&gt;第１回&lt;/a&gt;を開きました。&lt;/p&gt;
&lt;p&gt;私も喋らせていただいたのでその時の資料を公開します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="//www.slideshare.net/YokotaEiji/webiot-78925201"&gt;webエンジニアがIoTにハマるわけ&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href="https://www.slideshare.net/YokotaEiji"&gt;Eiji Yokota&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;とにかく、やること盛り沢山で勉強しないといけないことも盛り沢山です。そんな環境に身を置けることがエンジニアとしては幸せだな、と純粋に思うので、みなさんにもぜひ体験いただきたいなと思います。&lt;/p&gt;
&lt;p&gt;勉強会開催にあたり、場所を提供いただいた神戸デジタルラボ様ありがとうございました。次回は大阪予定です。日付など詳細が決まりましたらtwitter等で告知しますので、よろしくお願いします。&lt;/p&gt;</description></item><item><title>Deep Learning実装祭り!! に参加してきた</title><link>https://blog.playispeace.com/1256/deep-learning-reporting-event/</link><pubDate>Sat, 18 Feb 2017 19:05:06 +0000</pubDate><guid>https://blog.playispeace.com/1256/deep-learning-reporting-event/</guid><description>&lt;p&gt;&lt;a href="https://naniwa-tech-dou.connpass.com/event/49177/"&gt;なにわtech道 Deep Learning実装祭り!!&lt;/a&gt; に参加してきたのでそのメモ&lt;/p&gt;
&lt;h4 id="tensorflowで分かるディープラーニング"&gt;TensorFlowで分かるディープラーニング&lt;/h4&gt;
&lt;h5 id="google-佐藤一憲"&gt;google 佐藤一憲&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;脳みそのニューラルネットを人工的に模した物&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;データ分類の傾き(２次元・線形の場合、ニューラルネットで言う重み）を人間がやっていたのを学ばせる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;勾配降下法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;google could datalabを使ったデモ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;１段のニューラルネット&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;手書き数字画像から数字を判断&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;784枚の学習画像、0-9の10枚の正解（ラベル）画像&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;y = softmax(Wx+b)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;いきなりTensorFlowやるよりは、まずはオライリー、ゼロから始まるディーブラーニング、がおすすめ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;softmaxとは、1-10までの数値確率っぽいもの。すべてを足して１にする。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;トレーニング&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cross_entry = 判定時にどれぐらい間違ってるか。wを正解に近づけていく。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;勾配降下法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学習先環境（gpu,cpu,tpu）とセッションを作る&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;test&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;accuracy 正解精度 91%&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;true/falseではない、モヤッとしたデータをプログラムで扱える、というパラダイム・感覚が面白い&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;同僚の複数段デモ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;複数段にする意味。隠れ層を足す。非線形も扱える。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;問題に寄るニューラルネットの層・ノード個数は適当&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;sigmodi関数よりreluのほうが学習効率がよい。理由は謎。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学習率に変化をつける。初期は高め、収束していくと、小さく。アダム。learning rate decay。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;overfitting過学習。dropout。ランダムにノードを削除する。91 -&amp;gt; 98&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;畳み込みネットワーク。convolutional layer。画像をピクセルではなく、画像のままとらえる。99&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;黒魔術（笑）で学習精度を上げている、とのこと&lt;/p&gt;
&lt;h4 id="世界初ceva社-dsp-xm-4で動かすニューラルネットワーク-その実力とは"&gt;世界初CEVA社 DSP XM-4で動かすニューラルネットワーク その実力とは&lt;/h4&gt;
&lt;h5 id="夏谷実パソナテック"&gt;夏谷　実（パソナテック）&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CEVA XM-4 とは、画像処理に強いプロセッサIP。汎用プロセッサに対するGPUの位置づけ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;XM-4の評価依頼,「あ〜ん」までの46文字を学習。cで書いた学習式をSM-4用に変換。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AlexNet 8層 googleNet 22層で検証&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="intel-fpgaのdeep-learning-accelerator-ipとその開発手法紹介"&gt;Intel FPGAのDeep Learning Accelerator IPとその開発手法紹介&lt;/h4&gt;
&lt;h5 id="竹村幸尚樣日本アルテラ株式会社"&gt;竹村　幸尚　樣　(日本アルテラ株式会社) &lt;a href="mailto:yukitaka.takemura@intel.com"&gt;yukitaka.takemura@intel.com&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;FPGA&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deep Learning Accelerator IP 50-100万&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tipベンダーなので２方向&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;クラウド分析&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;交通の安全性&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FPGAなので、色んなネットワークに対応&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AlexNet&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GoogleNet&lt;/p&gt;</description></item><item><title>azure functionsでnode.jsアプリケーション開発</title><link>https://blog.playispeace.com/1244/node_js_on_azure_functions/</link><pubDate>Tue, 07 Feb 2017 18:39:35 +0000</pubDate><guid>https://blog.playispeace.com/1244/node_js_on_azure_functions/</guid><description>&lt;p&gt;azure functionsでnode.jsを開発環境を整える手順をまとめておきます。&lt;/p&gt;
&lt;h4 id="functionsとは"&gt;functionsとは&lt;/h4&gt;
&lt;p&gt;簡単にサービス紹介すると&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;プログラム実行環境で、プログラムを置くだけで実行環境構築が不要&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AWSでいうlambda&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プログラムおく他に、trigger、input、outputを決める。triggerのみ必須。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;対応言語：C#、php、node.js、Python、PowerShell、etc&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2016/11/10 GA（general availability）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Function App？表記の揺れ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;webjobというPaaSをベースに動いている&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2016/11/10にGAになったばかりのできたてサービス。以前はFunction Appというサービス名だったようで、web上の情報にも表記のゆれがありますので、ご注意を。&lt;/p&gt;
&lt;h5 id="ポータルからfunctionsを作成"&gt;ポータルからfunctionsを作成&lt;/h5&gt;
&lt;p&gt;プランは大きく２種類で（&lt;a href="https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-scale#consumption-service-plan"&gt;参考&lt;/a&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;従量課金 ・・・トリガー時のみインスタンス起動。処理時間で課金。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;App Service・・・インスタンス常時起動。リソース利用時間で課金。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とあります。ドキュメントによると、しょっちゅう処理する場合はApp Serviceで、たまに処理する場合は、従量課金という使い分けになります。&lt;/p&gt;
&lt;p&gt;で、注意として、従量課金は基本オートスケールなはずです。が、乗せるアプリケーションによってはスケールしない場合もあるようで、その場合は、App Serviceでそれなりのプランを選ぶ、という回避策になります。そちらの方が、インスタンスが常時起動している分、初期の起動が早いという特徴があります。&lt;/p&gt;
&lt;h5 id="実行"&gt;実行&lt;/h5&gt;
&lt;p&gt;functionリソースが作成されたら、ポータルから最初の実行できるとこまで確認します。&lt;/p&gt;
&lt;p&gt;HttpTrigger -&amp;gt; 適当な関数名 -&amp;gt; triggerにhttp&lt;/p&gt;
&lt;p&gt;以上の手順ですすめると、functionsの完成です。&lt;/p&gt;
&lt;p&gt;実際にhttpリクエストからトリガーを起動させてもいいのですが、ポータルでテスト実行できます（以下画像参照）ので、簡単に動かすだけなら、そこからでも良いです。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2017/02/function_http_trigger.png"&gt;画像未復旧: function_http_trigger&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;動かすだけなら以上で終わりです。&lt;/p&gt;
&lt;p&gt;※実行ログが表示されない、という場合はqiitaに書きました&lt;a href="http://qiita.com/papettoTV/items/5b0c530af9a35dd32d8d"&gt;こちら&lt;/a&gt;参照下さい。&lt;/p&gt;
&lt;h5 id="ローカル開発環境"&gt;ローカル開発環境&lt;/h5&gt;
&lt;p&gt;しっかり開発するにあたっては、毎回ポータル上のソースを修正&amp;amp;実行するのは手間ですので、ローカルで開発できる環境を整えます。&lt;/p&gt;
&lt;p&gt;これも&lt;a href="http://qiita.com/papettoTV/items/adadf5c85aaf9657b399"&gt;Qiitaに投稿&lt;/a&gt;しましたので、参照下さい。&lt;/p&gt;
&lt;h6 id="補足環境変数"&gt;補足:環境変数&lt;/h6&gt;
&lt;p&gt;App Serviceの変数設定、というところから環境変数を設定でき、process.env.○○で参照可能です。&lt;/p&gt;
&lt;p&gt;例としては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;キー名：KEY_NAME&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;値：hogehoge&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とすると、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;console.log(process.env.KEY_NAME);
// hogehoge

// ※functions上だと
context.log(process.env.KEY_NAME);
// hogehoge
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;となります。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2017/02/env_variable.png"&gt;画像未復旧: env_variable&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これらの設定系の値は、リソースマネージャというサービス(&lt;a href="https://resources.azure.com/"&gt;https://resources.azure.com/&lt;/a&gt;)で、APIから操作する場合は、リソースマネージャーを利用すれば可能です。&lt;/p&gt;
&lt;h6 id="deploy"&gt;deploy&lt;/h6&gt;
&lt;p&gt;deploy方法について、こちらも&lt;a href="http://qiita.com/papettoTV/items/72bae83ab12f28d7ff38"&gt;qiita&lt;/a&gt;に纏めております。&lt;/p&gt;
&lt;h4 id="まとめ"&gt;まとめ&lt;/h4&gt;
&lt;p&gt;azure functionsのnodes.js開発環境構築の解説でした。&lt;/p&gt;
&lt;h4 id="おまけ"&gt;おまけ&lt;/h4&gt;
&lt;p&gt;ドキュメントをざっと読むだけでは気づかなかったけど、知っておくべき機能をメモ。&lt;/p&gt;
&lt;h5 id="hostjson"&gt;host.json&lt;/h5&gt;
&lt;p&gt;host.jsonファイルで、function自体の設定値を管理しています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json"&gt;https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;timeout時間はここで設定できます。&lt;/p&gt;
&lt;p&gt;ここはaws lambdaより優れている点かと思います。&lt;/p&gt;
&lt;h5 id="funcitonsjson"&gt;funcitons.json&lt;/h5&gt;
&lt;p&gt;ポータルのGUIでtriggerや、outputを設定できますが、実質はfuntions.jsonを書き換えているに過ぎません。&lt;/p&gt;
&lt;p&gt;そのfunctions.jsonには、ポータルからでは設定できない別のプロパティも用意されており、仕様はこちらに記載されています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Azure/azure-webjobs-sdk-script/wiki/function.json"&gt;https://github.com/Azure/azure-webjobs-sdk-script/wiki/function.json&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;こちらを読んでもらうのが確実ですが、１つだけ紹介しておきます。&lt;/p&gt;
&lt;h5 id="timer-trigger-のときのdisabled-true"&gt;timer trigger のときのdisabled true&lt;/h5&gt;
&lt;p&gt;triggerにtimerを設定すると、いざ動作を止めたいときに、止める方法が見当たらず、わざわざfunctionsを削除してたりしました。&lt;/p&gt;</description></item><item><title>Node-REDを紹介しました</title><link>https://blog.playispeace.com/1238/introduce_node-red/</link><pubDate>Tue, 26 Jul 2016 23:03:04 +0000</pubDate><guid>https://blog.playispeace.com/1238/introduce_node-red/</guid><description>&lt;p&gt;かみやんさん主催の&lt;a href="http://js-performance.connpass.com/event/35294/"&gt;JavaScript Performance&lt;/a&gt;というイベントで&lt;/p&gt;
&lt;p&gt;Node-REDについて喋ってきました。&lt;/p&gt;
&lt;p&gt;資料はこちら&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="//www.slideshare.net/YokotaEiji/nodered-64302625"&gt;Node-REDの紹介&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/YokotaEiji"&gt;Eiji Yokota&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最近仕事でNode-REDをベースにしたenebularというサービスを触っており、&lt;/p&gt;
&lt;p&gt;勉強する機会があったので、喋ってみました。&lt;/p&gt;
&lt;p&gt;プログラマーじゃなくても少しnodeを勉強すればシステム組めるし、flowを簡単に共有できるので、マーケターの方などにもオススメです。&lt;/p&gt;</description></item><item><title>第33回関西PHP勉強会でLTしてきた #phpkansai</title><link>https://blog.playispeace.com/1230/php_kansai_dev_study_vol33/</link><pubDate>Mon, 30 May 2016 23:22:14 +0000</pubDate><guid>https://blog.playispeace.com/1230/php_kansai_dev_study_vol33/</guid><description>&lt;p&gt;久々に&lt;a href="https://kphpug.doorkeeper.jp/events/44996"&gt;php勉強会&lt;/a&gt;でLTしてきました。&lt;/p&gt;
&lt;p&gt;発表資料は以下。（ちょっとアップロード用に手直し済み&lt;/p&gt;
&lt;p&gt;技術論というより精神論です。&lt;/p&gt;
&lt;p&gt;発表の目的は資料の通り自分のためです。プライベートで開発がしたいと思っているのに出来ないという状況を、ぐずぐず言い訳してないで手を動かすように強引にもっていくため、追い込むメソッドを発動したというものです。&lt;/p&gt;
&lt;p&gt;おかげで発表前の１週間はかなりきつく、体調も崩しかけたので、もう追い込むメソッドはやるべきでない、そう思ってしまうほどでしたが、そんな中でも発見がありました。&lt;/p&gt;
&lt;h5 id="1日5分だけ"&gt;1日5分だけ&lt;/h5&gt;
&lt;p&gt;資料にも書いてますが、これ、結構自分の中でやってみて効果が大きかったです。&lt;/p&gt;
&lt;p&gt;とにかくノートパソコン開いて５分だけでも作業するようにする。&lt;/p&gt;
&lt;p&gt;ポイントは、&lt;strong&gt;5分&lt;/strong&gt;というハードルの低さだと思ってます。&lt;/p&gt;
&lt;h5 id="作業する環境を整えるというタスク"&gt;作業する環境を整えるというタスク&lt;/h5&gt;
&lt;p&gt;実は、何もしない、のと、ちょっとでも作業する、には、&lt;em&gt;作業する環境を整える&lt;/em&gt;、というタスクがあって、これが結構めんどくささの壁になってたりします。&lt;/p&gt;
&lt;p&gt;そのため、今までは、30分とか1時間の作業時間が確保できないと、なかなか作業にとりかかる事自体をしませんでした。結局それが、毎日何もしない、につながってました。&lt;/p&gt;
&lt;h5 id="5分だけの効果"&gt;“5分だけ”の効果&lt;/h5&gt;
&lt;p&gt;そこで5分だけでもいいから作業する、ということを目標に掲げると、まず、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;5分だけなら、と、この&lt;em&gt;作業する環境を整えるタスク&lt;/em&gt;をなんとかこなす&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;いざ作業が始めると、5分では終わらず（短時間ながら、だからこそ）集中して作業ができる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という効果があることが分かりました。&lt;/p&gt;
&lt;p&gt;また、副次的に&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5分という短さゆえに、次の日の5分のために、作業前に頭の中で事前に作業内容を絞り込める&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というメリットも感じました。&lt;/p&gt;
&lt;h5 id="1つの課題にフォーカス"&gt;1つの課題にフォーカス&lt;/h5&gt;
&lt;p&gt;いざパソコン開いて、あれもこれもとなると、やることが多すぎてその整理から始まってしまい、作業が手につかないときがありますが、&lt;/p&gt;
&lt;p&gt;例えば、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;１つのエラーだけ調査して解決する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;１つのメソッドだけ実装する&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というように予めやる作業を限定し決めておくことで、余計な作業に手を付けず集中できたように思います。&lt;/p&gt;
&lt;p&gt;結果、毎日開発する時間を実質5分以上確保しながら、進めれました。&lt;/p&gt;
&lt;h5 id="1日5分メソッド"&gt;1日5分メソッド&lt;/h5&gt;
&lt;p&gt;残念ながら発表までに、作りたいものは間に合いませんでしたが、これからもこの&lt;strong&gt;1日5分メソッド&lt;/strong&gt;は使っていこうかと思います。&lt;/p&gt;
&lt;p&gt;もし、同じように&amp;quot;開発したいものがあるけど、自分を取り巻く環境が理由で中々手につかないなー&amp;quot;と思っている方がいたら実施してみてください。&lt;/p&gt;</description></item><item><title>大阪版IoT縛りの勉強会に参加してきた #IotLT</title><link>https://blog.playispeace.com/1224/iotlt_osaka_vol1/</link><pubDate>Thu, 03 Mar 2016 22:31:26 +0000</pubDate><guid>https://blog.playispeace.com/1224/iotlt_osaka_vol1/</guid><description>&lt;p&gt;&lt;a href="http://iotlt.connpass.com/event/27209/"&gt;大阪版IoTLTイベント&lt;/a&gt;に参加してきたので、そのまとめ&lt;/p&gt;
&lt;h4 id="大阪版iotlt-20160303"&gt;大阪版IoTLT 2016/03/03&lt;/h4&gt;
&lt;p&gt;「#IoTLT」でつぶやこう&lt;/p&gt;
&lt;h5 id="発表まとめ"&gt;発表まとめ&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;川野さん＠ウフル　milkcocoaの紹介&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;webにもIoTにも&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SDKいっぱいあるよ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;菅野のびすけ＠LIG IoTLTの紹介&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技術は技術だけは伝わらない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;失敗したLTでもあるよ！気軽に。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;橋口＠栄和&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;sleepion 開発。藤田さんと。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;IoTバッテリー安く売るよ、2500円&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VR ハコスコ。ハコビジョンと合体したようなもの。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;３・１９ウェアラブルデバイスって何だ。神戸産業会館。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;菅原のびすけ@LIG&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pubnub バックエンドサービス　milkcocoaと似てる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;findit 落し物探す&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tile thetileapp.com 落し物&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;b8ta b8ta.com テストマーケ。試作品のショーケース。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tessel2 jsで動くマイコン&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;getstructure.io&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;etc&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;河野@konojunta&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;誕生日メッセージをmilkcocoa使ってリアルタイム配信&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学校の課題では、raspiで、QR呼んで、コントローラーになる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;吉田＠IotALGYANあるじゃん関西支部支部長＠アドベン&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Iotハンズオンを活動&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;windows10 UWPアプリ。pc,mobile,game,holoレンズ、どのプラットフォームでも動くアプリ？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;小菅＠関西おうちハック&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;おうちハックadvent carender iot部門で２位&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ロックオフで、おうちハック中。月ごとにテーマ決め。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;辻＠KYOSO&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マクニカkibo&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ハンズオンしたが、Iotごっこではないか。→コミュニティ連携&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3/17-18 グランフロント、Iotanいおたん&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;柏木@日進システム&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;リカちゃん洗濯機を制御&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;エアコンを３Dプリンター使って自作。すごい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;jsでほとんど掛ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;松本@バスキュール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GCPUG関西支部長、Iot支部&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作ってきたものの紹介&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;田村＠AMAGMA&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;講師、執筆、ハッカソンetc&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Io[A..Z] Internet of 何々で、すべて説明&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;田中＠ブリリアントサービス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;どこでも見える扉。の紹介。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;モノで人がつながる。開発メンバー、その様子を見る人など。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;山本＠wakayama.rb&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デバイスもサーバもruby&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ボードも小型化のために自作&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;擬似人工衛星&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rubic&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;極小rubyボード、商品化へ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PG_nokkii@立命館大学&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;coffee server&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DJガジェット、テンガをこねくり回して音をだす&lt;/p&gt;</description></item><item><title>転職したので、転職活動についてのまとめ</title><link>https://blog.playispeace.com/1191/job_change/</link><pubDate>Tue, 30 Jun 2015 08:48:35 +0000</pubDate><guid>https://blog.playispeace.com/1191/job_change/</guid><description>&lt;h4 id="転職"&gt;転職&lt;/h4&gt;
&lt;p&gt;転職して1ヶ月経ち、落ち着いて来たので、転職中の流れなど時系列で残しておきます。 今転職中の方や、これから転職しようと考えている方のお役に立てれば。&lt;/p&gt;
&lt;p&gt;前提条件として、関西に住んでいるため、関西のwebエンジニア、という括りで探しました。&lt;/p&gt;
&lt;h5 id="転職活動を始める前に"&gt;転職活動を始める前に&lt;/h5&gt;
&lt;p&gt;そもそも、何をしたいのか？を考えました。転職活動の軸になるのでめちゃくちゃ大事かと思います。&lt;/p&gt;
&lt;p&gt;これが決めれればおそらくもっとスムーズに活動できたと思うのですが、それがぼんやりしていたため、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ぼんやりに引っかかる会社&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ぐらいで調べていました。&lt;/p&gt;
&lt;p&gt;ぼんやりを敢えて言葉にすると、これまでやってきたwebのシステム開発をベースにしつつも、もう一歩枠を飛び出したことがしたい、ぐらいでした。&lt;/p&gt;
&lt;h5 id="活動開始"&gt;活動開始&lt;/h5&gt;
&lt;p&gt;前職を続けながら合間に活動開始。ぼんやり以外の条件では、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;できたら知り合いベース&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先進的な転職サービス&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を基準に会社を探しました。&lt;/p&gt;
&lt;h6 id="知り合いベース"&gt;知り合いベース&lt;/h6&gt;
&lt;p&gt;やはり知らないとこよりも知っている人がいるところの方が、情報も得やすいですし安心です。&lt;/p&gt;
&lt;p&gt;たまに見かける&amp;quot;募集してます！&amp;ldquo;などの呼びかけが無いかSNSなどで調べました。&lt;/p&gt;
&lt;h6 id="先進的な転職サービス"&gt;先進的な転職サービス&lt;/h6&gt;
&lt;p&gt;それと同時に、転職サービスも利用&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.wantedly.com/"&gt;Wantedly&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://prosheet.jp/"&gt;PRO Sheet&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これを基本に動きました。&lt;/p&gt;
&lt;p&gt;これらを選んでた理由は、最近できたサービスなので、そういったサービスにもアンテナ張って利用している会社というフィルターがかかるためです。&lt;/p&gt;
&lt;p&gt;※PRO Sheetは転職サイトではないですが、転職サービスも行っています。のと、転職活動中に生活費を稼げたら、というのも狙ってました。&lt;/p&gt;
&lt;h5 id="誤算"&gt;誤算&lt;/h5&gt;
&lt;p&gt;僕が転職活動を甘く見てて、サクッと決まるやろ、と思ってたら以外と決まらず、結局4月より休職したので、本格的に、転職エージェントも使っていこうと決意。&lt;/p&gt;
&lt;p&gt;あと、転職サービスも枠を広げていきました。&lt;/p&gt;
&lt;h5 id="エージェント登録"&gt;エージェント登録&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bizreach.jp/"&gt;bizreach&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なにやら高級そうなイメージですので、登録してみました。&lt;/p&gt;
&lt;p&gt;ただ、会員にもコースがあって、深くサービス使いたいなら、有料のタレント会員になる必要がありました。&lt;/p&gt;
&lt;p&gt;転職中でお金ないのに、金とるてっ！と、最初は思ったのですが、無料でタレント会員になれる方法がありました。職務経歴書の登録です。&lt;/p&gt;
&lt;p&gt;これに登録すると3ヶ月は無料でタレント会員になれます。3ヶ月あれば、転職決めるには十分かと思いますので、登録しました。&lt;/p&gt;
&lt;h6 id="スカウトメールの山"&gt;スカウトメールの山&lt;/h6&gt;
&lt;p&gt;登録後、スカウトメールという名で、めちゃくちゃメールが来ます。これはエージェントからもだし、企業からも直接きます。&lt;/p&gt;
&lt;p&gt;はじめはすべて企業から来てるように見えておれすげーってなりますが、違います。初めての人は要注意。&lt;/p&gt;
&lt;p&gt;捌き切れずだいたいスルーしてたのですが、中に「プレミア」とつくものがたまに来ます。&lt;/p&gt;
&lt;p&gt;これは本来無料会員であれば見れないメールが、見れるというもので、ちょっと本気でスカウトしに来てる感がありました。&lt;/p&gt;
&lt;p&gt;なので、基本このプレミアベースで、対応進めました。&lt;/p&gt;
&lt;p&gt;最終的にはここから３社のエージェントとやりとりをスタート。&lt;/p&gt;
&lt;h5 id="次の転職サービス"&gt;次の転職サービス&lt;/h5&gt;
&lt;p&gt;エージェント任せではなく、個人でも引き続き動いていこうと、&lt;/p&gt;
&lt;p&gt;WEBエンジニア・ブログラマよりな転職サービスにも登録して枠を広げていきました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.green-japan.com/"&gt;green&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://paiza.jp"&gt;paiza&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codeiq.jp/"&gt;codeIQ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらで会社を探しながら、エージェントの方々からの紹介も受けつつ活動。&lt;/p&gt;
&lt;p&gt;この間、休職中なので、生活費はもとより交通費も結構痛かった。&lt;/p&gt;
&lt;h5 id="決断"&gt;決断&lt;/h5&gt;
&lt;p&gt;１０社以上の会社を受け、最終的に数社から内定頂くことができました。&lt;/p&gt;
&lt;p&gt;そして最終的にはクラウドサービスを提供・支援する会社に決めたのですが、決めた理由は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;最後まで悩みましたが、面接で提案した、１週間アルバイトしてみる、という提案がそのまま通る柔軟性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;エンジニアだからこそ分かる“作らない”という利点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提供するサービスの質が、何もしなくてもある程度担保されている。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;その分、クラウドだけでは解決できない難しい課題にフォーカスし、チャレンジできる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というのが決めた理由です。今ではIotやクラウド同士の連携業務に取り組んでおり、新しい発見が毎日あって非常に充実しています。&lt;/p&gt;
&lt;h5 id="転職感想"&gt;転職感想&lt;/h5&gt;
&lt;p&gt;あと、その他もろもろ、転職活動で感じた感想です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;いろんな会社行っていろいろ話し聞くのは面白い&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;面接前の面談という、お話するだけの機会がありますが、ここでは割とリラックスして、会社の事業内容や割とぶっちゃけた話が聞けます。普段、会社にいるとなかなか聞けない話なので、結構貴重な機会かと思いました。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;面接慣れは、必要。なので、活動し始めは、本命１社に絞るよりも、ちょっといいかもぐらいの会社数社をどんどん受けた方がよいです。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;面接で落とされるのはつらい。単なるミスマッチということも理由としてあるだろうから、そう思って自分を励ます。もしくは、、、、最後に書きますw。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社内も大事だが、常に意識を外（社外）に向けて、今自分はどの辺にいるのかを意識すべき。でないと社内ではなく、社会の中での自分の価値が分からなくなります。そうするために社外に常にアンテナを張っておく。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;転職サービスごとに、履歴書と職務経歴書を書かされるのにイライラ。一箇所にまとめて、あとはapiで呼び出すとかしてほしい。ので誰かそういうサービスはよ。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="以下心の叫び"&gt;以下、心の叫び&lt;/h5&gt;
&lt;p&gt;俺を落とした◯◯株式会社とか株式会社××とか！&lt;/p&gt;
&lt;p&gt;絶対後悔させてやるからなっっ！&lt;/p&gt;
&lt;p&gt;っていうモチベくれてありがとーーーー&lt;/p&gt;
&lt;p&gt;&lt;a href="http://fivebestessaywritingservices.blogspot.com/"&gt;http://fivebestessaywritingservices.blogspot.com&lt;/a&gt;&lt;/p&gt;</description></item><item><title>vagrant上で開発してherokuにデプロイする環境を構築</title><link>https://blog.playispeace.com/1174/develop_on_vagrant_and_deploy_on_heroku/</link><pubDate>Tue, 03 Feb 2015 19:12:55 +0000</pubDate><guid>https://blog.playispeace.com/1174/develop_on_vagrant_and_deploy_on_heroku/</guid><description>&lt;p&gt;久々にサイトを作ろうと思いたち、pushでデプロイされる環境で開発したくて、勉強も兼ねてサーバはherokuで、開発環境をvagrantで作ったので、手順メモ。&lt;/p&gt;
&lt;h4 id="環境"&gt;環境&lt;/h4&gt;
&lt;p&gt;cakephpはcomposerの最新が2.6だったので、versionはそれで。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;git&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;composer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cakephp2.6&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="vagrant"&gt;Vagrant&lt;/h5&gt;
&lt;p&gt;本当は一からVagrantfileファイル作りたいのですが、（まだ勉強不足なのと）個人サイトなので、一旦先人の知恵を借りてcakephp+vagrantなgitから環境作ります。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/borivojevic/cakephp-vagrant"&gt;vagrant-cakephp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;git clone git://github.com/borivojevic/cakephp-vagrant&lt;/p&gt;
&lt;p&gt;作業用ディレクトリに移動&lt;/p&gt;
&lt;p&gt;cd cakephp-vagrant/&lt;/p&gt;
&lt;p&gt;puppetで環境構築するようです。仮想環境なので、何で構築しようが気にしなくていいのもvagrantの魅力ですね。&lt;/p&gt;
&lt;p&gt;起動します。&lt;/p&gt;
&lt;p&gt;vagrant up&lt;/p&gt;
&lt;p&gt;Vagrantfileに書いてますが、IPは33.33.33.10 が割り当てられるので、hostsに分かりやすい名前つけておきます。&lt;/p&gt;
&lt;p&gt;sudo vim /etc/hosts&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;33.33.33.10 cakphp26.localhost
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ドキュメントルートはwebrootに設定されているので、適当にwebroot/index.php をおいて、ここhttp://cakphp26.localhostにアクセスして確認。&lt;/p&gt;
&lt;p&gt;この作業用ディレクトリがvagrant上の/vagrant/ と共有されていますので、ここにソースファイルを置いていけばokです。&lt;/p&gt;
&lt;h5 id="heroku"&gt;heroku&lt;/h5&gt;
&lt;p&gt;herokuはアカウント登録後めっちゃ丁寧にintroductionあるので、pushしたらサイトに反映って流れはそれに従うだけで簡単にできます。&lt;/p&gt;
&lt;p&gt;一度それに従ってなんとなく構造が分かったので、今回必要な分だけ挙げておきます。&lt;/p&gt;
&lt;p&gt;先ほど作業していたディレクトリと同じ場所で&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;heroku環境作成。git remoteにherokuが追加される&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;heroku create (好きなアプリ名)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;introduction の &lt;a href="https://github.com/heroku/php-getting-started.git"&gt;php-getting-started.git&lt;/a&gt;にある、composer.jsonファイルを参考に、手を加える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;addonなど使うために、クレジットカード情報は登録しておく。（無料枠でもこの情報が必要）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="composerjson"&gt;composer.json&lt;/h6&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;{
 &amp;#34;name&amp;#34;: &amp;#34;example-app&amp;#34;,
 &amp;#34;repositories&amp;#34;: [
 {
 &amp;#34;type&amp;#34;: &amp;#34;pear&amp;#34;,
 &amp;#34;url&amp;#34;: &amp;#34;http://pear.cakephp.org&amp;#34;
 }
 ],
 &amp;#34;require&amp;#34;: {
 &amp;#34;cakephp/cakephp&amp;#34;: &amp;#34;2.6.*&amp;#34;
 },
 &amp;#34;config&amp;#34;: {
 &amp;#34;vendor-dir&amp;#34;: &amp;#34;Vendor/&amp;#34;
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で、書いたものをインストール&lt;/p&gt;
&lt;p&gt;composer install&lt;/p&gt;
&lt;h6 id="cakephp"&gt;cakephp&lt;/h6&gt;
&lt;p&gt;この時点では、cakephpの本体部分しかないので、スケルトンを作成（参考：&lt;a href="http://book.cakephp.org/2.0/ja/installation/advanced-installation.html#composercakephp"&gt;ComposerでCakePHPをインストール&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;Vendor/bin/cake bake project app&lt;/p&gt;
&lt;p&gt;この時点で、ファイル構成は、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- cakephp-Vagrant/
-- Procfile
-- Vagrantfile
-- Vendor/
-- app/
-- composer.json
-- composer.lock
-- puppet/
-- webroot/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こうなってるはず。で、webrootをappディレクリ内webrootをコピーして持ってきます。&lt;/p&gt;</description></item><item><title>Titanium tips</title><link>https://blog.playispeace.com/1161/titanium-tips-2/</link><pubDate>Mon, 19 Jan 2015 17:53:35 +0000</pubDate><guid>https://blog.playispeace.com/1161/titanium-tips-2/</guid><description>&lt;p&gt;かなり前から貯めてたtips(3.3.0GA)を残しておく。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;モジュールの設置場所 app/lib,~/Library/Application Support/Titanium/modules/iphone/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自作モジュールのsample/app.jsが読み込まれてない場合は、~/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.GA/all/app.js を読んでる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;バックグラウンド処理のファイルの置き場所 service.jsというファイル名なら app/assets/iphone/service.js&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ti.mapでクリック出来ない longpressでviewのx,yから算出&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;imageasresizedで変換するとpngに変わる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://jira.appcelerator.org/browse/TIMOB-15247"&gt;https://jira.appcelerator.org/browse/TIMOB-15247&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tabのカラー・画像は変えれないと思った方がよい(iOS)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;android 実機のログの確認方法 (android_sdk_home)/tools/ddms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;android_sdk_home はti info の android SDK のSDK Path&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;テーマの変えかたは、appフォルダと同じ階層にplatform/android/res/values フォルダ作ってtheme.xml というファイル名以外の名前でxml作成
■サンプル&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
  
  
  
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;あとtiapp.xmlの&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
    
        
    
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;として @style/(styleのname)を指定。すでにapplication タグがあったら&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
中身
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、一応ti cleanしてからビルド&lt;/p&gt;
&lt;p&gt;テーマのひな形ジェネレータ &lt;a href="http://jgilfelt.github.io/android-actionbarstylegenerator"&gt;http://jgilfelt.github.io/android-actionbarstylegenerator&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;android でtextareaやtextfieldで、文字入力直後にフォーカスが外れる問題対応方法&lt;/p&gt;
&lt;p&gt;$.index.windowSoftInputMode = Ti.UI.Android.SOFT_INPUT_ADJUST_PAN&lt;/p&gt;
&lt;p&gt;windowならopenする前、tabgroup内windowならtabgroupに設定してやる&lt;/p&gt;</description></item><item><title>Titaniumがもっと楽しくなる開発環境</title><link>https://blog.playispeace.com/1139/develop_environment_in_titanium/</link><pubDate>Fri, 08 Aug 2014 10:41:42 +0000</pubDate><guid>https://blog.playispeace.com/1139/develop_environment_in_titanium/</guid><description>&lt;p&gt;Titanium でいい感じの環境を整えてみましたので紹介します。&lt;/p&gt;
&lt;p&gt;coffeeScriptでalloyフレームワークを書いて、js変換をgulpで監視・自動化し、tishadowでリアルタイム反映させてます、という内容です。&lt;/p&gt;
&lt;h4 id="tishadow"&gt;tishadow&lt;/h4&gt;
&lt;p&gt;何よりまずは&lt;a href="http://tishadow.yydigital.com/"&gt;tishadow&lt;/a&gt;です。これで開発速度が倍になると言っても過言ではない。&lt;/p&gt;
&lt;h5 id="インストール"&gt;インストール&lt;/h5&gt;
&lt;p&gt;npm install -g tishadow&lt;/p&gt;
&lt;p&gt;以前は、起動に色々ステップがありましたが、今は、tishadow express で簡単に利用出来ます。&lt;/p&gt;
&lt;p&gt;tishadow express&lt;/p&gt;
&lt;p&gt;ti build -p ios –shadow&lt;/p&gt;
&lt;p&gt;tishadow expressコマンドを叩いておけば、いつものビルドコマンドに、&amp;ndash;shadowオプションを付けるだけで利用出来ます。&lt;/p&gt;
&lt;p&gt;buildコマンドを以下のように実機を対象にすれば、実機で同様の環境が出来ます。&lt;/p&gt;
&lt;p&gt;ti build -p ios -T device -V (developer name) -P (UUID) -I 7.0 –shadow&lt;/p&gt;
&lt;p&gt;※今の最新の環境(Xcode6beta,Ti 3.3.0GA)だと -I 7.0 オプションでSDKバージョン指定が必要でした。&lt;/p&gt;
&lt;p&gt;また、androidの実機だとこうなります。&lt;/p&gt;
&lt;p&gt;ti build -p android -T device –device-id (device id) –shadow&lt;/p&gt;
&lt;p&gt;これでまず、app以下のファイルの修正が即時反映される環境が出来ます。&lt;/p&gt;
&lt;h4 id="coffeescript"&gt;coffeeScript&lt;/h4&gt;
&lt;p&gt;jsのコード量が減ってすっきりするらしいので導入してみます。初挑戦。&lt;/p&gt;
&lt;h5 id="インストール-1"&gt;インストール&lt;/h5&gt;
&lt;p&gt;npm install -g coffee-script&lt;/p&gt;
&lt;p&gt;これでcoffee環境が整いました。&lt;/p&gt;
&lt;h5 id="即時反映"&gt;即時反映&lt;/h5&gt;
&lt;p&gt;せっかくtishadowを導入して、ファイル保存→即時エミュレータ反映、の流れがあるので、coffeeScriptを導入しても同様にファイル保存→即時ビルド→即時エミュレータ反映にします。&lt;/p&gt;
&lt;p&gt;coffeeコマンドにも-wオプションでファイル監視機能がありますが、coffeeScriptファイル以外には適用出来ないので、汎用性を考えてgulpでファイル監視する形にします。&lt;/p&gt;
&lt;p&gt;※ファイル構成は以下を想定&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Resouces ・・・アプリに反映されるソースのディレクトリ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;app ・・・alloy フレームワーク用ディレクトリ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;coffee　・・・coffeeScript用に新規で作成&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="gulp"&gt;gulp&lt;/h4&gt;
&lt;h5 id="インストール-2"&gt;インストール&lt;/h5&gt;
&lt;p&gt;npm install -g gulp&lt;/p&gt;
&lt;p&gt;その他必要なプラグインも&lt;/p&gt;</description></item><item><title>ウェアラブルデバイス勉強会 大阪に参加してきた</title><link>https://blog.playispeace.com/1099/wearable_device_seminar/</link><pubDate>Fri, 18 Jul 2014 11:19:59 +0000</pubDate><guid>https://blog.playispeace.com/1099/wearable_device_seminar/</guid><description>&lt;p&gt;&lt;a href="http://atnd.org/events/53285"&gt;ウェアラブルデバイス勉強会＠大阪&lt;/a&gt;に行って来たので、気になった事メモってきました。&lt;/p&gt;
&lt;p&gt;主催は&lt;a href="https://twitter.com/bathtimefish"&gt;村岡さん(@bathtimefish)&lt;/a&gt;さんで、関西から盛り上げて行こうぜ的な熱いお話からスタート&lt;/p&gt;
&lt;p&gt;まずは、神戸大学塚本先生のお話&lt;/p&gt;
&lt;p&gt;※聞き取れなかったり、ふーん、な部分は端折ってます。&lt;/p&gt;
&lt;h4 id="ウェアラブルデバイスとは"&gt;ウェアラブルデバイスとは&lt;/h4&gt;
&lt;p&gt;ウェアラブルデバイスをつけて&lt;strong&gt;14年&lt;/strong&gt;。学術的な観点と、実際に身に着けて生活して来た体験から得た知見のお話&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ウェアラブルデバイスは以前からあった言葉で、体に身に着けて、実生活で使って、コンピューティングするもの&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没入型HMD（ヘッドマウントディスプレイ）のようなデバイスは、実生活で使わないので&lt;strong&gt;ウェアラブルデバイスとは呼ばない&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ipodはウェアラブルデバイスと呼べる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="android-watch"&gt;Android Watch&lt;/h5&gt;
&lt;p&gt;時計なので、利用想定順は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;通知機能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;音声認識&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;手動立ち上げ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;として考えられてる&lt;/p&gt;
&lt;p&gt;以下、各製品の簡単なレビューがありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;LG G Watch &lt;a href="http://blog.playispeace.com/wp-content/uploads/2014/07/lg-g-watch-300x200.jpg"&gt;画像未復旧: lg-g-watch&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Samsung Gear Live &lt;a href="http://blog.playispeace.com/wp-content/uploads/2014/07/Gear-Live_Black-300x184.jpg"&gt;画像未復旧: Gear-Live_Black&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Motorola Moto360 &lt;a href="http://blog.playispeace.com/wp-content/uploads/2014/07/Motorola_Moto_360_Android_Wear-300x180.jpg"&gt;画像未復旧: Motorola_Moto_360_Android_Wear&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="iwatch"&gt;iWatch&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;またしても遅れて11月発売？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;10種類以上のセンサを搭載してるらしい&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「9軸（加速度３軸、ジャイロ３軸、コンパス３軸）モーション+心拍」じゃないだろうーなー&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;予想：加速度、ジャイロ、コンパス、温度、湿度、明るさ、心拍、血圧、血中酸素飽和度、 （あと一個聞き取れず&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;かなり制作に苦戦してるのでは&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="epson-moverio"&gt;Epson Moverio&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2014/07/epson-moverio-bt-200-glasses-300x200.jpg"&gt;画像未復旧: epson-moverio-bt-200-glasses&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ずっと使うの難しい&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;外光の反射&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;目が外からちゃんと見えない（普通の眼鏡掛けてる人に比べると、その人を見たときに目が見えないので違和感がある&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="recon"&gt;Recon&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2014/07/Recon-Jet_white-300x157.jpg"&gt;画像未復旧: Recon-Jet_white&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;去年申し込んだけど、全然来ない。１０月予定。&lt;/p&gt;
&lt;h5 id="panasonicのhx-a500"&gt;PanasonicのHX-A500&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2014/07/panasonic-hx-a500-wearable-camera-300x199.jpg"&gt;画像未復旧: panasonic-hx-a500-wearable-camera&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;画質4k。ただし、違い分からない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2分半の動画でで853M&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;振動補正は良く効いてる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;全体的な印象としては、まだまだ広がるには物足りない、といった感想。&lt;/p&gt;
&lt;p&gt;後のパネルディスカッションでも仰っていましたが、一番足りないと感じるのは&lt;strong&gt;アプリケーション&lt;/strong&gt;だそうです。&lt;/p&gt;
&lt;h4 id="hmdがもたらすユーザエクスペリエンス"&gt;HMDがもたらすユーザエクスペリエンス&lt;/h4&gt;
&lt;p&gt;中内さん。&lt;/p&gt;
&lt;p&gt;デザイナー目線でgoogle glass を半年付けたお話&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;google glass の仕様、操作方法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実演、take a picture 、trancelate（カメラに写った文字をリアルタイム翻訳）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;usable movable wearable で次がfashionableの流れで物が広がっていく&lt;/strong&gt;という独自分析&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;例１）置き時計、懐中時計、腕時計&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;例２）家電話、携帯電話、（デコられた、かわいい）スマホ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;例３）眼鏡、グーグルグラス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公認アプリ65本、非公認約300本&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ほとんどスマホでよかった。では、グラスで良かったとこは？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;知識の外部化（検索力）、隠蔽化（相手には見えない、と解釈しましたがあってるかな）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;夜の道路ナビアプリ=&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AD%E3%83%B3_(%E6%98%A0%E7%94%BB)"&gt;TRON&lt;/a&gt;ごっこ&lt;/strong&gt;と呼んで楽しんでる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SFの世界、ネット（情報の世界）の内側を行ったり来たりする感覚&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ライフログ、イベント系では（今のビデオカメラやスマホに比べて）自分がそのまま楽しめる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;眼前の画面・カメラを使えるのがスマホに無いUX&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>PHPExcelの今出来ないこと</title><link>https://blog.playispeace.com/1076/the_feature_that_isnt_enough_in_phpexcel_currently/</link><pubDate>Thu, 10 Jul 2014 11:14:13 +0000</pubDate><guid>https://blog.playispeace.com/1076/the_feature_that_isnt_enough_in_phpexcel_currently/</guid><description>&lt;p&gt;PHPでエクセルを読んだり書き出したりできるライブラリ&lt;a href="https://github.com/PHPOffice/PHPExcel"&gt;PHPExcel&lt;/a&gt;をもりもり触っているのですが、主にグラフィカルな部分で出来ないこともあるようなので、そのメモ(2014/07/10現在)&lt;/p&gt;
&lt;h4 id="割と色々出来るphpexcel"&gt;割と色々出来るPHPExcel&lt;/h4&gt;
&lt;p&gt;エクセルの、特にセルの操作に関しては、出来ない事はないんじゃないかと思わせるぐらい何でも出来るPHPExcelですが、さすがに完璧では無いようで出来ない（機能的に弱い）所もありますので、挙げていきます。&lt;/p&gt;
&lt;p&gt;ある程度フォーマットされたエクセルを読み込んで、数値を書き出して、新たに生成する、ような利用方法を想定します。&lt;/p&gt;
&lt;h5 id="条件付き書式はエラーで消える"&gt;条件付き書式は、エラーで消える&lt;/h5&gt;
&lt;p&gt;読み込むエクセルに、条件付き書式があると、一見正常に生成されるのですが、開こうとすると、以下のようなエラーが発生し、&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2014/07/phpexcel_file_repair_error-300x106.png" alt="Excel repaired or removed unreadable content from this workbook. Do you want to review or save the log file?"&gt;&lt;/p&gt;
&lt;p&gt;Saveを選択すると、次はこのアラート&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2014/07/phpexcel_file_repair-300x104.png" alt="Excel could not open test(1).xlsx because some content is unreadable. Do you want to open and repair this workbook?"&gt;&lt;/p&gt;
&lt;p&gt;言われるがまま修理して開くを選ぶと、以下のような条件付き書式部分が&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2014/07/phpexcel_conditional_cell_before.png" alt="conditional cell"&gt;&lt;/p&gt;
&lt;p&gt;消えてしまいます。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2014/07/phpexcel_conditional_cell_after.png" alt="conditional cell after repaire"&gt;&lt;/p&gt;
&lt;p&gt;消えるのは、グラフだけで、背景の色は大丈夫。&lt;/p&gt;
&lt;h5 id="chartがあるとエラーで消える"&gt;chartがあると、エラーで消える&lt;/h5&gt;
&lt;p&gt;読み込むエクセルにchartがあると、上記と同様のエラーが発生し、chart部分が丸々消えます。なので、chart付きエクセルを生成したい場合、chart部分は全てPHPExcelで書き出す必要があります。&lt;/p&gt;
&lt;p&gt;（※PHPExcelで書き出したchart付きエクセルを、再度読み込んでそのまま書き出して見ても同じエラーがでました。）&lt;/p&gt;
&lt;h5 id="chart生成時の細かいレイアウト調整は出来ない部分も"&gt;chart生成時の細かいレイアウト調整は出来ない部分も&lt;/h5&gt;
&lt;p&gt;chartですが、エクセルではかなり細かいレイアウト調整が出来るのですが、PHPExcelでは同等の機能までは提供できていないようです。&lt;/p&gt;
&lt;p&gt;分かっている範囲では、&lt;/p&gt;
&lt;h6 id="y座標を２つ設定"&gt;y座標を２つ設定&lt;/h6&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2014/07/phpexcel_chart_second_yaxis.png" alt="phpexcel chart second yaxis"&gt;&lt;/p&gt;
&lt;p&gt;このように、y座標を２つを設置することが出来ません。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/PHPOffice/PHPExcel/issues/134#issuecomment-12829487"&gt;ここ&lt;/a&gt;で、PHPExcelのオーナーのMark Baker氏が&lt;/p&gt;
&lt;p&gt;At this point in time, PHPExcel doesn’t support secondary axes in charts&lt;/p&gt;</description></item><item><title>PHPカンファレンス関西2014で始めよう！フレームワークことはじめ</title><link>https://blog.playispeace.com/1067/starting_the_framework/</link><pubDate>Thu, 19 Jun 2014 11:29:08 +0000</pubDate><guid>https://blog.playispeace.com/1067/starting_the_framework/</guid><description>&lt;p&gt;いよいよ明日に迫った日本対ギリシャ戦を気にしつつも、&lt;a href="http://conference.kphpug.jp/2014/"&gt;PHPカンファレンス関西2014&lt;/a&gt;のリレーブログ９日目です。&lt;/p&gt;
&lt;p&gt;昨日は、@omoonさんの『&lt;a href="http://blog.omoon.org/20140618/975"&gt;PHPカンファレンス関西2014 予習用リンク集&lt;/a&gt;』でした。気になる関連情報がさくっと追えて助かる記事でした。&lt;/p&gt;
&lt;p&gt;さて、その&lt;a href="http://conference.kphpug.jp/2014/"&gt;PHPカンファレンス関西2014&lt;/a&gt;では、いくつかフレームワークに関するセッションが開かれます。そのフレームワークに関して、今回は”ことはじめ”ということで、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;フレームワークを触った事が無い&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;これから触ろう / 触りたいと思ってるけど、どれから初めて良いのか分からない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そもそも触る必要ない / 勉強するのめんどくさいと思っている&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;な方むけに、私の経験を通してそのメリットを書いてみます。&lt;/p&gt;
&lt;h3 id="触るメリット"&gt;触るメリット&lt;/h3&gt;
&lt;p&gt;一般的には、コード量が少ない / 早く開発出来るといったメリットが共通してあるかと思いますが、それとは別に個人的に感じたメリットは&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使う事で副次的に学べる事がたくさんある&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ということです。&lt;/p&gt;
&lt;p&gt;まず、私は、初めてフレームワークを触ったときに、普段の開発では使わなかった単語にたくさん出くわしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ルーティング&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ビヘイビア&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マイグレーション&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;スキーマ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ユニットテスト&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などなど。いつどうやって使うのかなど調べてみると、これらの役割の便利さ/重要さに感動したのを覚えています。そして、こういった機能を知る事で、逆にフレームワークを使わない開発でもこれらの機能を意識して開発できるので、開発の質を上げることができました。&lt;/p&gt;
&lt;p&gt;また、別の角度で使うメリットを カンファレンス内の&lt;strong&gt;13:30-14:00 C-3セッション フレームワークを使うべき 3 つの理由 向井 賢一&lt;/strong&gt;　こちらで聞けるんじゃないでしょうか。&lt;/p&gt;
&lt;h4 id="選ぶポイント"&gt;選ぶポイント&lt;/h4&gt;
&lt;p&gt;じゃあ、一体どのフレームワークを最初に使えばいいの？&lt;/p&gt;
&lt;p&gt;そう思ったら、こちらのセッション &lt;strong&gt;14:45-15:45 A-3セッション「フレームワーク4本勝負」&lt;/strong&gt; に参加するしかないでしょう！&lt;/p&gt;
&lt;p&gt;もちろんフレームワークはこの4本以外にもあります。が、選択枝を広げられても選ぶのは難しいと思います。&lt;/p&gt;
&lt;p&gt;そこで私の選んだ理由をこっそり教えます。&lt;/p&gt;
&lt;p&gt;私は、最初のフレームワークに&lt;a href="http://cakephp.org/"&gt;CakePHP&lt;/a&gt;を選びました。何故か？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;名前がなんかかわいい&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;、、、というのは半分冗談ですが、半分本気です。ぶっちゃけ、最初から自分にあったフレームワークなんて選べませんし、そもそも”自分にあう”ほど何かを確立していた訳ではなかったので、”重厚すぎず、とっつきやすそう”という理由で選んだのは大きなポイントでした。最初はそれぐらいでいいと思います。&lt;/p&gt;
&lt;p&gt;そこで、上記のような様々な用語と出会って、色々学んで、ある程度使えるようになると、&lt;strong&gt;次に別のフレームワークを触りだしても、似た部分が多いので、最初の壁がだいぶ乗り越えやすくなる&lt;/strong&gt;、というメリットも生まれます。&lt;/p&gt;
&lt;p&gt;私も今、Laravelというフレームワークを勉強し始めてます。”DI”って何それおいしいの状態ですw　が、何とかなるかーと思って進めてます。（あれ、またかわいい名前選んでる？&lt;/p&gt;
&lt;h4 id="開発コミュニティ"&gt;開発コミュニティ&lt;/h4&gt;
&lt;p&gt;とにかく、どれか触りましょう。そして、触り始めたら、開発コミュニティへ参加することも強くをオススメします。近くで”○○勉強会”とかあれば、行けば分からない事を聞けたり、知らない機能に触れるチャンスです。&lt;/p&gt;
&lt;p&gt;私は、cakePHPを通して、色んな方と出会って勉強させてもらいました。周りに使っている人がいるかいないかで、勉強の効率もモチベーションも大きく変わってきます。そういう意味では、日本人がよく使っている、というのも選定基準の一つになりますね。&lt;/p&gt;
&lt;h3 id="まとめ"&gt;まとめ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;フレームワーク触った事無かったらどれでもいいから触ろう！きっとこのC-3セッション「フレームワークを使うべき 3つの理由 向井 賢一」でありがたい話しが聞けます！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;どれがいいか？それは、ここで聞いてみよう！A-3セッション「フレームワーク4本勝負」&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;明日のリレーブログは、&lt;a href="https://twitter.com/tbsmcd"&gt;@tbsmcd&lt;/a&gt;さんです。宜しくお願いします。&lt;/p&gt;</description></item><item><title>git-ftpで、ftpしか出来ないサーバでも自動デプロイ</title><link>https://blog.playispeace.com/1049/automatic_deployments_using_git-ftp/</link><pubDate>Wed, 04 Jun 2014 18:49:17 +0000</pubDate><guid>https://blog.playispeace.com/1049/automatic_deployments_using_git-ftp/</guid><description>&lt;p&gt;レンタルサーバ等の、ftpしかできないサーバを扱う案件でもやはりバージョン管理はしたいし、できればcommitで自動デプロイもしたい。そこで、見つけたgit-ftpを使ってみました。&lt;/p&gt;
&lt;h5 id="利用想定環境"&gt;利用想定環境&lt;/h5&gt;
&lt;p&gt;以下のようなシーンに有効かと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ftpしか使えないサーバ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;検証環境=本番環境（要はサーバ 一つだけ)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ローカルリポジトリでしか管理していない&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主に、レンタルサーバでのサイト開発を一人でするような場合にこれに当てはまるのではないでしょうか。&lt;/p&gt;
&lt;h5 id="インストールと使い方"&gt;インストールと使い方&lt;/h5&gt;
&lt;p&gt;ほぼ&lt;a href="http://www.moongift.jp/2014/02/git-ftp-git%C3%97ftp%E3%81%AA%E9%81%8B%E7%94%A8%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%EF%BC%81/"&gt;この記事&lt;/a&gt;通りなのです。まずはインストールして&lt;/p&gt;
&lt;p&gt;$ brew install git-ftp&lt;/p&gt;
&lt;p&gt;ローカルのリポジトリに移動してinit&lt;/p&gt;
&lt;p&gt;$ git ftp init -u (user) -p – &lt;a href="ftp://host.example.com/public_html"&gt;ftp://host.example.com/public_html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;で、完了です。&lt;/p&gt;
&lt;p&gt;ですが、このままだと毎回&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;git commit&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;git ftp push (…以下略)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と、commitの度にgit ftp pushを繰り返す流れになるので、せっかくなので、commitしたら自動でデプロイするようにします。&lt;/p&gt;
&lt;h5 id="hooks"&gt;hooks&lt;/h5&gt;
&lt;p&gt;commmit後に走らせる処理は、.git/hooks/post-commitというファイルに処理を書きます。ここに&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;exec git ftp push --user (user) --passwd (password) (host)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;という形でgit-ftpの同期コマンドを設定してます。これでok&lt;/p&gt;
&lt;p&gt;あとは、git commitすれば、自動的にftpも走って同期されます。これで通常手動でftp行なっている場合、アップロード漏れの心配が無くなります。&lt;/p&gt;</description></item><item><title>google analytics api を使いやすくしたgoogle_analytics_report 公開します（サンプルレポートダウンロード機能付き）</title><link>https://blog.playispeace.com/1030/wrap_google_analytics_api/</link><pubDate>Fri, 30 May 2014 15:28:15 +0000</pubDate><guid>https://blog.playispeace.com/1030/wrap_google_analytics_api/</guid><description>&lt;p&gt;google analytics api を使えば、web上で見る analytics のデータをほぼ自由に扱えるので、 サイトにアクセス数を表示したり、excelに解析レポートとして出力したり色々自由にできます。&lt;/p&gt;
&lt;p&gt;今回、exelに出力しようとして作ったライブラリ公開します。&lt;/p&gt;
&lt;p&gt;グーグルの各サービスで利用出来るライブラリ &lt;a href="https://github.com/google/google-api-php-client"&gt;google-api-php-client&lt;/a&gt;があるので、これを利用すれば、やりたいことは出来ます。ですが、エクセルにレポート出力するときに使いやすいようラッパー作りました。&lt;/p&gt;
&lt;p&gt;ソースはここ（&lt;a href="https://github.com/papettoTV/google_analytics_report"&gt;github@papettoTV/google_analytics_report&lt;/a&gt;）&lt;/p&gt;
&lt;h5 id="ライブラリの説明"&gt;ライブラリの説明&lt;/h5&gt;
&lt;p&gt;google-api-php-client を使えば&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$this-&amp;gt;analytics-&amp;gt;data_ga-&amp;gt;get();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で api 叩いてデータは取得できるけど、一度解析レポートを作成しようとすると何度もこれを呼ぶので、共通化していい感じにしました。この google_analytics_report のキモは、ここ（だけと言っても過言ではない！）。Google_Analytics_Report_Core::getResultsCommon()メソッドに集約されております。 ポイントは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;apiなので取得件数に上限あるけど、取得側は気にしないのでいいようにした。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;取得した値の合計値とか、件数とかよく使うので、それも共通化しておいた。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="環境セットアップ"&gt;環境セットアップ&lt;/h5&gt;
&lt;p&gt;まず、api key 登録している前提です。&lt;/p&gt;
&lt;p&gt;していなければ、&lt;a href="https://console.developers.google.com/"&gt;ここ&lt;/a&gt;から登録をすすめましょう。&lt;/p&gt;
&lt;h6 id="api-key登録未登録の方向け"&gt;api key登録（未登録の方向け）&lt;/h6&gt;
&lt;p&gt;細かい説明は省きますが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;project を作って&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;メニューの APIs &amp;amp; auth -&amp;gt; APIs -&amp;gt; Analytics API を on にして&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再びメニューの Credentials で、Oauth と Publick API access の Key for server applications を作成&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使うのは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Client ID for web application の Client ID と Client secret と Redirect URIs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Key for server applications の API key&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;になります。&lt;/p&gt;
&lt;p&gt;Redirect URIs はこのライブラリを設置するフォルダ内のredirect.phpを指定してください。&lt;/p&gt;</description></item><item><title>titanium のfacebooke module のloginイベントの謎挙動</title><link>https://blog.playispeace.com/1022/facebooke_module_login_event_in_titanium/</link><pubDate>Tue, 08 Apr 2014 19:32:10 +0000</pubDate><guid>https://blog.playispeace.com/1022/facebooke_module_login_event_in_titanium/</guid><description>&lt;p&gt;動作が期待通りでないので、記録&lt;/p&gt;
&lt;h6 id="検証環境"&gt;検証環境&lt;/h6&gt;
&lt;p&gt;環境は、Ti SDK 3.2.2 でiOS7シミュレータ&lt;/p&gt;
&lt;p&gt;試した、サンプルコードは以下。classicのsingle window applicationのFirstView.jsにfacebookのmodule追加しただけのコード&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;//FirstView Component Constructor
function FirstView() {
 //create object instance, a parasitic subclass of Observable
 var self = Ti.UI.createView();

 //label using localization-ready strings from /i18n/en/strings.xml
 var label = Ti.UI.createLabel({
 color:&amp;#39;#000000&amp;#39;,
 text:String.format(L(&amp;#39;welcome&amp;#39;),&amp;#39;Titanium&amp;#39;),
 height:&amp;#39;auto&amp;#39;,
 width:&amp;#39;auto&amp;#39;
 });
 self.add(label);

 //Add behavior for UI
 label.addEventListener(&amp;#39;click&amp;#39;, function(e) {
 alert(e.source.text);
 fb.authorize();
 });

 var fb = require(&amp;#39;facebook&amp;#39;);
 fb.appid = {FACEBOOK_APP_ID};
 var loginFacebook = function(e){
 alert(&amp;#39;loginFacebook&amp;#39;);
 }
 fb.addEventListener(&amp;#34;login&amp;#34;,loginFacebook);

 return self;
}

module.exports = FirstView;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;labelをクリックしたら、fb.authorize()が走って認証。1回目の動作は期待通りだが、問題は認証後の挙動&lt;/p&gt;
&lt;h6 id="何故か発火するloginイベント"&gt;何故か発火するloginイベント&lt;/h6&gt;
&lt;p&gt;認証後、アプリを再びビルドすると、アプリが起動した直後に表示されるloginFacebookアラート。何故か以下の&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var loginFacebook = function(e){
 alert(&amp;#39;loginFacebook&amp;#39;);
 }
 fb.addEventListener(&amp;#34;login&amp;#34;,loginFacebook);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;loginイベントが発火してる模様。labelをクリックしてないのに。アプリが起動しただけで発火。謎。試しに一度、logout()してみる.&lt;/p&gt;</description></item><item><title>ベーシック認証作成ツール(php)を作った</title><link>https://blog.playispeace.com/1014/make_basic_auth_by_php/</link><pubDate>Tue, 25 Mar 2014 09:38:34 +0000</pubDate><guid>https://blog.playispeace.com/1014/make_basic_auth_by_php/</guid><description>&lt;p&gt;&lt;a href="https://gist.github.com/papettoTV/9659681"&gt;ベーシック認証を簡単に設置出来るphpツール&lt;/a&gt;作りました。&lt;/p&gt;
&lt;h5 id="なんで作ったのか"&gt;なんで作ったのか？&lt;/h5&gt;
&lt;p&gt;大抵のレンタルサーバーで、ベーシック認証を設置する場合、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;.htasswdの設置パスを調べる（php置いてpathinfo()とか）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;「ベーシック認証　作成」でググる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;.htaccess＆.htpasswd 作成サービス見つけてクリック&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;id/pass入れて.htaccessと.htpasswd生成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ローカルに.htaccessと.htpasswdを保存&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;.htaccessと.htpasswdをベーシック認証設置したいフォルダにftpでアップロード&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という流れがほとんどでした。sshできないとこうなりますよね。&lt;/p&gt;
&lt;p&gt;決して難しくはないけど、.htpasswdの設置パスを調べるのが、意外と面倒だったりします。そこで、もうちょっとこのフローを簡単にしようじゃないかということで作ってみました。&lt;/p&gt;
&lt;h5 id="ベーシック認証設置方法"&gt;ベーシック認証設置方法&lt;/h5&gt;
&lt;p&gt;今回作成したツールの使い方です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/papettoTV/9659681"&gt;ここ&lt;/a&gt;のソースをダウンロード。Download Gistをクリック&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解凍して出来たphpファイルを、ベーシック認証設置したいフォルダにftpアップロード&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ブラウザからこのファイルにアクセスして、id/passを登録&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上です。簡単でしょ？&lt;/p&gt;
&lt;p&gt;完了したら、アップロードしたmake_basic.phpは不要なので削除してください。&lt;/p&gt;
&lt;p&gt;当然ですが、動作環境としてphpが動く環境が前提になっています。いくつかのレンタルサーバでは試して問題なかったのですが、みなさまの環境で動かなかったりしたら&lt;a href="http://twitter.com/papettoTV"&gt;@papettoTV&lt;/a&gt;までご連絡ください。&lt;/p&gt;
&lt;p&gt;以下がソース&lt;/p&gt;
&lt;p&gt;あと、誰か素敵なデザイナさんが現れてhtmlをいい感じにしてくれるはず。。。|дﾟ)ﾁﾗｯ&lt;/p&gt;
&lt;p&gt;あと、すごい今さら感のあるツールなので、もっとええのあるなら教えてください。（ググらない勇気&lt;/p&gt;</description></item><item><title>iOS実機やgenymotionに導入して分かった、tishadowの動作概要</title><link>https://blog.playispeace.com/1009/tishadow_memo/</link><pubDate>Fri, 07 Mar 2014 14:49:27 +0000</pubDate><guid>https://blog.playispeace.com/1009/tishadow_memo/</guid><description>&lt;p&gt;あくまで概要でメモ程度です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;tishadowは、tishadow server とtishadow アプリで構成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;対象のエミュレータor実機にtishadow アプリをインストール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tishadowアプリを起動しconnect する際、genymotionや実機からの参照IPはifconfigで確認&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;対象project内でtishadow runすると、tishadow serverからtishadowアプリへとビルドファイルが送られる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ビルドしたアプリは、tishadowアプリ内で動く&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tishadowアプリがアクティブであれば、即時反映される&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;参考URL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://tuki0918.hatenablog.com/entry/2013/06/10/141941"&gt;Titanium Mobile / TiShadow 導入→動作確認まで&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.absolute-keitarou.net/blog/?p=419"&gt;TiShadowで爆速Titaniumアプリ開発！！&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Titaniumで、listViewのitemView内のオブジェクトへのイベント設置方法</title><link>https://blog.playispeace.com/1001/how_to_add_event_object_in_itemview/</link><pubDate>Thu, 06 Mar 2014 11:55:46 +0000</pubDate><guid>https://blog.playispeace.com/1001/how_to_add_event_object_in_itemview/</guid><description>&lt;p&gt;意外と日本語の記述が見つからないので、iOS環境で動かしながら調べたことを残しておきます。&lt;/p&gt;
&lt;h5 id="listview基本"&gt;listView基本&lt;/h5&gt;
&lt;p&gt;サンプルコードは以下&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var template1 = {
 childTemplates: [
 {
 type: &amp;#39;Ti.UI.ImageView&amp;#39;,
 bindId: &amp;#39;profile&amp;#39;,
 properties: {
 image:&amp;#34;/path/to/image.png&amp;#34; ,
 },
 events:{
 &amp;#39;click&amp;#39;:function(e){
 alert(&amp;#39;imageview lick&amp;#39;);
 }
 }
 },                    
 ]
};

var listSection = Titanium.UI.createListSection();

var listView = Titanium.UI.createListView({
 sections: [listSection],
    templates: { &amp;#39;plain&amp;#39;: template1 },
    defaultItemTemplate: &amp;#39;plain&amp;#39;  ,
});
&lt;/code&gt;&lt;/pre&gt;&lt;h6 id="itemviewへのイベント設定"&gt;itemViewへのイベント設定&lt;/h6&gt;
&lt;p&gt;itemViewをタップした場合のイベント、itemclickは用意されていますのでこれでいいです&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;listView.addEventListener(&amp;#39;itemclick&amp;#39;, function(e){
 // 処理
 });
&lt;/code&gt;&lt;/pre&gt;&lt;h6 id="itemview内オブジェクトへのイベント設定"&gt;itemView内オブジェクトへのイベント設定&lt;/h6&gt;
&lt;p&gt;itemViewにaddしたオブジェクトに別途イベントを設置したい場合、記述は以下になります。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;template1.childTemplates[0].events = {
 &amp;#39;click&amp;#39;:clickEvent
 };
 function clickEvent(e){
 // 処理
 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;つまり&lt;/p&gt;
&lt;p&gt;&lt;em&gt;テンプレート.テンプレート名[イベント設置したいオブジェクトのindex].events = {‘イベント名’:イベント処理関数}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;という形です。今回で言うとchildTemplatesの0番目のimageViewにclickイベントを設置しました。&lt;/p&gt;
&lt;h6 id="複数のイベント設定"&gt;複数のイベント設定&lt;/h6&gt;
&lt;p&gt;複数指定する場合、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;plainTemplate.childTemplates[0].events = {
 &amp;#39;click&amp;#39;:clickEvent,
 &amp;#39;swipe&amp;#39;:delete,
 };
 function clickEvent(e){
 // イベント内処理
 }
 function delete(e){
 // イベント内処理
 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こうなります。&lt;/p&gt;</description></item><item><title>Titanium CLIでbuild時にinvailed –developer-name と出る場合の解決方法</title><link>https://blog.playispeace.com/992/titanium_cli_build_invailed_developer_name/</link><pubDate>Tue, 04 Feb 2014 11:05:56 +0000</pubDate><guid>https://blog.playispeace.com/992/titanium_cli_build_invailed_developer_name/</guid><description>&lt;p&gt;いつものようにtitanium cliを使ってbuildしたときに、突然エラーが出るようになりました。&lt;/p&gt;
&lt;p&gt;その解決にいたるまでのプロセスメモ&lt;/p&gt;
&lt;p&gt;エラー内容は以下&lt;/p&gt;
&lt;p&gt;[ERROR] Invalid “–developer-name” value “{developer name}”&lt;/p&gt;
&lt;p&gt;（※{}は、適宜変換。）&lt;/p&gt;
&lt;p&gt;叩いているコマンドは&lt;/p&gt;
&lt;p&gt;ti build -T device –platform iphone -V “{Developer Name}” -P {uuid}&lt;/p&gt;
&lt;p&gt;で、確かに間違いないはず！というか今までこれで通ってたのになー、と思いつつ色々調べたのですが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;provisiningファイル見ても、developer nameらしきものが見当たらない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://developer.apple.com/account/ios/certificate/certificateList.action"&gt;ios develper center&lt;/a&gt;で見れる開発者名入れても、同じエラー&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;delveoper nameを一覧で参照するようなtitanium cliコマンドもない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;思い当たる開発者名に変えても通らず&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ぐぬ。&lt;/p&gt;
&lt;p&gt;ところが、Titanium Studioからのbuildなら通るので、buildした直後（に停止ボタンで止めてみたとき）のlogを見てみる。するとこんな記述が&lt;/p&gt;
&lt;p&gt;Titanium Command-Line Interface, CLI version 3.2.0, Titanium SDK version 3.2.0.GA&lt;/p&gt;
&lt;p&gt;Copyright (c) 2012-2013, Appcelerator, Inc. All Rights Reserved.&lt;/p&gt;
&lt;p&gt;Please report bugs to &lt;a href="http://jira.appcelerator.org/"&gt;http://jira.appcelerator.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[INFO] : Found Titanium module id=facebook version=latest platform=iphone deploy-type=test path=/Users/{username}/Library/Application Support/Titanium/modules/iphone/facebook/3.1.1&lt;/p&gt;
&lt;p&gt;[INFO] : Found Titanium module id=appid version=latest platform=iphone deploy-type=test path=/Users/{username}/Library/Application Support/Titanium/modules/iphone/{appid}/0.1&lt;/p&gt;</description></item><item><title>Titaniumで、いい感じのカルーセルUIを作る方法</title><link>https://blog.playispeace.com/985/titanium-mobile-carousel_ui/</link><pubDate>Tue, 10 Dec 2013 10:54:04 +0000</pubDate><guid>https://blog.playispeace.com/985/titanium-mobile-carousel_ui/</guid><description>&lt;p&gt;&lt;a href="http://www.adventar.org/calendars/78"&gt;Titanium™ Advent Calendar 2013&lt;/a&gt;の10日目です。&lt;/p&gt;
&lt;h5 id="いい感じにスライドするカルーセルを作るためのtips"&gt;いい感じにスライドするカルーセルを作るためのTips&lt;/h5&gt;
&lt;p&gt;ScrollViewとScrollableViewって似てて紛らわしいですよね。&lt;/p&gt;
&lt;p&gt;で、ここで突然問題です。&lt;/p&gt;
&lt;p&gt;勢い良くスワイプしたらその分、ススーってスライドするけど、最後止まるときは、どれかのviewが画面に収まる形でパッと止めるには、どうすればいいのか？&lt;/p&gt;
&lt;h6 id="scrollableview"&gt;ScrollableView&lt;/h6&gt;
&lt;p&gt;ScrollableViewを使うと、一枚一枚のviewが紙芝居のようにスクロールします。ですが、勢い良くスワイプしても１つとなりのViewに移動するだけで、パッと止まってしまいます。&lt;/p&gt;
&lt;h6 id="scrollview"&gt;ScrollView&lt;/h6&gt;
&lt;p&gt;ScrollViewを使うと、勢い良くスワイプしたらその分の距離スライドしてくれますが、そのまま慣性の法則で動くだけで、キリのいいところで止まってくれません。&lt;/p&gt;
&lt;p&gt;うまくミックスしてイケてるカルーセルができないかな？&lt;/p&gt;
&lt;h6 id="いいとこ取りするんだ"&gt;いいとこ取りするんだ！&lt;/h6&gt;
&lt;p&gt;色々と考えたところ、以下の方法で進めました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;まず、ベースとしては、ScrollViewを作って、そこにView1,View2,View3…を乗せて行きます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;これでは、ViewNにぴたりと止まる部分がないため、慣性の法則のまま、止まってしまいます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ここを以下にクリアするかぁぁ！！！！！！が、今回の話しのメインです。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="ススーっと動いてぴたっと止める処理"&gt;ススーっと動いて、ぴたっと止める処理&lt;/h5&gt;
&lt;p&gt;ソースコードで説明します。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var carousel = Ti.createScrollView();
 // スクロールイベント
 carousel.addEventListener(&amp;#39;scroll&amp;#39;,function(e){
 scrollStatus(e);
 });
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;scrollイベントに、scrollStatus()という関数を仕込みます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;function scrollStatus(e){
 // 今の位置からページ算出
 var currentPage = parseInt((e.x + pageSize/2) / pageSize);

 // 減速中に位置調整
 if(e.decelerating){
 adjustPosition(e.x, pre_x);
 }

 // 前の座標を保存
 pre_x = e.x;

 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;scrollイベントのプロパティにdeceleratingというのがあります。これは減速中かどうかを表すパラメータです。減速してない間（勢いよくスライドしている間）は位置調整しません。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// スクロール位置調整
 function adjustPosition(x,pre_x){
 // スクロール速度
 var dx = Math.abs(x - pre_x);
 // 速度が落ちたら
 if(dx
位置調整処理の中身です。scrollToで表示したいページに移動します。

###### ポイント

苦労した点は、どうやったら滑らかに動いて止まってくれるか？でした。

最初作ったときは、完全に止まったときにscrollToさせていたのですが、ものすごく不自然な動きになったので、じゃあ、どういうタイミングでscrollToさせれば自然になるのか？

その答えが **スライドの速度が遅くなった時** でした。

前の座標(pre_x)と現在地(x)から速度(dx)を算出して、規定値より少なくなれば、scrollToする、という処理にすることで、かなり滑らかになりました。

##### 実際の動き

ソースコードだけじゃイメージ分からなーい！ですよね？

なんと「[Petap](https://itunes.apple.com/jp/app/petap/id561841079)」というアプリで実装しております。

一度DLして動き見てみてくださいー！
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>ansibleをmacに入れてさくらVPSの環境構築してみる、その１</title><link>https://blog.playispeace.com/969/install_ansible_in_macosx_for_sakuravps/</link><pubDate>Wed, 24 Jul 2013 14:34:11 +0000</pubDate><guid>https://blog.playispeace.com/969/install_ansible_in_macosx_for_sakuravps/</guid><description>&lt;p&gt;Infrastructure as Code！！&lt;/p&gt;
&lt;p&gt;ということで、言いたい事言ってこの流れに乗ってみました。&lt;/p&gt;
&lt;p&gt;chef流行ってますけど、なんかちょいと壁が高そうと感じてたところに、ansibleとやらを知ったので、導入してみました。&lt;/p&gt;
&lt;p&gt;さくらVPSの乗せ変え作業が目的だったので、それを最終目標に、今回はとりあえず導入編で。&lt;/p&gt;
&lt;h5 id="環境"&gt;環境&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;メインマシン : 手元のMac（OS X 10.7.5）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;対象サーバ : さくらVPS (CentOS6)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="ansible-インストール"&gt;ansible インストール&lt;/h5&gt;
&lt;p&gt;Macにansibleをインストールします。&lt;/p&gt;
&lt;p&gt;(ここを参考にしました。&lt;a href="https://weluse.de/blog/installing-ansible-on-os-x.html"&gt;Installing Ansible on OS X&lt;/a&gt;)&lt;/p&gt;
&lt;h6 id="pythonの動作環境構築"&gt;pythonの動作環境構築&lt;/h6&gt;
&lt;p&gt;ansible はpythonで動くので、まずはpythonが動く環境を用意します。&lt;/p&gt;
&lt;p&gt;$ python –version&lt;/p&gt;
&lt;p&gt;Python 2.7.1&lt;/p&gt;
&lt;p&gt;versionの確認。python2.6以下の場合2.7にupdateしましょう。&lt;/p&gt;
&lt;p&gt;$ eazy_install virtualenv&lt;/p&gt;
&lt;p&gt;（※以降、権限の問題でエラーが出る場合は、適宜sudoしました。）&lt;/p&gt;
&lt;p&gt;virtualenvというpythonの複数versionを動作させるツールを入れます。（おそらく他のpythonシステムと併用を考えての導入かと。ansibleのためだけなら不要かも？）&lt;/p&gt;
&lt;p&gt;$ virtualenv ansible-env&lt;/p&gt;
&lt;p&gt;ansibleを動作させる環境を「ansible-env」という名前で作ってるようです。&lt;/p&gt;
&lt;p&gt;$ source ansible-env/bin/activate&lt;/p&gt;
&lt;p&gt;これでその環境になります。(ansible-env)　と出てきます。&lt;/p&gt;
&lt;p&gt;(ansible-env)/Users/username%&lt;/p&gt;
&lt;p&gt;こんな感じ。（これ以降すべてこの環境で実施しています）&lt;/p&gt;
&lt;p&gt;で、その他必要なモジュールをインストール&lt;/p&gt;
&lt;p&gt;$ easy_install pip&lt;/p&gt;
&lt;p&gt;$ pip install paramiko PyYAML jinja2&lt;/p&gt;
&lt;p&gt;ようやくansible インストール&lt;/p&gt;
&lt;p&gt;$ git clone git://github.com/ansible/ansible.git&lt;/p&gt;
&lt;p&gt;$ cd ansible&lt;/p&gt;
&lt;p&gt;$ source ./hacking/env-setup&lt;/p&gt;
&lt;h5 id="ansibleを使う"&gt;ansibleを使う&lt;/h5&gt;
&lt;p&gt;動くかどうか試します。&lt;/p&gt;
&lt;p&gt;(ここを参考にしました。&lt;a href="http://apatheia.info/blog/2013/04/06/about-ansible/"&gt;構成管理ツール Ansible について&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;$ echo “127.0.0.1” &amp;gt; ~/ansible_hosts&lt;/p&gt;</description></item><item><title>スーパーハッカソンに参加して、惨敗だった結果を振り返ってみる</title><link>https://blog.playispeace.com/947/superhackathon2013/</link><pubDate>Tue, 21 May 2013 10:20:57 +0000</pubDate><guid>https://blog.playispeace.com/947/superhackathon2013/</guid><description>&lt;p&gt;&lt;a href="http://super-hackathon.net/"&gt;スーパーハッカソン2013&lt;/a&gt;に参加して来ましたので振り返ってみます。結果からいうと12チーム中10位という結果でした。なぜ、どうしてこのような結果になってしまったのか振り返ってみます。&lt;/p&gt;
&lt;h6 id="ハッカソン開始前"&gt;ハッカソン開始前&lt;/h6&gt;
&lt;p&gt;事前に、寺田さんに声をかけて頂き、さらにメンバーも集めてもらい、チーム「フライングゲット」結成。実は一人でも参加するつもりでしたが、声をかけて頂いたので、最初の課題「チームメンバーになる」をクリア。&lt;/p&gt;
&lt;h6 id="開催日"&gt;開催日&lt;/h6&gt;
&lt;p&gt;企画は、「〇〇という問題を解決する１画面のサービス」ということで、詰め方として、この問題を決める事から始めました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;各自持ってる問題を付箋に書きまくる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ある程度たまったらジャンルで整理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ジャンル毎に更なるアイデア、または、一つ良いのを拾って深める議論&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;その中でチームで「これはいいかも」と共感できた案をいくつかピックアップ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そこから一つを決定。としたかったのですが、中々「これだ！」というものが見つからず少し迷走&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そんな中、会話の中から生まれた案に皆共感し決定&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これで方向性は決定。twilioを使ったアプリを作る事に。&lt;/p&gt;
&lt;p&gt;企画書、というかラフはこんな感じ（薄くて見にくいですが）&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2013/05/superhackathon_plan3.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;※実はこのとき、モデレータの藤井さんから、この企画に対してもう一ひねり欲しい、と言われたのですが、結局ひとひねり加える事ができませんでした。&lt;/p&gt;
&lt;h6 id="日曜水曜"&gt;日曜〜水曜&lt;/h6&gt;
&lt;p&gt;私は、メンバーの中でサーバサイド担当だったので、早速、翌日からtwilioAPIの調査開始。月曜、火曜、と必要な機能の検証／実装を終え、水曜に一度メンバーで再集合。企画の詰めを行った結果、方向性は変わらないものの実装できる機能の制約を加味して、仕様に落とし込んでいきました。&lt;/p&gt;
&lt;p&gt;今振り返ってみれば、ここが最後のブレイクスルーが出来るチャンスだったように思いますが、無難な形に落ち着いてしまったのかもしれません。&lt;/p&gt;
&lt;h6 id="水曜金曜"&gt;水曜〜金曜&lt;/h6&gt;
&lt;p&gt;私は、発表日当日の土曜日はほぼ作業ができないため、金曜までにはデモを見せれる形まで持って行きました。そして、金曜夜に再度集まり、最終打ち合わせ。仕様の詳細確認、残タスクの確認と、発表の確認を行って解散。深夜まで残りの不具合を潰していき、完成させました。&lt;/p&gt;
&lt;h6 id="発表当日"&gt;発表当日&lt;/h6&gt;
&lt;p&gt;発表当日は、友人の結婚式で参加できなかったのですが、非常にハイレベルだったようで、12位中10位と残念な結果に終わってしまいました。悔しい気持ちもありますが、それよりもそれだけハイレベルな他のチームの発表が見れなかったのが本当に残念です。&lt;/p&gt;
&lt;h5 id="反省点"&gt;反省点&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;結局、最後までひとひねりできなかった&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;開催日に藤井さんが言われた「これだけのことが１週間で出来るのか？」という限界ギリギリまで目標を設定できなかった&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;やはり、最終日参加できないため、ギリギリまで詰めれないというリスクもあり、確実に完成させることを目標に（良い意味でも悪い意味でも）無難な形に納めにいったことが、この結果にも大きく影響してたと思います。&lt;/p&gt;
&lt;p&gt;次回参加のときは、開催日も発表日もフルフル参加できる体制で望みたいです！&lt;/p&gt;
&lt;h5 id="最後に"&gt;最後に&lt;/h5&gt;
&lt;p&gt;このようなイベントを運営して頂いた藤井さん、および運営スタッフの皆様、本当にありがとうございます。&lt;/p&gt;
&lt;p&gt;自分のクリエイター魂をかき立てるとてもいいきっかけになりました。&lt;/p&gt;
&lt;p&gt;チームメンバーのみなさん、もっとキリキリした感じになるかと思いましたが、皆さんの人柄のおかげで楽しく開発もできました。ありがとうございます！&lt;/p&gt;
&lt;p&gt;また、他のチームにも感謝です。まっだまだ上がいると思うと、とても気が引き締まります。&lt;/p&gt;
&lt;p&gt;ではでは、最後に、またこのような機会があれば、みなさんぜひ一緒にやりましょう。&lt;/p&gt;
&lt;h5 id="関連リンク"&gt;関連リンク&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://super-hackathon.net/"&gt;公式ページ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://jp.startup-dating.com/2013/05/super-hackathon-2013-in-osak"&gt;大阪からヒーローを生み出すーー1週間でプロトタイプを作る「スーパーハッカソン2013」驚きのサービスたち&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://rewish.jp/blog/misc/super_hackathon_2013"&gt;スーパーハッカソン2013を観覧してきました&lt;/a&gt; @rewishさん&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://utweb.jp/blog/archives/1877?fb_action_ids=10201780886782960"&gt;スーパーハッカソン2013に参加してきたょ…？&lt;/a&gt; 宇都宮さん&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://yokotakenji.me/log/?p=2463"&gt;スーパーハッカソン2013に参加しました。&lt;/a&gt; @yokotak0527さん&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.studio-bloom.net/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%8F%E3%83%83%E3%82%AB%E3%82%BD%E3%83%B32013%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/"&gt;スーパーハッカソン2013に参加してきました&lt;/a&gt; @itasanさん&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://nantokaworks.com/?p=1169"&gt;スーパーハッカソン2013に参加しました&lt;/a&gt; @kamiyamさん&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>第6回関西PHP勉強会でLTしてきた #phpkansai</title><link>https://blog.playispeace.com/940/phpkansai_vol6/</link><pubDate>Tue, 30 Apr 2013 17:46:37 +0000</pubDate><guid>https://blog.playispeace.com/940/phpkansai_vol6/</guid><description>&lt;p&gt;&lt;a href="http://kphpug.doorkeeper.jp/events/3673"&gt;これ&lt;/a&gt;に参加してきました。&lt;/p&gt;
&lt;h5 id="第6回関西php勉強会"&gt;第6回関西PHP勉強会&lt;/h5&gt;
&lt;p&gt;会が始まる前にピザとビールとxboxが用意されてるという、今まで経験した事無い勉強会。もちろん飲み食いしながらLTが聞ける（実は失礼かも？w）素敵なイベントでした。&lt;/p&gt;
&lt;p&gt;全員がLTするという小規模だからこそできる、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;和気あいあいとした雰囲気&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LT中にも気軽に質問、突っ込みできる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という、スタイルでの発表でした。&lt;/p&gt;
&lt;h5 id="発表内容"&gt;発表内容&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji/ss-20060974"&gt;自動テストへの道のり&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji"&gt;Yokota Eiji&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/918/jenkins_run_build_and_sound_alert_when_git_commit_in_macosx/"&gt;前回&lt;/a&gt;のブログで、自動テスト環境を構築しましたが、しばし運営して見えてきた、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ユニットテスト環境&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ユニットテストの利点、つまづく点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自動テスト楽しいよ！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;等の内容をまとめました。&lt;/p&gt;
&lt;h5 id="自動テスト"&gt;自動テスト&lt;/h5&gt;
&lt;p&gt;自動テストの話しをしたらすぐにこんなエントリーを発見&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kaz29.hatenablog.com/entry/2013/04/30/122642"&gt;「CIを半年間まわしてみて」というお題でLTをしてきました&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;いやー、これからの参考になりそうです。&lt;/p&gt;</description></item><item><title>初めてのjenkins、commitしたらテスト結果に音を出すまでの道のり</title><link>https://blog.playispeace.com/918/jenkins_run_build_and_sound_alert_when_git_commit_in_macosx/</link><pubDate>Fri, 08 Mar 2013 23:59:00 +0000</pubDate><guid>https://blog.playispeace.com/918/jenkins_run_build_and_sound_alert_when_git_commit_in_macosx/</guid><description>&lt;p&gt;初めてのjenkinsで、commitしたらユニットテストが走って、その結果次第でレベルアップ音がなるようになるまでの試行錯誤&lt;/p&gt;
&lt;p&gt;&lt;a href="http://eaglesakura.hatenablog.com/entry/2013/02/22/224133"&gt;Jenkinsでビルド後に音（BGM、SE）を鳴らしてみた&lt;/a&gt;に触発されてjenkinsついに初導入や！と気合いを入れてやってみた。&lt;/p&gt;
&lt;p&gt;何カ所かハマりポイントあったので、それも全部残します。&lt;/p&gt;
&lt;h5 id="前提"&gt;前提&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;環境は mac osx 10.7.5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cakephp2で書いたwebサービス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gitで管理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ユニットテストをすでに書いてる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="参考にした本"&gt;参考にした本&lt;/h5&gt;
&lt;h5 id="jenkinsインストール"&gt;jenkinsインストール&lt;/h5&gt;
&lt;p&gt;いきなりですが、勢いでmacportsかな？でインストールしたら、その後ハマったので、&lt;a href="https://gist.github.com/shunirr/3522219"&gt;こちら&lt;/a&gt;を参考にjenkins 再インストール。リンク先そのままですが、作業メモ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;jenkinsアンインストール
sh /Library/Application\ Support/Jenkins/Uninstall.command&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://mirrors.jenkins-ci.org/war/latest/jenkins.war"&gt;ここ&lt;/a&gt;から最新のjenkikins.war をDL&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;各ディレクトリ作成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mkdir -p ~/Library/LaunchAgents/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mkdir -p ~/.jenkins/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mkdir -p ~/bin/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mkdir -p ~/lib/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mkdir -p ~/lib/java/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;各ファイル設置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mv jenkins.war ~/lib/java/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~/Library/LaunchAgents/jenkins.plist というファイルを作成。内容は以下。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
    
        EnvironmentVariables
        
            JENKINS_HOME
            ${HOME}/.jenkins
        
        GroupName
        staff
        KeepAlive
        
        Label
        jenkins
        ProgramArguments
        
            /bin/bash
            ${HOME}/bin/jenkins-runner.sh
        
        RunAtLoad
        
        UserName
        ${USER}
    
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;~/bin/jenkins-runner.sh というファイルを作成。内容は以下。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#!/bin/bash
#
# Startup script used by Jenkins launchd job.
# Mac OS X launchd process calls this script to customize
# the java process command line used to run Jenkins.
#-      
# Customizable parameters are found in
# ~/Library/Preferences/jenkins.plist
#       
# You can manipulate it using the &amp;#34;defaults&amp;#34; utility.
# See &amp;#34;man defaults&amp;#34; for details.
        
defaults=&amp;#34;defaults read ~/Library/Preferences/jenkins&amp;#34;
        
war=`$defaults war` || war=&amp;#34;${HOME}/lib/java/jenkins.war&amp;#34;
        
javaArgs=&amp;#34;&amp;#34;
heapSize=`$defaults heapSize` &amp;amp;&amp;amp; javaArgs=&amp;#34;$javaArgs -Xmx${heapSize}&amp;#34;
            
home=`$defaults JENKINS_HOME` &amp;amp;&amp;amp; export JENKINS_HOME=&amp;#34;$home&amp;#34;
        
add_to_args() {
    val=`$defaults $1` &amp;amp;&amp;amp; args=&amp;#34;$args --${1}=${val}&amp;#34;
}       
    
args=&amp;#34;&amp;#34;
add_to_args prefix
add_to_args httpPort
add_to_args httpListenAddress
add_to_args httpsPort
add_to_args httpsListenAddress
add_to_args ajp13Port
add_to_args ajp13ListenAddress
 
echo &amp;#34;JENKINS_HOME=$JENKINS_HOME&amp;#34;
echo &amp;#34;Jenkins command line for execution:&amp;#34;
echo /usr/bin/java $javaArgs -jar &amp;#34;$war&amp;#34; $args
exec /usr/bin/java $javaArgs -jar &amp;#34;$war&amp;#34; $args
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;jenkins.plist の ${USER} と ${HOME} を書き換える&lt;/p&gt;</description></item><item><title>Twitter API 勉強会@大阪に行ってきた！#twtr_hack</title><link>https://blog.playispeace.com/913/twitter_study_at_osaka/</link><pubDate>Mon, 04 Mar 2013 20:33:34 +0000</pubDate><guid>https://blog.playispeace.com/913/twitter_study_at_osaka/</guid><description>&lt;p&gt;&lt;a href="http://www.zusaar.com/event/489009"&gt;これ&lt;/a&gt;に参加してきましたのでレポートをば。やっとブログ書けた。。。１ヶ月前のイベント。。。&lt;/p&gt;
&lt;h5 id="twitter-api11display-requirementstwitter-cardについて"&gt;Twitter API1.1、Display Requirements、Twitter Cardについて&lt;/h5&gt;
&lt;p&gt;主催者でもある&lt;a href="https://twitter.com/yusuke"&gt;@yusuke&lt;/a&gt;さん&lt;/p&gt;
&lt;p&gt;TWitter API1.1 の目指す所を簡単に言うと、&lt;/p&gt;
&lt;p&gt;Twitterクライアント=Twitterのただのコピーみたいなクライアント　以外に頑張ってほしい&lt;/p&gt;
&lt;p&gt;ということかな。そりゃそうやね。公式のクライアントあるもんね。&lt;/p&gt;
&lt;h5 id="twitter-関連サービスを5年運営してわかったこと"&gt;Twitter 関連サービスを5年運営してわかったこと&lt;/h5&gt;
&lt;p&gt;&lt;a href="https://twitter.com/msng"&gt;@msng&lt;/a&gt;さん&lt;/p&gt;
&lt;p&gt;数多くのbotを運営されてるからこそ言える貴重な経験を共有させてもらえました。&lt;/p&gt;
&lt;h5 id="突っ込みbotを運営して見えてくること"&gt;突っ込みbotを運営して見えてくること&lt;/h5&gt;
&lt;p&gt;僕です。緊張で喉カラカラでした。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji/tukkomimura-twtr-hack"&gt;Tukkomimura #twtr_hack&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji"&gt;Yokota Eiji&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;@yusukeさんに「三村botといえば、知らない人はいないぐらい」と言ってもらえたのは嬉しかったなー。。（お世辞でも嬉しいもんです。&lt;/p&gt;
&lt;p&gt;んで、反省点を探すべく発表動画を見返すと、10分予定のところ20分も喋ってた。おい。。。&lt;/p&gt;
&lt;h5 id="twitterクライアントがこの先生き残るには仮"&gt;Twitterクライアントがこの先生き残るには(仮)&lt;/h5&gt;
&lt;p&gt;&lt;a href="https://twitter.com/s17er"&gt;@s17er&lt;/a&gt;さん&lt;/p&gt;
&lt;p&gt;まさにtwitterが好んで無いクライアント&lt;a href="http://janetter.net/jp/"&gt;Janetter&lt;/a&gt;を運営されている方。twitter api1.1に向かって、切実に困ってる感じが伝わってきました。それでも最後は希望のある内容だったので、今後も頑張ってほしい！&lt;/p&gt;
&lt;h5 id="感想"&gt;感想&lt;/h5&gt;
&lt;p&gt;ブログが２回ほど消えてるので、三村botについて要約まとめれたので良かったです。いつかブログに書こうかと思ってたのでちょうど良かったです。&lt;/p&gt;
&lt;p&gt;あと、まだまだ発表慣れないすねー。うまくしゃべれるようになりたい。あと、笑いがないと不安になる気持ちもなんとかしたいw&lt;/p&gt;
&lt;p&gt;最後に、この機会を提供してくれた&lt;a href="https://twitter.com/yusuke"&gt;@yusuke&lt;/a&gt;さん、場所提供の&lt;a href="http://www.osakan-space.com/"&gt;オオサカンスペース&lt;/a&gt;さんに感謝！&lt;/p&gt;
&lt;h5 id="参考"&gt;参考&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://samuraism.jp/diary/2013/02/02.html"&gt;@yusukeさんのブログ&lt;/a&gt;に資料やら動画やらがまとまってます。&lt;/p&gt;
&lt;h6 id="独り言"&gt;独り言&lt;/h6&gt;
&lt;p&gt;あー！、3/8までに三村を1.1対応せねばぁー！&lt;/p&gt;</description></item><item><title>cakephp2.2 + PHPUnit + postgres でsequenceがうまく動かない場合の対処方法</title><link>https://blog.playispeace.com/904/cakephp2-2_phpunit_postgres_sequence/</link><pubDate>Tue, 29 Jan 2013 15:19:39 +0000</pubDate><guid>https://blog.playispeace.com/904/cakephp2-2_phpunit_postgres_sequence/</guid><description>&lt;p&gt;ちょっとハマったのでメモ&lt;/p&gt;
&lt;p&gt;発端は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一ファイル毎のテストは成功するのに、testsuite作って同時に実行するとduplicate keyでエラーになる場合がある！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;調べてみると、fixtureでinsert()するときにsequenceがリセットされてないっぽい&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なんでじゃー。しかも成功するときもある。２回に１回ぐらいの割合で繰り返す。不思議フシギー&lt;/p&gt;
&lt;h5 id="試した事"&gt;試した事&lt;/h5&gt;
&lt;h6 id="fixtureのidsequenceカラムを消す"&gt;fixtureのid(sequenceカラム)を消す&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://tipshare.info/view/510612594b21221529000000"&gt;ここ&lt;/a&gt;に書いたけど、fixtureのときにid指定しないと、auto incrementが効いて、insert()でもこけない。&lt;/p&gt;
&lt;p&gt;これで解決か？と思われたが、、、当然、他のテーブルでこのidでjoinなんかしてると、結合できない場合が発生して、あうと。それにこの方法は、テスト時の登録データのidが固定されないので、あまりよろしくない気もする。&lt;/p&gt;
&lt;h6 id="setupで無理矢理sequenceを合わせてみる"&gt;setUp()で無理矢理sequenceを合わせてみる&lt;/h6&gt;
&lt;p&gt;テストの前処理でなんとかならんかと考えて、やってみた。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;public function setUp() {
		parent::setUp();

		$this-&amp;gt;User = ClassRegistry::init(&amp;#39;User&amp;#39;);
		$q = &amp;#34;SELECT setval(&amp;#39;users_id_seq&amp;#39;,(SELECT MAX(id) from users))&amp;#34;;
		$this-&amp;gt;User-&amp;gt;query($q);
	}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果・・・だめ！postgresのシーケンスを進めても、cakephp側で持ってるidも進めないと結局1をinsertしようとする。これはこれで、対策ありそうやけど（setID()的な）見つけれず断念。&lt;/p&gt;
&lt;h6 id="fixture時にsequenceリセットする"&gt;fixture時にsequenceリセットする&lt;/h6&gt;
&lt;p&gt;ググると&lt;a href="http://kagura-c.info/blog/2011/06/28/update_sequence_failure_on_cakephp_1-2_with_postgres/"&gt;こんな記事&lt;/a&gt;を発見し、参考にしながら実践&lt;/p&gt;
&lt;h6 id="appcaketestphpをapptestfixture-に作成"&gt;AppCakeTest.phpをapp/Test/Fixture/ に作成&lt;/h6&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;fields)
            &amp;amp;&amp;amp; $this-&amp;gt;fields[&amp;#39;id&amp;#39;][&amp;#39;type&amp;#39;] == &amp;#39;integer&amp;#39;
            &amp;amp;&amp;amp; $this-&amp;gt;fields[&amp;#39;id&amp;#39;][&amp;#39;key&amp;#39;] == &amp;#39;primary&amp;#39;
        ) {
            $db-&amp;gt;fetchAll(&amp;#34;SELECT pg_catalog.setval(pg_get_serial_sequence(&amp;#39;{$this-&amp;gt;table}&amp;#39;, &amp;#39;id&amp;#39;)&amp;#34;
                . &amp;#34;, (SELECT MAX(id) FROM {$this-&amp;gt;table}), true);&amp;#34;, false);
        }
        return $result;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;idというレコードがあって、かつ、interger でprimaryだったら、setvalで今の値を取ってくる、って処理かな&lt;/p&gt;
&lt;h6 id="各fixtureをapptextfixtureで継承"&gt;各FixtureをAppTextFixtureで継承&lt;/h6&gt;
&lt;p&gt;この部分を&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;class HogeFixture extends CakeTestFixture {
（以下略）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これに変更&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;App::uses(&amp;#34;AppTestFixture&amp;#34;,&amp;#34;Test/Fixture&amp;#34;);
class HogeFixture extends AppTestFixture {
（以下略）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、完了。で、結果は・・・OK!!!いけました。単体のテストでも、ALLな全テストでもこれで通りました。参考先の記事に本当助けられました。&lt;/p&gt;
&lt;h5 id="学んだ事"&gt;学んだ事&lt;/h5&gt;
&lt;p&gt;試行錯誤して学んだ事&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;App:::usesってなんでも読み込めるんだなー&lt;/p&gt;</description></item><item><title>cakephp2.2 でModel::query()のTips</title><link>https://blog.playispeace.com/890/cakephp2-2_model_query_tips/</link><pubDate>Thu, 24 Jan 2013 20:47:39 +0000</pubDate><guid>https://blog.playispeace.com/890/cakephp2-2_model_query_tips/</guid><description>&lt;p&gt;ユニットテストを実施中に気づいたModel::query()のtips。&lt;/p&gt;
&lt;h5 id="modelqueryでbindしたい"&gt;Model::query()でbindしたい&lt;/h5&gt;
&lt;p&gt;以下の方法で疑似bindしてくれます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Model-&amp;gt;query(
 &amp;#39;select * from posts where id=? and user=?&amp;#39;
 , array(&amp;#39;hoge&amp;#39;,&amp;#39;oreore&amp;#39;)
);
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="modelqueryでキャッシュしてほしくない"&gt;Model::query()でキャッシュしてほしくない&lt;/h5&gt;
&lt;p&gt;query()はデフォルト、結果がキャッシュされますので、キャッシュされたくない場合こうします。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Model-&amp;gt;query(
 &amp;#39;select * from posts&amp;#39;
 ,false
);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;、、、あれ、というとこは、バインドとキャッシュoffを同時にするには、どうしたらいいんだ。。。。&lt;/p&gt;
&lt;h5 id="bind--cache-off"&gt;bind &amp;amp; cache off&lt;/h5&gt;
&lt;p&gt;これでできました&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Model-&amp;gt;query(
 &amp;#39;select * from posts where id=? and user=?&amp;#39;
 , array(&amp;#39;hoge&amp;#39;,&amp;#39;oreore&amp;#39;)
 ,false
);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;なんと！cacheのパラメータを第３引数に移動で対応できました！汎用的！&lt;/p&gt;
&lt;h5 id="参考"&gt;参考&lt;/h5&gt;
&lt;h6 id="fetchall"&gt;fetchAll&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://twitter.com/cakephper"&gt;@cakephper&lt;/a&gt; さんの記事&lt;a href="http://d.hatena.ne.jp/cakephper/20120204/1328324327"&gt;CakePHP2 独自SQL文でPrepared Statementを使う&lt;/a&gt; を参考に、fetchAllで、同じような事を試してみたんですが、ダメでした。&lt;/p&gt;
&lt;h6 id="cachequeries"&gt;cacheQueries&lt;/h6&gt;
&lt;p&gt;そうそう、cacheQueries = false も両方、試したんですけどねー、これもだめでした。&lt;/p&gt;
&lt;h6 id="追記"&gt;追記&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://twitter.com/cakephper"&gt;@cakephper&lt;/a&gt;さんに言われて、fetchAllを再度、以下のように第３引数設定して、試してみました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Model-&amp;gt;getDatasource()-&amp;gt;fetchAll(
 &amp;#39;select * from posts where id=? and user=?&amp;#39;
 , array(&amp;#39;cakephper&amp;#39;,&amp;#39;sasugadesu&amp;#39;)
 , array(&amp;#39;cache&amp;#39; =&amp;gt; false)
);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ってしたら、いけました！てか、&lt;a href="https://twitter.com/cakephper"&gt;@cakephper&lt;/a&gt;さんもブログ追記してた！&lt;/p&gt;</description></item><item><title>macのローカルにサブドメインを設定する方法のメモ</title><link>https://blog.playispeace.com/884/subdomain_for_macosx10-7-5/</link><pubDate>Wed, 26 Dec 2012 16:45:03 +0000</pubDate><guid>https://blog.playispeace.com/884/subdomain_for_macosx10-7-5/</guid><description>&lt;p&gt;webアプリをローカルで開発する際、プロジェクト毎に別ドメインたてたいものです。&lt;/p&gt;
&lt;p&gt;で、mac(OSX10.7.5)のローカルにサブドメインたてようとしたのですが、centOSと少し勝手が違ったのでメモ&lt;/p&gt;
&lt;h5 id="ドメインサブドメイン名"&gt;ドメイン・サブドメイン名&lt;/h5&gt;
&lt;p&gt;今回は、例として、localhostのサブドメインにsubdomain.localhost設定するという想定です。localhostへのアクセス環境はすでに設定済みとします。&lt;/p&gt;
&lt;h5 id="hosts設定"&gt;hosts設定&lt;/h5&gt;
&lt;p&gt;まずは、/private/etc/hosts　に以下を追記&lt;/p&gt;
&lt;p&gt;127.0.0.1 subdomain.localhost&lt;/p&gt;
&lt;h6 id="httpdconf設定"&gt;httpd.conf設定&lt;/h6&gt;
&lt;p&gt;/etc/apache2/httpd.conf を編集&lt;/p&gt;
&lt;p&gt;NameVirtualHost *:80&lt;/p&gt;
&lt;p&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/p&gt;
&lt;p&gt;ServerName abc.localhost&lt;/p&gt;
&lt;p&gt;DocumentRoot &amp;ldquo;/Users/yourname/project/abc/html&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;/VirtualHost&gt; &lt;/p&gt;
&lt;p&gt;subdmain.localhost のDocumentRootを /Users/yourname/project/abc/html に設定しています。&lt;/p&gt;
&lt;p&gt;yourname部分はアカウント名に読み替えてください。&lt;/p&gt;
&lt;h6 id="apache再起動で無事設定完了と思いきや"&gt;apache再起動で無事設定完了！・・・と思いきや&lt;/h6&gt;
&lt;p&gt;apache再起動して&lt;/p&gt;
&lt;p&gt;sudo apatchectl restart&lt;/p&gt;
&lt;p&gt;&lt;a href="http://abc.localhost/"&gt;http://abc.localhost/&lt;/a&gt;にれっつアクセス。すると&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Forbidden

You don&amp;#39;t have permission to access / on this server.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ぬぬ！permissionが無いと起こられました。http://localhost/ は問題なく動いてるのに何で？&lt;/p&gt;
&lt;h6 id="varlogapache2error_log-を見てみる"&gt;/var/log/apache2/error_log を見てみる&lt;/h6&gt;
&lt;p&gt;[Wed Dec 26 16:19:20 2012] [error] [client 127.0.0.1] client denied by server configuration: /Users/yourname/project/abc/html/&lt;/p&gt;
&lt;p&gt;サーバー設定で拒否してますなー。Directoryディレクティブで許可してるディレクトリのはずなのに、、、（だからhttp://localhost/が動いてるはず）&lt;/p&gt;
&lt;h6 id="directoryディレクティブで許可指定しみる"&gt;Directoryディレクティブで許可指定しみる&lt;/h6&gt;
&lt;p&gt;/etc/apache2/httpd.conf に追記&lt;/p&gt;
&lt;p&gt;&amp;lt;Directory /Users/yourname/Documents/PJ/nanitabeyo/src/html&amp;gt;&lt;/p&gt;
&lt;p&gt;        Order allow,deny&lt;/p&gt;
&lt;p&gt;        Allow from all&lt;/p&gt;
&lt;p&gt;&lt;/Directory&gt;   &lt;/p&gt;
&lt;p&gt;これでapache再起動したら、動きました！&lt;/p&gt;</description></item><item><title>Titanium mobile でscrollイベントについて調べた話</title><link>https://blog.playispeace.com/874/titanium_mobile_scroll_event/</link><pubDate>Fri, 16 Nov 2012 14:19:38 +0000</pubDate><guid>https://blog.playispeace.com/874/titanium_mobile_scroll_event/</guid><description>&lt;p&gt;この記事は、&lt;a href="http://twitter.com/astronaughts"&gt;@astronaughts&lt;/a&gt;さん主催の&lt;a href="http://atnd.org/events/33731"&gt;Titanium mobile “early” Advent Calendar 2012&lt;/a&gt;に参加して書いております。16日目（11/16）担当でございます。&lt;/p&gt;
&lt;p&gt;みんなが好きなイベントは？そうscrollイベントですね！&lt;/p&gt;
&lt;p&gt;Titanium mobileのscrollイベントが思い通り動いてないっぽかったので、動きを調べてみました。(SDK2.1.4 GA、iOSシミュレータで検証)&lt;/p&gt;
&lt;h5 id="scrollイベント"&gt;scrollイベント&lt;/h5&gt;
&lt;p&gt;scrollViewをスワイプしてスライドさせたときに発火するのが&lt;a href="http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.ScrollView-event-scroll"&gt;scroll&lt;/a&gt;イベントです。&lt;/p&gt;
&lt;p&gt;scrollしている間、scrollイベントが発火し続け、scrollが慣性で止まると、scrollEndが発火します。&lt;/p&gt;
&lt;p&gt;以下のようなイメージ&lt;/p&gt;
&lt;p&gt;・・・（略）・・・&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=345&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=346&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=347&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=348&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=349&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=350&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=351&lt;/p&gt;
&lt;p&gt;[INFO] scrollEnd&lt;/p&gt;
&lt;p&gt;xはscroll時の座標です。&lt;/p&gt;
&lt;h6 id="疑問1-scrollendが発火しない"&gt;疑問(1) scrollEndが発火しない？&lt;/h6&gt;
&lt;p&gt;scroll中にtapして強制的にscrollを止めた直後、scrollEndが発火しません。&lt;/p&gt;
&lt;p&gt;が、tapを終えると（tapしたマウスのクリックを離すと）scrollEndが発火します。&lt;/p&gt;
&lt;h6 id="疑問2-scrolltoしたら"&gt;疑問(2) scrollToしたら？&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.ScrollView-method-scrollTo"&gt;scrollTo&lt;/a&gt;を使って、プログラムで移動させた場合、どうなるか？&lt;/p&gt;
&lt;p&gt;結論：&lt;strong&gt;scrollのみ連続で発生&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;scrollToを使っても一瞬で移動する訳ではないので、移動の間scrollが発火し続けます。ただし、&lt;strong&gt;scrollEndは発火しません&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;・・・（略）・・・&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=476&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=497&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=519&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=538&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=556&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=571&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=584&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=593&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=598&lt;/p&gt;
&lt;p&gt;[INFO] scroll x=600&lt;/p&gt;
&lt;p&gt;こんな感じ。&lt;/p&gt;</description></item><item><title>Titanium mobile でやってはいけないTi.App.addEventListener</title><link>https://blog.playispeace.com/868/bad_know_how_about_ti-app-addeventlistener/</link><pubDate>Tue, 06 Nov 2012 10:20:19 +0000</pubDate><guid>https://blog.playispeace.com/868/bad_know_how_about_ti-app-addeventlistener/</guid><description>&lt;p&gt;この記事は、&lt;a href="http://twitter.com/astronaughts"&gt;@astronaughts&lt;/a&gt;さん主催の&lt;a href="http://atnd.org/events/33731"&gt;Titanium mobile “early” Advent Calendar 2012&lt;/a&gt;に参加して書いております。6日目（11/6）担当でございます。&lt;/p&gt;
&lt;h5 id="やってはいけないtiappaddeventlistener"&gt;やってはいけないTi.App.addEventListener&lt;/h5&gt;
&lt;p&gt;addEventListenerをTi.Appに設定する場合、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Ti.App.addEventListener(&amp;#34;save_astronaughts&amp;#34;,function(){
Ti.App.info(&amp;#34;I&amp;#39;ll save you!!&amp;#34;);
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;な感じで書きます。&lt;/p&gt;
&lt;p&gt;が、注意しなければならないのは、この処理が複数回呼ばれるような場所にあると、呼ばれるたびにeventが追加されてしまいます。&lt;strong&gt;同じイベント名だからといって上書きされません。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;私にも、windowをopenしてcloseしたらそのwindow内で定義したevent全て消えてくれるのかと思ってた時期がありました。。。&lt;/p&gt;
&lt;p&gt;前の日の&lt;a href="http://astronaughts.net/titanium-mobile-fireevent/"&gt;記事&lt;/a&gt;でもaddEventListenerについて書かれていますが、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var win = Ti.UI.createWindow({});
win.addEventListener(&amp;#34;save_astronaughts&amp;#34;,function(){
Ti.App.info(&amp;#34;I&amp;#39;ll save you!!&amp;#34;);
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これだとwinをcloseすればOKですが、Ti.Appだとグローバルに定義している形になり、残ってしまうようですね。&lt;/p&gt;
&lt;p&gt;複数定義してしまってても、アプリ自体はすんなり動いたりするので、見落としてました。&lt;/p&gt;
&lt;h6 id="二重登録の対策"&gt;二重登録の対策&lt;/h6&gt;
&lt;p&gt;もちろん、複数呼ばれる場所に書かない、というのが基本ですが、私の場合、もう書いてしまって定義場所を移動しづらかったので、ラッパーを作って対策してみました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// Ti.App.addEventListener の二重登録防止関数
 Ti.App.ael = function(listener_name,callback){
 // 登録済みの場合追加しない
 if(Ti.App.in_array(listener_name,Ti.App.listeners)){
 return false;
 }
 // イベントを配列に登録
 Ti.App.listeners.push(listener_name);

 // イベント追加
 return Ti.App.addEventListener(listener_name, callback);
 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;定義済みのイベント名をグローバルな配列listenersに登録して、定義済みかのチェックを行っています。コード内のin_arrayはこちら。何かの公開コード（忘れた。。。）に定義されていたのを拝借しております。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Ti.App.in_array = function(needle, haystack, argStrict) {
 var key = &amp;#39;&amp;#39;,
 strict = !! argStrict;

 if (strict) {
 for (key in haystack) {
 if (haystack[key] === needle) {
 return true;
 }
 }
 } else {
 for (key in haystack) {
 if (haystack[key] == needle) {
 return true;
 }
 }
 }

 return false;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;何かもっと素敵な対策方法あれば教えてください！&lt;/p&gt;</description></item><item><title>PHP祭り2012に参加してきた</title><link>https://blog.playispeace.com/864/phpmatsuri2012/</link><pubDate>Sun, 04 Nov 2012 15:44:36 +0000</pubDate><guid>https://blog.playispeace.com/864/phpmatsuri2012/</guid><description>&lt;p&gt;&lt;a href="http://www.phpmatsuri.net/2012/"&gt;PHP祭り2012&lt;/a&gt;に参加してきました。&lt;/p&gt;
&lt;p&gt;作りたいものはこれって決まってたので、面白そうなセミナー聞きつつ、開発&lt;/p&gt;
&lt;h5 id="アジャイルの話"&gt;アジャイルの話&lt;/h5&gt;
&lt;p&gt;&lt;a href="https://twitter.com/ryuzee"&gt;@ryuzee&lt;/a&gt;さんの話は、ボリュームも内容も圧倒的で、必見。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://speakerdeck.com/ryuzee/cakephp-plus-jenkinsniyoruaziyairukai-fa-number-phpmatsuri"&gt;CakePHP+Jenkinsによるアジャイル開発&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自分にとっては課題がいっぱい見えたので、一つ一つクリアしていきたいです．&lt;/p&gt;
&lt;p&gt;その他にも、開発プロセスの自動化はいろんな会社さんの実例が聞けてよかったです。&lt;/p&gt;
&lt;p&gt;とっても進んでるとこもあるし、自分と似たような環境のとこもあるし、各社さまざまですね。&lt;/p&gt;
&lt;h5 id="作ったサービスの話"&gt;作ったサービスの話&lt;/h5&gt;
&lt;p&gt;まだまだ精度があれですが、こんなんつくりました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mei2waku.playispeace.com/"&gt;メイワク2ワクワク&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;迷惑メールを迷惑じゃないメールにしようってのが、根本です。&lt;/p&gt;
&lt;p&gt;実はまともにcakephp2系を初めて触るのも有って環境構築に苦戦しました。&lt;/p&gt;
&lt;p&gt;いつもはさくっとうごくmod_rewriteが全くゆうことを聞かなかったり。。。&lt;/p&gt;
&lt;p&gt;この辺も含めて、今後改築していく予定です。&lt;/p&gt;
&lt;p&gt;そして、これを発表したLTですが、&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji/phpmatsuri2012-lt"&gt;Phpmatsuri2012 lt&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji"&gt;Yokota Eiji&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;そもそも４分の発表なのに５分ペースでしゃべって途中できられるというまさかの去年の再現。&lt;/p&gt;
&lt;p&gt;無念。。。&lt;/p&gt;
&lt;p&gt;でもサービス作ったので、最低限の目標ははクリアしたのでよしとします！&lt;/p&gt;
&lt;p&gt;また、来年リベンジかなー&lt;/p&gt;</description></item><item><title>第4回関西PHP勉強会で発表してきた</title><link>https://blog.playispeace.com/832/phpkansai_vol4/</link><pubDate>Mon, 15 Oct 2012 09:01:50 +0000</pubDate><guid>https://blog.playispeace.com/832/phpkansai_vol4/</guid><description>&lt;p&gt;&lt;a href="http://atnd.org/events/32233"&gt;これ&lt;/a&gt;に参加しつつ、発表もしてきたので、そのまとめ&lt;/p&gt;
&lt;p&gt;参加賞にこんなかわいいペットボトルがもらえるなんて！&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2012/10/ameba_water.jpg" alt=""&gt;&lt;/p&gt;
&lt;h5 id="今時のcakephp-shin1x1さん"&gt;今時のCakePHP @shin1x1さん&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ビューブロック、継承：viewの共通部分&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;イベントシステム：コールバック&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;モデルバリデーション：モデルからバリデーション分離&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SetクラスがHashクラスへ：setはCakePHP3では廃止&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CakePHP3の特徴&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="cakephp13-から2xへの移行ガイド-slywalker-さん"&gt;CakePHP1.3 から2.xへの移行ガイド @slywalker さん&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Cookbookに移行ガイドに基本的に書いてる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;upgrade shell が用意されてる。cakephp2の本にも載ってる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;非推奨が出てくるタイミング：2.2.3 →２個目が、機能の追加改良、非推奨の追加、３つ目はバグフィックス、１つ目は、phpのバージョンサポートの変更&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cakeRequest超便利&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="cookbookのこと-okonomi-さん"&gt;CookBookのこと @okonomi さん&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;翻訳のpull request送りまくったら勝手にコアメンバーに加えられてた。すごいw&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cakephp本体と同じ流れで、 フォーク→修正→commit→pull request → merge　されたらサイト反映&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;翻訳に参加してほしい。参加方法 → pull request して！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="lt開始"&gt;LT開始！&lt;/h5&gt;
&lt;h6 id="javaな僕がfuelphpを使ってみて-yamamoto_manabuさん"&gt;Javaな僕がFuelPHPを使ってみて @yamamoto_manabuさん&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;印象：新しい、強い、早い&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;License、PHPUnit&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;規約より設定、をモットー。初めてのFWでも受け入れる。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="今時のyiiフレームワーク-tanakahisateru-さん"&gt;今時のYiiフレームワーク @tanakahisateru さん&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;実は人気のフレームワーク&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;・・・中国、ロシア、ウクライナで、人気？？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一応日本ユーザ会もあります！&lt;a href="http://yiijan.org/"&gt;yiijan.org/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="javaでphpをうごかすquercusを触ってみた-ku_suke-さん"&gt;JavaでPHPをうごかすQuercusを触ってみた。 @ku_suke さん&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Quercus = php on AppEngine&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WordPressが動く（要Mysql）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PHPをJavaに変換！精度がすごい。apcよりも数倍速いというデータも。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="cakephp-vs-fuelphp--omoonさん"&gt;CakePHP vs FuelPHP @omoonさん&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;イメージの話。画像のチョイスいいなーw&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;instagramen,やその派生版がある&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="cakephpコアメンバー-ichikaway-さん"&gt;CakePHPコアメンバー @ichikaway さん&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Larry. PM,CakeDC社長&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mark Story. Canada CakePHP リード開発者 Cake1.3から&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jose Lorenzo Rodriguez. Venezuela リード開発者&lt;/p&gt;</description></item><item><title>FuelPHP勉強会に行ってきた</title><link>https://blog.playispeace.com/820/learn_about_fuelphp/</link><pubDate>Thu, 11 Oct 2012 11:53:47 +0000</pubDate><guid>https://blog.playispeace.com/820/learn_about_fuelphp/</guid><description>&lt;p&gt;&lt;a href="http://atnd.org/events/32493"&gt;これ&lt;/a&gt;に参加してきましたので、そのメモがき。&lt;/p&gt;
&lt;h5 id="omoonさんの発表"&gt;@omoonさんの発表&lt;/h5&gt;
&lt;p&gt;東京のphp勉強会LTで発表した&lt;a href="http://instagramen.pagodabox.com/"&gt;instagramen&lt;/a&gt;(&lt;a href="https://github.com/omoon/instagramxx"&gt;github&lt;/a&gt;)というサービスを元に解説。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://docs.fuelphp.com/"&gt;http://docs.fuelphp.com/&lt;/a&gt; ここを元にインストール&lt;/p&gt;
&lt;p&gt;このサービスの派生版（例、instagram&lt;strong&gt;entaiko&lt;/strong&gt; , instagram&lt;strong&gt;ukimuki&lt;/strong&gt;）を作ろう、というのが今回の勉強会の大まかな流れでした。&lt;/p&gt;
&lt;p&gt;コマンドでもいいけど、zipをDLして解凍でもいけます。&lt;/p&gt;
&lt;p&gt;viewsのファイルが拡張子phpやけど、テンプレートも使える。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ディレクトリの構成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ルーティング&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この辺は、&lt;a href="http://docs.fuelphp.com/"&gt;ドキュメント&lt;/a&gt;にだいたい書いてるそうです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;コンフィグで結構何でもいじれて、phpの配列で書いてる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tasksディレクトリにコマンドを作れる。instagramenでの、毎０時にバッジ処理に使ってる。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;oil refine Insta:get ‘明太子’&lt;/p&gt;
&lt;p&gt;コマンド解説）tasksに作ったInstaクラスのgetメソッドに’明太子’引数を渡して実行&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;modelsディレクトリに作ったclassはオートロードされるので、書いたら使える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DBは、CoreのModel_Crudにfindやsaveがある&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="db作成デモ"&gt;DB作成デモ&lt;/h5&gt;
&lt;p&gt;Modelクラスに&lt;/p&gt;
&lt;p&gt;$_table_name,$primary_key,$_properties,$_created_at,$_updated_at,などを定義して、テーブル情報を設定する。&lt;/p&gt;
&lt;p&gt;チェーンメソッドになってる。&lt;/p&gt;
&lt;p&gt;例）Model-&amp;gt;forge()-&amp;gt;set($data)-&amp;gt;save();&lt;/p&gt;
&lt;p&gt;pre_find・・・find前に必ず呼ばれるメソッド。モデル内で定義&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;function pre_find(&amp;amp;$query){
}
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="pagodabox"&gt;pagodabox&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://pagodabox.com"&gt;pagodabox&lt;/a&gt;というPaaSがFuelPHPをサボートしていて相性がよい&lt;/p&gt;
&lt;h6 id="大まかな使い方"&gt;大まかな使い方&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;新規登録&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;new Appでアプリ追加&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Empty Repoで空リポジトリ追加&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;instagramxxをgit pushする →自動でデプロイされる！素敵！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="その他"&gt;その他&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;FuelPHPがデフォルトDevelopment環境なので気をつける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Environments Vars というメニューで、サーバ変数設定できる。つまり・・・$_SERVER[‘hogehoge’]が管理画面で設定可能！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://help.pagodabox.com/customer/portal/articles/175474"&gt;pagoda用ターミナルクライアント&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これで、tunnelしてローカルからpagodabox上のDBに接続するのですが、私は、以下のエラーが出てしまって断念&lt;/p&gt;
&lt;p&gt;% pagoda -a instagramichael tunnel bridgette&lt;/p&gt;
&lt;p&gt;** Error:&lt;/p&gt;
&lt;p&gt;** Input unrecoginized&lt;/p&gt;
&lt;p&gt;** try ‘pagoda -a tunnel ‘&lt;/p&gt;
&lt;p&gt;** ie. ‘pagoda -a app tunnel db1’&lt;/p&gt;
&lt;p&gt;“マイケル”画像があつまるサービスができるはずだったのに＞＜&lt;/p&gt;
&lt;p&gt;他の参加者でサービスできてる方もいました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://instagrameow.pagodabox.com/"&gt;instagrameow&lt;/a&gt;猫画像&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://instagramugenmoyashi.pagodabox.com/"&gt;instagramugenmoyashi&lt;/a&gt;無限もやし！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="まとめ"&gt;まとめ&lt;/h5&gt;
&lt;p&gt;ほんとに、まとまりなくメモっていきました。&lt;/p&gt;
&lt;p&gt;思ったのは、全部ファイルがphpってのが少し驚きました。テンプレートはもちろん、ログファイルもphpで吐かれてたような。。。&lt;/p&gt;
&lt;p&gt;で、私が慣れてない名前空間をフル活用してたり、色々と発見の多い勉強会でした。&lt;/p&gt;
&lt;p&gt;大村さんありがとう御座いました！&lt;/p&gt;</description></item><item><title>Titanium mobileで音再生</title><link>https://blog.playispeace.com/800/titanium_mobile_play_sound/</link><pubDate>Wed, 26 Sep 2012 16:30:36 +0000</pubDate><guid>https://blog.playispeace.com/800/titanium_mobile_play_sound/</guid><description>&lt;p&gt;ググって出てきた（&lt;a href="http://bowz.info/3760"&gt;http://bowz.info/3760&lt;/a&gt;）のをそのまま実行すればいいんですが、自分なりに補足&lt;/p&gt;
&lt;h5 id="環境"&gt;環境&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;SDK 1.8.2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS SDK 5.1&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="サンプルコード"&gt;サンプルコード&lt;/h5&gt;
&lt;p&gt;いたって簡単&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var sound = Titanium.Media.createSound({
 url: &amp;#39;./cricket.wav&amp;#39;
});

// 再生
sound.play();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;止めたいときは、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// 停止
sound.stop();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;単純に、音データを最後まで再生すると止まります。（自動でループとかはならない。loopingというプロパティがあるので、デフォルトfalseっぽいですね）&lt;/p&gt;
&lt;h5 id="音データ"&gt;音データ&lt;/h5&gt;
&lt;p&gt;参考URLには&lt;/p&gt;
&lt;p&gt;iPhone で使えるオーディオデータ形式は、aiff, wav, caf ファイルなんだそうな。&lt;/p&gt;
&lt;p&gt;と書いてましたが、mp3,m4aでも再生できたのを確認！&lt;/p&gt;</description></item><item><title>jqtransform.jsのonchangeの仕方、valueの変え方</title><link>https://blog.playispeace.com/790/how_to_onchange_and_change_value_on_jqtransform-js/</link><pubDate>Tue, 11 Sep 2012 19:43:33 +0000</pubDate><guid>https://blog.playispeace.com/790/how_to_onchange_and_change_value_on_jqtransform-js/</guid><description>&lt;p&gt;お仕事で、jqtransform.jsが使われてるselectタグと戯れた際のメモ&lt;/p&gt;
&lt;h5 id="jqtransformjsの概要"&gt;jqtransform.jsの概要&lt;/h5&gt;
&lt;p&gt;概要はこちらでご一読。&lt;a href="http://phpspot.org/blog/archives/2009/04/javascripthtmlj.html"&gt;JavaScriptでHTMLフォームの劇的ビフォアアフター「Jqtransform」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;既存のフォームをきれいなUIに変えるjqueryプラグインて感じですかね。&lt;/p&gt;
&lt;p&gt;大まかな動きとしては、既存フォームのhtmlを取り込んで、別htmlに書き出しているようです。&lt;/p&gt;
&lt;h5 id="プルダウンselectタグの仕組み"&gt;プルダウン(selectタグ)の仕組み&lt;/h5&gt;
&lt;p&gt;書き出されるhtmlを見て分かったのですが、既存のselectタグを隠して、ul,li,aタグに書き換えてました。&lt;/p&gt;
&lt;p&gt;なので、onchangeイベントが発火しません。selectタグではないので。&lt;/p&gt;
&lt;p&gt;プルダウンがこんな感じのhtmlに変わってます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
- [なし](#)

- [0g～10g](#)

- [11g～30g](#)

- [31g～35g](#)

- [36g～40g](#)

- [41g～50g](#)

・・・
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="onchangeイベントを取得する方法"&gt;onchangeイベントを取得する方法&lt;/h5&gt;
&lt;p&gt;検索して出る答えは&lt;a href="http://stackoverflow.com/questions/2772991/jqtransform-form-selector-onchange-problem"&gt;ここ&lt;/a&gt;。つまり、aタグまでアクセスして、clickイベントを拾ってしまおうというもの。&lt;/p&gt;
&lt;h6 id="導入してみた"&gt;導入してみた&lt;/h6&gt;
&lt;p&gt;実際導入してみたけど、、、、動かなーい。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$(&amp;#34;#selecttag div.jqTransformSelectWrapper ul li a&amp;#34;).click(function(){
 // やりたいことを素直に書く
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で、よくよく考えると、このhtmlはjqueryftransformに書き出されている訳だから、、、そうか、htmlロード時点では存在しないんだな、ということで、ロードされた後（正確にはjqueryftransformでhtml書き出された後）動作するように、ready()で囲んでみました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$(document).ready(function(){
 $(&amp;#34;#selecttag div.jqTransformSelectWrapper ul li a&amp;#34;).click(function(){
 // やりたいことを素直に信じて書く
 });
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで無事解決。&lt;/p&gt;
&lt;h5 id="あれvalueの変え方は"&gt;あれ、valueの変え方は？&lt;/h5&gt;
&lt;p&gt;で、valueの変え方ですが、選択された”見た目”の部分は、spanタグの中にあったので、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$(&amp;#34;#selecttag div.jqTransformSelectWrapper span&amp;#34;).text(&amp;#34;mitamevalue&amp;#34;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これでOK。で、実際に”送信される”valueはjqueryftransformによって隠されたselectタグにセットしてやれば解決&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$(&amp;#34;#selecttag select.jqTransformHidden&amp;#34;).val(&amp;#34;postvalue&amp;#34;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上！&lt;/p&gt;</description></item><item><title>Titaniumを新しいmac book air に環境移行したときに、iOSシミュレータが起動しない対策</title><link>https://blog.playispeace.com/767/error_occure_in_ios-sim_if_old_mobilesdk_used/</link><pubDate>Tue, 17 Jul 2012 08:58:51 +0000</pubDate><guid>https://blog.playispeace.com/767/error_occure_in_ios-sim_if_old_mobilesdk_used/</guid><description>&lt;p&gt;新しいmac book air  に、Titanium mobilesdk1.8.2環境を移行しようとしたのですが、ちょっとハマったのでメモ&lt;/p&gt;
&lt;h5 id="titanium-mobilesdkの過去version"&gt;Titanium mobilesdkの過去version&lt;/h5&gt;
&lt;p&gt;アプリを開発してて、現行のsdkのversionで開発を続けたい場合、&lt;/p&gt;
&lt;p&gt;Titanium Studio→メニューのHelp→Install Specific Titanium SDK…  →Install from Update Stream を選んでversionが書かれているところをクリック→release&lt;/p&gt;
&lt;p&gt;から特定のversionが落とせます。&lt;/p&gt;
&lt;p&gt;今一番古いので1.8.2のようですが、たまたま開発してたversionと同じだったので、これを利用して1.8.2環境を構築しました。&lt;/p&gt;
&lt;h5 id="iosシミュレータが起動せず"&gt;iOSシミュレータが起動せず&lt;/h5&gt;
&lt;p&gt;で、そのままビルドしてみると、iOSシミュレータが起動せずにこんなエラーがでました。&lt;/p&gt;
&lt;p&gt;dyld: Library not loaded: rpath/DevToolsFoundation.framework/Versions/A/DevToolsFoundation&lt;/p&gt;
&lt;p&gt;そのままググってたどり着いた答えが&lt;a href="https://github.com/pegli/ios-sim"&gt;こちら&lt;/a&gt;。pegliさんがパッチを当てたios-simを作ってくれているみたいです。感謝！&lt;/p&gt;
&lt;p&gt;なので、あとはローカルのios-simと入れ替えてあげるだけ。&lt;/p&gt;
&lt;h5 id="ios-simの入れ替え方法"&gt;ios-simの入れ替え方法&lt;/h5&gt;
&lt;p&gt;具体的には、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;git clone git://github.com/Fingertips/ios-sim.git&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;または、zipファイル落としてきて中にあるxcodeプロジェクトをビルド&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;するとios-simというアプリが手に入ります。これをビルド時に実行されるios-simと入れ替えてあげる。場所は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/Users/（your_name）/Library/Application Support/Titanium/mobilesdk/osx/1.8.2/iphone/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記に無ければおそらくこちら、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/Library/Application Support/Titanium/mobilesdk/osx/1.8.2/iphone/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これでiOSシミュレータが無事動作しました。&lt;/p&gt;</description></item><item><title>cakephp翻訳in福岡に行ってきた</title><link>https://blog.playispeace.com/746/cakephp_transelate_fukuoka/</link><pubDate>Tue, 10 Jul 2012 13:19:39 +0000</pubDate><guid>https://blog.playispeace.com/746/cakephp_transelate_fukuoka/</guid><description>&lt;p&gt;金曜土曜（7/6,7）と福岡にてcakephp翻訳に行ってきました。atndは&lt;a href="http://atnd.org/events/30141"&gt;こちら&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;cakephp2.0の&lt;a href="http://book.cakephp.org/2.0/ja/index.html"&gt;ドキュメント&lt;/a&gt;はまだまだ日本語化が進んでいなかったので、それをみんなで進めようという&lt;a href="http://twitter.com/cakephper"&gt;@cakephper&lt;/a&gt;さん主催のイベントです。福岡会場と、東京サテライト会場という形式で行われました。２日間にわたって行われました。&lt;/p&gt;
&lt;h5 id="参加目的"&gt;参加目的&lt;/h5&gt;
&lt;p&gt;わざわざ翻訳しに福岡まで、とも思ったのですが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;英語を読むということへの抵抗を少しでも無くしたい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;こんな機会を利用しないと翻訳なんて、自分でやろうとしない&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そう思って、思い切って参加してきました。&lt;/p&gt;
&lt;p&gt;で、実際参加してみて、想像以上に収穫の多いイベントになりました。&lt;/p&gt;
&lt;h6 id="環境構築"&gt;環境構築&lt;/h6&gt;
&lt;p&gt;最初は翻訳に環境構築？とも思ったのですが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;cakephpのドキュメントが&lt;a href="http://sphinx.pocoo.org/"&gt;sphinx&lt;/a&gt;というツールを使っている&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cakephpが&lt;a href="https://github.com/cakephp"&gt;githubで管理&lt;/a&gt;されている&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということで、sphinxが動く環境とpull request できる環境が必要になります。いきなりこの準備でテンパリましたw&lt;/p&gt;
&lt;p&gt;やばい、付いていくのに必死なのでめも。sphinx入れて&lt;a href="http://t.co/WHIKiq0Y"&gt;https://github.com/cakephp/docs&lt;/a&gt; sphinx-quickstart　叩く。先のrepをフォークして git clone &lt;a href="h//t.co/X4ZJ86iU"&gt;https://github.com/cakephp/docs&lt;/a&gt; それをjaディレクトリでmake html&lt;/p&gt;
&lt;p&gt;— パペットTV (@papettoTV) &lt;a href="https://twitter.com/papettoTV/status/221059137746911233"&gt;July 6, 2012&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;まとめておくと、sphinxの入れ方は、&lt;a href="https://github.com/cakephp/docs"&gt;ここ&lt;/a&gt;に書いてる通り、&lt;/p&gt;
&lt;p&gt;easy_install sphinx&lt;/p&gt;
&lt;p&gt;easy_install sphinxcontrib-phpdomain&lt;/p&gt;
&lt;p&gt;sphinx-quickstart&lt;/p&gt;
&lt;p&gt;で、インストールできました。sphinxコマンドが利用できるようになるので、最初にセットアップを済ませます。&lt;/p&gt;
&lt;p&gt;sphinx-quickstart&lt;/p&gt;
&lt;p&gt;色々聞かれますが、割とここはデフォルトのまま進みました。&lt;/p&gt;
&lt;p&gt;sphinxというのは簡単言うと.rstというファイルを作っておくと、そこからコマンドでhtmlやpdfを生成できるツールです。なので、git cloneで持ってきたdocsファイル群にたいして、まず最初にhtmlを生成しておきます。&lt;/p&gt;
&lt;p&gt;make html&lt;/p&gt;
&lt;p&gt;これでローカルにcakephpドキュメントが見れる状態になったと思います。&lt;/p&gt;
&lt;h6 id="翻訳作業"&gt;翻訳作業&lt;/h6&gt;
&lt;p&gt;初日は、&lt;a href="http://frac.jp/meeting/"&gt;福岡rubyセンター&lt;/a&gt;を、２日目は&lt;a href="http://fusic.co.jp/"&gt;Fusic株式会社さん&lt;/a&gt;の会議室をお借りして翻訳作業です。&lt;/p&gt;
&lt;h6 id="準備"&gt;準備&lt;/h6&gt;
&lt;p&gt;で、ここがもっとも個人的にはタメになったのですが、翻訳作業の準備は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/cakephp/docs"&gt;https://github.com/cakephp/docs&lt;/a&gt;　をフォーク&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;フォーク先をgit cloneしてローカルにコピー&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作業用のbranch切って、git checkoutで作業用ブランチに移動&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここまでが最初のステップです。正直、まだgithubを使いこなしていない自分に取ってはここまでの一連の流れが非常に新鮮でした。&lt;/p&gt;
&lt;h6 id="翻訳開始"&gt;翻訳開始&lt;/h6&gt;
&lt;p&gt;翻訳が始まってからの簡単な流れは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;英語の文を日本語に修正&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;make html (sphinxの機能)して生成されたhtmlを確認&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上記１、２を繰り返して１ファイル翻訳しきったらcommit&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;git push してフォーク先に反映&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;githubにて、pull requestして、後は反映されるのを待つのみ！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちなみにはぢめてのpull requestが&lt;a href="https://github.com/cakephp/docs/pull/302"&gt;こちら&lt;/a&gt;。今のとこまだ未反映です。（ドキドキ&lt;/p&gt;
&lt;p&gt;問題なければ取り込んでもらってcakephp/ja に反映されるのですが、何か問題あれば、その理由ともに返事がくるので、またそれを対応して再度pull request する、というフローになります。&lt;/p&gt;
&lt;p&gt;※追記、結局うまく取り込めなかったようで、試行錯誤した結果、フォークするところからやり直しました。。。それが&lt;a href="https://github.com/cakephp/docs/pull/316"&gt;こちら&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="翻訳に際して心がけ"&gt;翻訳に際して心がけ&lt;/h5&gt;
&lt;p&gt;自分は英語得意じゃないし、こんなことできない。。。と思っているあなた！大丈夫です。なんとかなります。なぜなら&lt;/p&gt;
&lt;h6 id="原文が英語で書いててもnativeな人が書いてるとは限らない"&gt;原文が英語で書いててもnativeな人が書いてるとは限らない&lt;/h6&gt;
&lt;p&gt;つまり、英語で書かれてるけど、英語得意でもない人が書いてたりするので、意外といいかげんだったりする。そんな英文を日本語に訳してるんだから、変でもしょうがない、と考えれば思い切ってできる！&lt;/p&gt;
&lt;h6 id="日本語無いよりはあるほうが絶対マシという気持ち"&gt;日本語無いよりはあるほうが絶対マシ（という気持ち）&lt;/h6&gt;
&lt;p&gt;英文だけの状態より、無いよりは絶対多くの日本人にとっては読めるわけだから、日本語が多少おかしくても、大きな貢献になるのは間違いない！&lt;/p&gt;
&lt;h6 id="つまり"&gt;つまり&lt;/h6&gt;
&lt;p&gt;自信を持って、訳して、いいんです。むむっ。&lt;/p&gt;
&lt;h5 id="最後に"&gt;最後に&lt;/h5&gt;
&lt;p&gt;あとは、翻訳以外でも色々楽しめたのですが、とりあえず一言、福岡いいねっ！ということで締めます。次は11月のphp祭りかな？&lt;/p&gt;</description></item><item><title>liveDJsという音楽ライブ配信アプリ作りました</title><link>https://blog.playispeace.com/705/about_livedjs/</link><pubDate>Mon, 18 Jun 2012 22:42:02 +0000</pubDate><guid>https://blog.playispeace.com/705/about_livedjs/</guid><description>&lt;p&gt;この金土日(6/15〜17)に開発合宿に行ってきたのですが、その成果として、以前から構想していた「liveDJs」というandroidアプリ(Titanium製)を作りました。&lt;/p&gt;
&lt;h5 id="それなに"&gt;それなに？&lt;/h5&gt;
&lt;p&gt;ライブ配信されるクラブ系ミュージックの放送開始を通知、また再生できるandroid用アプリです&lt;/p&gt;
&lt;h5 id="アプリの画面イメージ"&gt;アプリの画面イメージ&lt;/h5&gt;
&lt;p&gt;最初の画面、番組一覧です。on air がライブ配信中の番組になります。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2012/06/liveDJs_list.png"&gt;画像未復旧: liveDJs_list&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再生画面その１。block.fmという番組の再生画面です。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2012/06/liveDJs_play.png"&gt;画像未復旧: liveDJs_play&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通知画面。配信が始まると通知されます。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2012/06/liveDJs_service.png"&gt;画像未復旧: liveDJs_service.png&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="どうして作ったの"&gt;どうして作ったの？&lt;/h5&gt;
&lt;p&gt;みなさん、お仕事される際に音楽聞きながらという方も多いかと思うのですが、私もその一人です。特に最近聞いてるのが、クラブ系ミュージックのライブ配信です。&lt;/p&gt;
&lt;p&gt;アゲアゲな音楽が多く、テンションもあがってノリノリで仕事できます！&lt;/p&gt;
&lt;p&gt;で、こういう音楽配信サービスを仕事用PCで聞く場合、少々問題がありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;いつ配信スタートするかいつも把握しているわけでないので聞き逃すことがある&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配信番組サービスが複数サイトあるので、余計に把握しきれない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ライブ配信サービスを使っていると、結構PCのリソースを食う&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの問題を解決すべく作ったのがliveDJsです。&lt;/p&gt;
&lt;h5 id="livedjsの特徴"&gt;liveDJsの特徴&lt;/h5&gt;
&lt;h6 id="androidアプリ"&gt;androidアプリ&lt;/h6&gt;
&lt;p&gt;アプリにしたことで、作業pcのリソース食いません！&lt;/p&gt;
&lt;p&gt;これで、PCはサクサク〜なままノリノリ〜で作業できます。&lt;/p&gt;
&lt;h6 id="各番組のライブ配信チェック通知"&gt;各番組のライブ配信チェック＆通知&lt;/h6&gt;
&lt;p&gt;配信チェックを定期的にする(アプリを閉じてもバックグラウンドでチェックする)ので、配信スケジュールなんてチェックしなくてもいいんです！見逃せない配信が、そこにある！むむっ！&lt;/p&gt;
&lt;h6 id="ライブ配信"&gt;ライブ配信&lt;/h6&gt;
&lt;p&gt;配信通知を受けたら、アプリ起動でそのまま配信が聞けちゃいます！！便利！！！&lt;/p&gt;
&lt;h5 id="サービス全体像"&gt;サービス全体像&lt;/h5&gt;
&lt;p&gt;現在用意している番組は、今のところ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://block.fm/"&gt;block.fm&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.dommune.com/"&gt;DOMMUNE&lt;/a&gt;（&lt;a href="http://www.ustream.tv/channel/dommune"&gt;ustream&lt;/a&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://club-mogra.jp/"&gt;mogra&lt;/a&gt;（&lt;a href="http://www.ustream.tv/channel/mogra1"&gt;ustream&lt;/a&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;の３番組で、これらの配信チェックを行っております。で、以下のような構成で動いています。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2012/06/liveDjs_flow.png"&gt;画像未復旧: liveDjs_flow&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;配信チェックサーバが各番組の配信チェックを定期的に行う&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配信チェックサーバに対して、アプリから配信ステータスを定期的に取得&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配信ステータスが配信中の場合、アプリから各サービスのライブ配信を取得&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="配信チェックサーバっているの"&gt;配信チェックサーバっているの？&lt;/h6&gt;
&lt;p&gt;配信チェックサーバが無くても、ライブ配信は受信できました。&lt;/p&gt;
&lt;p&gt;しかし、それだと、端末台数分だけ配信チェックリクエストが増えてしまうことで、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;単純に各サービス配信サーバへの負荷をかけてしまう&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ustream APIのリクエスト上限（１日5000リクエスト）を簡単に超えてしまう&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という問題がありました。&lt;/p&gt;
&lt;p&gt;そこで、間にサーバを立てて、apiを使った処理はサーバに任せて、端末は配信取得のみ処理させました。&lt;/p&gt;
&lt;p&gt;（block.fmに関してはapiはなかったのですが、&lt;a href="http://block.fm/play/"&gt;player&lt;/a&gt;のリクエストを覗いてapi的に利用させてもらってます）&lt;/p&gt;
&lt;h6 id="ustream-api"&gt;ustream api&lt;/h6&gt;
&lt;p&gt;詳細は&lt;a href="http://developer.ustream.tv/data_api/docs"&gt;document&lt;/a&gt;に委ねますが、今回使ったのはたったの２つ。Channel Commandsの&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;getInfo:このレスポンスのstatusパラメータで配信中か否か判定します&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CustomEmbedTag:これが配信プレイヤーのhtmlを返します&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;getInfoで配信中と判定すれば、CustomEmbedTagで取得したhtmlを配信チェックサーバに保存しています。&lt;/p&gt;
&lt;p&gt;で、そのhtmlを受信した端末が、各配信サービスにflash経由で配信してもらうという流れです。&lt;/p&gt;
&lt;h5 id="課題とか今後の展開"&gt;課題とか今後の展開&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;アイコンをなんとかせねば！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;バックグラウンドでライブ配信をチェックしているservice機能は動いているのですが、そこから直接アプリを呼び出せるようにする&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;番組をユーザから募集して、増やしていきたい。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;これで得た技術で、もっと対象ユーザの広い別のアプリ作れるなー、と妄想中&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="おまけ"&gt;おまけ&lt;/h5&gt;
&lt;p&gt;最後まで読んでくれた方にプレゼント。開発中の野良アプリですが&lt;a href="http://playispeace.com/livedjs/app120618.apk"&gt;liveDJs&lt;/a&gt;を興味ある方はDLしてインストールしてみてください。ご意見やフィードバッグは&lt;a href="http://twitter.com/papettoTV"&gt;@papettoTV&lt;/a&gt;までお願いします。&lt;/p&gt;</description></item><item><title>三村bot久々の修正</title><link>https://blog.playispeace.com/700/modified_get_followers_by_mimurabo/</link><pubDate>Sun, 17 Jun 2012 15:58:24 +0000</pubDate><guid>https://blog.playispeace.com/700/modified_get_followers_by_mimurabo/</guid><description>&lt;p&gt;この金土日と滋賀に開発合宿に行ってました。その成果その２です。その１は&lt;a href="https://blog.playispeace.com/705/about_livedjs/"&gt;こちら&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="三村bottukkomimuraを久々に修正"&gt;三村bot(@tukkomimura)を久々に修正。&lt;/h5&gt;
&lt;p&gt;成果その２は三村bot。やりたかったアプリ開発に行き詰まったので、気分転換に修正してみました。&lt;/p&gt;
&lt;p&gt;三村botは、フォロワ全員につっこむようにしているのですが、気がつくとフォロワーが5000しか取得できていませんでした。5000以上取得するにはcursor_idを使った処理で、次々取得しないとですね。&lt;/p&gt;
&lt;p&gt;その部分のコードはこちら&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$cursor = -1;

libxml_use_internal_errors(true);

while($cursor != 0){
	// フォロワー一覧取得
	$req = $this-&amp;gt;to-&amp;gt;OAuthRequest(&amp;#34;http://api.twitter.com/1/followers/ids.xml&amp;#34;,&amp;#34;GET&amp;#34;,array(&amp;#34;cursor&amp;#34;=&amp;gt;$cursor));

	// XML文字列をオブジェクトに代入する
	$followers = simplexml_load_string($req);
	if($followers){
		if(isset($followers-&amp;gt;error) &amp;amp;&amp;amp; $followers-&amp;gt;error != &amp;#34;&amp;#34;){
			print &amp;#34;##API ERRRO## &amp;#34;.$followers-&amp;gt;error.&amp;#34;\n&amp;#34;;
		}else{
			$i = 0;
			foreach($followers-&amp;gt;ids-&amp;gt;id as $follower_id){
				$follower_id = (int)(string)$follower_id;
				if(!is_numeric($follower_id)){
					continue;
				}
				// DB登録処理
				// （省略）
			}
			$cursor = (string)$followers-&amp;gt;next_cursor;
		}
	}else{
		echo &amp;#34;Failed loading XML\n&amp;#34;;
		foreach(libxml_get_errors() as $error) {
			echo &amp;#34;\t&amp;#34;, $error-&amp;gt;message;
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで14000を超えるフォロワー全員が対象になったはず！&lt;/p&gt;</description></item><item><title>Titanium mobile androidのwebviewで Flashコンテンツを表示する方法</title><link>https://blog.playispeace.com/692/titanium_mobile_android_diplay_flash_on_webview/</link><pubDate>Sat, 16 Jun 2012 09:22:04 +0000</pubDate><guid>https://blog.playispeace.com/692/titanium_mobile_android_diplay_flash_on_webview/</guid><description>&lt;p&gt;Tipsです。&lt;/p&gt;
&lt;p&gt;ググっても以外とすんなり答えられなかったので、エントリーにしてメモおきます。&lt;/p&gt;
&lt;h5 id="環境"&gt;環境&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;MaxOS10.6&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Titanium Studio2.0.2&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="コード"&gt;コード&lt;/h5&gt;
&lt;p&gt;Tiapp.xmlにも追記して〜といった記述がありましたが、コードだけで動作しました。(検証実機：GallaxyS2 android2.3.3)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var webview = Ti.UI.createWebView();
	webview.setPluginState(Titanium.UI.Android.WEBVIEW_PLUGINS_ON);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これだけ、webviewにたった１行setPluginStateなるもので設定を追加してあげればOK&lt;/p&gt;
&lt;p&gt;デフォルトはTitanium.UI.Android.WEBVIEW_PLUGINS_OFFになっているようです。&lt;/p&gt;
&lt;h5 id="補足"&gt;補足&lt;/h5&gt;
&lt;p&gt;最初にググった時は、答えのでてない&lt;a href="http://ti.masuidrive.jp/topic.php?id=421"&gt;掲示板&lt;/a&gt;や、javaのコードしか見つからなかったのですが、javaのコードでwebviewにsetPluginsEnableといったメソッドを見つけたので、それで探してみたらTitaniumにもありました。大元のコードも参考にしてみるものですね。&lt;/p&gt;
&lt;p&gt;一応、公式にはTiapp.xmlにこれを追記、と&lt;a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/api/Titanium.UI.WebView-property-pluginState"&gt;書いてある&lt;/a&gt;のですが、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
 11
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;追加したらビルドでエラー・・・で、コードの方だけ試したら動きました。無くてもいいのかな？&lt;/p&gt;</description></item><item><title>TitaniumStudioがFailed to Create the Java Virtual Machine と表示され起動しなくなった時の解決方法</title><link>https://blog.playispeace.com/686/titaniumstudio_alert_failed-to-create-the-java-virtual-machine/</link><pubDate>Fri, 15 Jun 2012 18:51:43 +0000</pubDate><guid>https://blog.playispeace.com/686/titaniumstudio_alert_failed-to-create-the-java-virtual-machine/</guid><description>&lt;p&gt;今日から開発合宿でアプリ作るぞー、て意気込んでTiStudioを起動しようとしたら&lt;/p&gt;
&lt;p&gt;「Failed to Create the Java Virtual Machine」と出て起動しない。&lt;/p&gt;
&lt;p&gt;なんだこれー、昨日まで動いてたのに。。。&lt;/p&gt;
&lt;p&gt;ということで調べて起動するようになるまでの履歴&lt;/p&gt;
&lt;h5 id="環境"&gt;環境&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mac OS10.6&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Titanium Studio, build: 2.0.2.201205311912&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="まずは"&gt;まずは&lt;/h5&gt;
&lt;p&gt;ググるよね、&lt;a href="https://www.google.co.jp/search?hl=ja&amp;amp;q=failed+to+create+the+java+virtual+machine+titanium+studio&amp;amp;oq=Failed+to+Create+the+Java+Virtual+Machine+ti&amp;amp;aq=0L&amp;amp;aqi=g-L1&amp;amp;aql=&amp;amp;gs_l=serp.3.0.0i19.3213.3981.0.7850.3.2.0.1.1.0.321.622.3-2.2.0...0.0.FX4g_NFpd8U"&gt;ググり&lt;/a&gt;ます。で割と共通するのが、TitaniumStudio.iniを修正する、というもの。&lt;/p&gt;
&lt;h6 id="titaniumstudioini"&gt;TitaniumStudio.ini&lt;/h6&gt;
&lt;p&gt;TitaniumStudio.iniの場所はここ→/Applications/Titanium Studio/TitaniumStudio.app/Contents/MacOS&lt;/p&gt;
&lt;p&gt;修正内容は、&lt;/p&gt;
&lt;p&gt;-Xmx1024m&lt;/p&gt;
&lt;p&gt;を&lt;/p&gt;
&lt;p&gt;-Xmx256m&lt;/p&gt;
&lt;p&gt; に変えるやら&lt;/p&gt;
&lt;p&gt;–launcher.XXMaxPermSize&lt;/p&gt;
&lt;p&gt;256m&lt;/p&gt;
&lt;p&gt;を消すやら。&lt;/p&gt;
&lt;p&gt;で、どっちも試してもダメだったので一旦途方に暮れます。で、いろいろいじったりググったりして怪しいところを発見。やっぱりjavaって書いてるしjavaかなー、と思い叩いてみる。&lt;/p&gt;
&lt;p&gt;$ java&lt;/p&gt;
&lt;p&gt;Unable to locate a Java Runtime to invoke.&lt;/p&gt;
&lt;p&gt;むむ？動いてない？このメッセージで&lt;a href="https://www.google.co.jp/search?sugexp=chrome,mod=0&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=Unable+to+locate+a+Java+Runtime+to+invoke+mac+"&gt;ググる&lt;/a&gt;とやっぱり動いてないっぽい&lt;/p&gt;
&lt;h6 id="java-をインストール"&gt;java をインストール&lt;/h6&gt;
&lt;p&gt;javaを&lt;a href="http://support.apple.com/kb/DL1360?viewlocale=ja_JP"&gt;ここ&lt;/a&gt;からDLしてインストール。&lt;/p&gt;
&lt;h5 id="結果"&gt;結果&lt;/h5&gt;
&lt;p&gt;はい、解決しました。&lt;/p&gt;
&lt;p&gt;めでたしめでたし&lt;/p&gt;</description></item><item><title>Japan AWS User Group (JAWS-UG) – 神戸(Kobe)勉強会第0回に行ってきた</title><link>https://blog.playispeace.com/673/japan-aws-user-group-jaws-ug-in_kobe_no0/</link><pubDate>Wed, 06 Jun 2012 21:05:32 +0000</pubDate><guid>https://blog.playispeace.com/673/japan-aws-user-group-jaws-ug-in_kobe_no0/</guid><description>&lt;p&gt;今日はこれ（&lt;a href="http://atnd.org/events/29116"&gt;AWS勉強会＠神戸&lt;/a&gt;）がありました。&lt;/p&gt;
&lt;p&gt;ということで参加メモ&lt;/p&gt;
&lt;h5 id="はじめてのamazon-web-services-aws堀内さん"&gt;はじめてのAmazon Web Services AWS堀内さん&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;テクニカルエバンジェリスト堀内(&lt;a href="http://twitter.com/horiuchi"&gt;@horiuchi&lt;/a&gt;)さん&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;jawsugの支所が、現在神戸で19カ所目！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;amazon何やってるか、クラウドとは、aws事例等の話し。いつもの内容なので割愛&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;オンデマンドインスタンス、&lt;a href="http://aws.amazon.com/jp/ec2/reserved-instances/"&gt;リザーブド（初期費用払う）インスタンス&lt;/a&gt;、&lt;a href="http://aws.amazon.com/jp/ec2/spot-instances/"&gt;スポット（競売？）インスタンス&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;s3はアクセスに応じて自動でスケール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VPN経由でプライベートクラウド構築も構築可能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;設計指針のようなものを用意 &lt;a href="http://aws.clouddesignpattern.org/index.php/%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:CDP:%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3"&gt;CDP:cloud design pattern&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="wordpressの常識を覆す"&gt;WordPressの常識を覆す&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.digitalcube.jp/"&gt;デジタルキューブ&lt;/a&gt;古賀さん(&lt;a href="https://twitter.com/#!/digitalcube"&gt;@digitalcube&lt;/a&gt;)。Wordpressを得意らしく、最近はnginxに力を入れているそうです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.men-joy.jp/"&gt;Menjoy&lt;/a&gt;、クライアント：小学館。アクセスがスレッドに寄って不安定。月間1500万PV&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SII Partners (B2Bサイト) 多言語化。ファイルホスト。セキュリティ。を考えAWSに&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サーバ立ち上げデモ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AWSのメリット、問い合わせも日本語！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="miningbrownie-マイニングブラウニー"&gt;MiningBrownie マイニングブラウニー&lt;/h5&gt;
&lt;p&gt;益子さん(&lt;a href="https://twitter.com/mashy117"&gt;@mashy117&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;webクローラー、テキストマイニングなどが業務&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大阪支所が6/18にできるそうです&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;局所的なクローラ、webキャプチャ、データマイニング、www.mushikago.org&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;APIサーバ：ELB下にEC2→SQS→EC2→s3及びsimpleDB(すべて、t1.micro)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;課金管理：per req,per storage、DynamoDBに一時的にロギングしてper 1h でRDSに流す&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;１３のawsサービス、EC2にするより他のサービスを使う事でコストを抑えれてる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="アイレット-後藤様"&gt;アイレット 後藤様&lt;/h5&gt;
&lt;p&gt;cloudpack エバンジェリスト&lt;/p&gt;
&lt;p&gt;従量課金で見えにくい値段を、ミドルウェアセットアップや監視を含めて、定額（５万/月）で提供&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特定日だけアクセスが増える、キャンペーン時に絶対落とさない、等を対応してきた&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="awsを使ってよかったこと-有本さん"&gt;「AWSを使ってよかったこと」 有本さん&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.ocnk.net/"&gt;おちゃのこネット株式会社&lt;/a&gt;CTO&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;電子書籍のコンテンツをawsで配信&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;構成EC2(small instance) route53のみ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tokyoリージョンで、アプリ不承認。アメリカ（US west？）に移動で解決&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="その他"&gt;その他&lt;/h5&gt;
&lt;p&gt;amazonの営業さんから、西日本、パートナー様拡大中！ということらしいです。&lt;/p&gt;
&lt;h5 id="懇親会"&gt;懇親会&lt;/h5&gt;
&lt;p&gt;なんだかお酒の席でしか聞けないような話しがあってよかったです。&lt;/p&gt;
&lt;p&gt;あと、とにかくaws万歳！な内容でしたが、本当にダメなところが見当たらないぐらい、すばらしいサービスである事を認識した夜でした。。。&lt;/p&gt;</description></item><item><title>大阪node学園三時限目に参加してきた</title><link>https://blog.playispeace.com/634/node_gakuen_3genme/</link><pubDate>Sun, 29 Apr 2012 01:06:40 +0000</pubDate><guid>https://blog.playispeace.com/634/node_gakuen_3genme/</guid><description>&lt;p&gt;こちらのイベントに参加してきました。&lt;a href="http://atnd.org/events/27719"&gt;大阪node学園三時限目&lt;/a&gt;。(ハッシュタグ &lt;a href="https://twitter.com/search?q=%23ong3"&gt;#ong3&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;今回のテーマは&lt;a href="http://socket.io/"&gt;Socket.IO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ハンズオン形式のイベントで、実際に手を動かしながらものを作っていく形です。時系列でつらつら作業ログを残していきます。&lt;/p&gt;
&lt;h5 id="socketio-を使ってみるハンズオン"&gt;Socket.IO を使ってみるハンズオン&lt;/h5&gt;
&lt;h6 id="事前準備"&gt;事前準備&lt;/h6&gt;
&lt;p&gt;atndに書かれている状態まで準備していきました。&lt;/p&gt;
&lt;p&gt;いろいろとインストール方法はあるようですが、私は、&lt;a href="http://nodejs.org/#download"&gt;ここ&lt;/a&gt;からpkgファイルをDLしてインストールしました。&lt;/p&gt;
&lt;p&gt;あと、nodebrewというのも入れておきました。&lt;/p&gt;
&lt;p&gt;curl &lt;a href="https://raw.github.com/hokaccha/nodebrew/master/nodebrew"&gt;https://raw.github.com/hokaccha/nodebrew/master/nodebrew&lt;/a&gt; | perl – setup&lt;/p&gt;
&lt;h6 id="まずは"&gt;まずは&lt;/h6&gt;
&lt;p&gt;今回チャットアプリを作るので、その作業用のディレクトリを作成して、そこから&lt;/p&gt;
&lt;p&gt;mkdir chat&lt;/p&gt;
&lt;p&gt;cd chat&lt;/p&gt;
&lt;p&gt;npm install socket.io&lt;/p&gt;
&lt;p&gt;supervisorというものをインストール。環境によってはsudoで実行する必要があるようです。&lt;/p&gt;
&lt;p&gt;npm install -g supervisor&lt;/p&gt;
&lt;p&gt;で、ここを参考に&lt;a href="http://socket.io/#how-to-use"&gt;http://socket.io/#how-to-use&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;app.jsとindex.html　を作成&lt;/p&gt;
&lt;p&gt;supervisor app.js&lt;/p&gt;
&lt;p&gt;を叩きます。で、画面の出力が止まればいいのですが、&lt;/p&gt;
&lt;p&gt;DEBUG: Starting child process with ‘node app.js’&lt;/p&gt;
&lt;p&gt;info: socket.io started&lt;/p&gt;
&lt;p&gt;warn: error raised: Error: listen EACCES&lt;/p&gt;
&lt;p&gt;DEBUG: Program app.js exited with code 0&lt;/p&gt;
&lt;p&gt;これが出続ける場合、80番portへのアクセス権限がないとうことらしいので、ポート番号を変えてあげる。&lt;/p&gt;
&lt;p&gt;app.jsの&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;//app.listen(80);
 app.listen(8080);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;index.htmlの&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;//var socket = io.connect(&amp;#39;http://localhost&amp;#39;);
 var socket = io.connect(&amp;#39;http://localhost:8080&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ブラウザをリロードすると、consoleでこれが表示されます。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/wp-content/uploads/2012/04/node_console.png"&gt;画像未復旧: node_console.png&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;サーバのsupervisorで、&lt;/p&gt;
&lt;p&gt;debug: websocket writing 5:::{“name”:”news”,”args”:[{“hello”:”world”}]}&lt;/p&gt;
&lt;p&gt;{ my: ‘data’ }&lt;/p&gt;
&lt;p&gt;が表示されました。これでサンプル動作完了&lt;/p&gt;
&lt;h6 id="jqueryを利用"&gt;jqueryを利用&lt;/h6&gt;
&lt;p&gt;jqueryのサイト行って、CDNのjqueryを利用します。&lt;/p&gt;</description></item><item><title>サーバのリプレースが上手くいくおまじない</title><link>https://blog.playispeace.com/586/incantation_of_server_replac/</link><pubDate>Mon, 16 Jan 2012 18:31:49 +0000</pubDate><guid>https://blog.playispeace.com/586/incantation_of_server_replac/</guid><description>&lt;p&gt;昨日の深夜のサーバリプレースを一人でやりきったpapettoTVです。こんにちわ。&lt;/p&gt;
&lt;p&gt;結局、昼過ぎまで落ち着かず、リプレースには魔物が棲んでたということで、もう魔物に襲われないようおまじないを唱えておきます。&lt;/p&gt;
&lt;h5 id="リプレースって"&gt;リプレースって？&lt;/h5&gt;
&lt;p&gt;サーバAで動いてたwebサービスをサーバBに移すこと。新規でサービスを公開するのとは違って、既にユーザもいるしコンテンツも貯まった状態でのサーバの切り替えなので、いかにユーザに迷惑をかけずに（＝止める時間を短くするか）が勝負です。&lt;/p&gt;
&lt;p&gt;止めずに出来るのがもちろん理想ですが、なかなか難しいところ。&lt;/p&gt;
&lt;h5 id="リプレース作業"&gt;リプレース作業&lt;/h5&gt;
&lt;p&gt;まずリプレースでやることを大まかに&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;リプレースによるサービス一時停止の告知&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;リプレース先のサーバ環境構築&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;メンテナンス画面作成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ソースの移行（プログラム、htmlやcss等のコンテンツ、生成されたデータを含む）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DBサーバの移行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;動作検証&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS切り替え（新サーバで公開）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="リプレースによるサービス一時停止の告知"&gt;リプレースによるサービス一時停止の告知&lt;/h5&gt;
&lt;p&gt;ついついリプレース作業そのもののに集中しがちですが、こちらも大事。&lt;/p&gt;
&lt;p&gt;慌てて思い出してバタバタしないように、リプレースの話があがったらまず意識する。&lt;/p&gt;
&lt;h5 id="リプレース先のサーバ環境構築"&gt;リプレース先のサーバ環境構築&lt;/h5&gt;
&lt;p&gt;新しいサーバBは何のアクセスも無いので、事前に準備する&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;可能な限り&lt;/strong&gt;サーバAと同じ環境（特にソフトウェアのversion）にする&lt;/p&gt;
&lt;p&gt;バージョンアップさせたい気持ちは、、、分かる、、、分かるけど、、、ぐっ！！とこらえる。軽い気持ちでversionあげたら、はい、それでメンテ時間延びたー&lt;/p&gt;
&lt;p&gt;リプレースの要件等でどうしてもバージョン違いをインストールする場合は、事前に同じ動作できるか&lt;strong&gt;要検証&lt;/strong&gt;サイト全体を見直すつもりで&lt;strong&gt;要検証&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;httpd.confは同じにした？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GDは入ってる？jpegだけ抜けてない？実はImageMagic入ってた・・・とか無い？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;APCは？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DBの文字コード、エンジンは同じにした？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;メールサーバの設定はOK？プログラムとの連携とれてる？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="メンテナンス画面作成"&gt;メンテナンス画面作成&lt;/h5&gt;
&lt;p&gt;サーバBにコンテンツを移して動作検証するまで、コンテンツの更新を止めないとデータの移行が出来ません。その間ユーザはサーバAのメンテナンス画面で耐えてもらいます。&lt;/p&gt;
&lt;p&gt;メンテナンス終了時刻も書いておきましょう。安心してまた来てもらうために。（作業側としてはプレッシャーですけどね！&lt;/p&gt;
&lt;h5 id="ソースの移行を済ませる"&gt;ソースの移行を済ませる&lt;/h5&gt;
&lt;p&gt;rsync が使えるとパーミションもそのままでコマンド一発で移行完了するので非常に楽。&lt;/p&gt;
&lt;p&gt;rsync -avz -e ssh remote_user@remote_host:/path/to/dir_or_file/ /path/to/host_dir_or_file/&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;remote側の指定が「/」無しで終わってるとそのディレクトリ毎同期する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;sshでremoteサーバに接続するので、事前に鍵認証しておくと、パスワード聞かれないので楽&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ユーザは、元サーバと同じIDになるだけなので、同じ（名前の）ユーザになるとは限らないので注意&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;予め環境構築時にこの辺を意識しておくと吉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当然移行後はあらたなソースの更新は、リプレースが終わるまでしない。しないようスケジュールしておく。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さ、ここまではメンテナンス入る前に準備できるので、きっちり確実にすること。&lt;/p&gt;
&lt;p&gt;ここでの作業の漏れは、メンテ時間の延長にもろに響くので非常に大事。&lt;/p&gt;
&lt;p&gt;ただし、ここからはメンテ中にしかできない作業なので、事前に作業をきっちり詳細まで妄想して分単位でスケジュールを立てて置くこと。&lt;/p&gt;
&lt;h5 id="dbサーバの移行"&gt;DBサーバの移行&lt;/h5&gt;
&lt;p&gt;メンテタイムに入ったら、さっさとdumpして突っ込む。&lt;/p&gt;
&lt;p&gt;mysqldump -u username -ppassword –databases db_name | gzip &amp;gt; ${dmpfile}.gz&lt;/p&gt;
&lt;p&gt;mysql -u swirl -p –default-character-set=utf8 decome_db&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;アクセスできた？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DBの参照・更新・削除できた？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ログは吐かれてる？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;メールとの連携は問題ない？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一通りチェックして問題が無かったら、、、&lt;/p&gt;
&lt;h5 id="dns切り替え公開"&gt;DNS切り替え（公開）&lt;/h5&gt;
&lt;p&gt;無事公開！DNSの切り替えが反映次第リプレースしたサーバにアクセスがくるでしょう。&lt;/p&gt;
&lt;p&gt;だがっ！・・・・ここで終わらない・・・・！&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;外部サーバとの連携は問題ない？IPが変わったなら、その影響は？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解析ツールは動いてる？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;バッチ処理は？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;・・・&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まだまだ出そうですねw&lt;/p&gt;
&lt;h5 id="まとめ"&gt;まとめ&lt;/h5&gt;
&lt;p&gt;とまあ、ここまでざっくりとした流れでした。&lt;/p&gt;</description></item><item><title>titanium mobile1.8.0.1 でandroid2.2 だとファイルアップロードできない件</title><link>https://blog.playispeace.com/562/file_upload_error_occured_titanium-mobile1-8-0-1_andandroid2-2/</link><pubDate>Tue, 10 Jan 2012 17:01:56 +0000</pubDate><guid>https://blog.playispeace.com/562/file_upload_error_occured_titanium-mobile1-8-0-1_andandroid2-2/</guid><description>&lt;p&gt;ファイルを単純にPOSTするのができなかったので、調べた内容をメモ&lt;/p&gt;
&lt;h5 id="結論"&gt;結論&lt;/h5&gt;
&lt;p&gt;色々調べて結果から言うと、現状1.8.0.1のバグとして認識されているようです。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jira.appcelerator.org/browse/TIMOB-6411"&gt;http://jira.appcelerator.org/browse/TIMOB-6411&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fix Version/s:Sprint 2012-02&lt;/p&gt;
&lt;p&gt;って書いてあるから、2月にはfix予定かな？&lt;/p&gt;
&lt;p&gt;でも2月の頭なのか末なのか・・・気になるところ。&lt;/p&gt;
&lt;h5 id="調べたこと"&gt;調べたこと&lt;/h5&gt;
&lt;p&gt;まず、android実機で赤い画面でエラーが発生。iOSでは出ない。その内容は&lt;/p&gt;
&lt;p&gt;Uncaught Error: org.apache.http.entity.mime.content.FileBody&lt;/p&gt;
&lt;p&gt;で、これでググって見つかったのが、以下のページ&lt;/p&gt;
&lt;p&gt;&lt;a href="http://developer.appcelerator.com/question/130194/httpclient---send-file-on-android-problem"&gt;http://developer.appcelerator.com/question/130194/httpclient—send-file-on-android-problem&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;で、&lt;a href="http://jira.appcelerator.org/browse/TIMOB-6973"&gt;TIMOB-6973&lt;/a&gt;にログしたよって書いてあるのに、それに気づかず、その下にtry catchしてみ？って書いてたので、実施。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var xhr = Ti.Network.createHTTPClient();
xhr.open(&amp;#39;POST&amp;#39;, url);
try{
	xhr.send({media:image});
}catch(e){
	alert(e.message);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;sendのところをtry catchして出たメッセージが&lt;/p&gt;
&lt;p&gt;org.apache.http.entity.mime.content.FileBody&lt;/p&gt;
&lt;p&gt;と、ここで、&lt;a href="http://jira.appcelerator.org/browse/TIMOB-6973"&gt;TIMOB-6973&lt;/a&gt;この存在に気づいて見てみる。&lt;/p&gt;
&lt;p&gt;すると今度は &lt;a href="http://jira.appcelerator.org/browse/TIMOB-6411"&gt;TIMOB-6411&lt;/a&gt;と重複してまっせって書いてあるので、そこでようやく結論に書いたリンクにたどり着きました。&lt;/p&gt;
&lt;p&gt;うーん、今月中にリリースしたいんやけど、どうするべ。。。Titanium mobile1.7.5は&lt;a href="http://jira.appcelerator.org/browse/TIMOB-6973"&gt;TIMOB-6973&lt;/a&gt;によると大丈夫っぽいので、SDKのversion下げるのが現実的かなー。。。&lt;/p&gt;</description></item><item><title>postfixでランダムなアカウントに対応させる</title><link>https://blog.playispeace.com/554/postfix_random_mailaddress_setup/</link><pubDate>Wed, 14 Dec 2011 21:04:35 +0000</pubDate><guid>https://blog.playispeace.com/554/postfix_random_mailaddress_setup/</guid><description>&lt;p&gt;postfixを使っている環境で、（ランダムな英数字）-test@mail.server.com　というアドレスで受信させる設定方法です。&lt;/p&gt;
&lt;p&gt;実はほぼこのページ（&lt;a href="http://okwave.jp/qa/q3724181.html"&gt;【postfix】aiaseでのランダムメールアカウント設定&lt;/a&gt;）で完結していますが、改めて残しておきます。&lt;/p&gt;
&lt;p&gt;設定ファイルを編集します。&lt;/p&gt;
&lt;h1 id="vi-maincf"&gt;vi main.cf&lt;/h1&gt;
&lt;p&gt;pcreの部分を追記します。&lt;/p&gt;
&lt;p&gt;alias_database = hash:/etc/aliases, pcre:/etc/postfix/aliases.pcre&lt;/p&gt;
&lt;p&gt;alias_maps = hash:/etc/aliases, pcre:/etc/postfix/aliases.pcre&lt;/p&gt;
&lt;p&gt;postfix 再起動して設定変更を反映？させます&lt;/p&gt;
&lt;h1 id="postfix-reload"&gt;postfix reload&lt;/h1&gt;
&lt;h1 id="postmap-etcpostfixaliasespcre"&gt;postmap /etc/postfix/aliases.pcre&lt;/h1&gt;
&lt;h5 id="システム要件"&gt;システム要件&lt;/h5&gt;
&lt;p&gt;どんなときにこのシステムが求められるかというと、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;携帯（ガラケー）会員サービスを運営しており、ログインせず写真をアップロードする専用アドレスが必要&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このような場合で、システム的には、以下の要求が発生します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ユーザごとの専用アドレスの発行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他のユーザのアドレスが知られないようなアドレス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そのアドレスから写真貼付メールが送られるので、受信後、ユーザと写真を紐づけた状態で保存&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="動作検証"&gt;動作検証&lt;/h5&gt;
&lt;p&gt;適当なphpスクリプトを用意して、メール受信→プログラム起動、を確認します。&lt;/p&gt;
&lt;h6 id="検証用php"&gt;検証用php&lt;/h6&gt;
&lt;p&gt;/tmp/test.php をこのように用意します。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ファイルとログに実行権限を与えて、実行してみます。&lt;/p&gt;
&lt;h1 id="echo-123--mail--s-subject"&gt;echo 123 | mail -s subject &lt;a href="mailto:aaa-test@mail.server.com"&gt;aaa-test@mail.server.com&lt;/a&gt;　&lt;/h1&gt;
&lt;p&gt;/tmp/test.php.logに時間が記述されてたらOK！&lt;/p&gt;
&lt;p&gt;こんなんとかも試してみる。&lt;/p&gt;
&lt;h1 id="echo-123--mail--s-subject-1"&gt;echo 123 | mail -s subject &lt;a href="mailto:hogehoge-test@mail.server.com"&gt;hogehoge-test@mail.server.com&lt;/a&gt;　&lt;/h1&gt;
&lt;p&gt;再び、/tmp/test.php.log　を確認。&lt;/p&gt;
&lt;p&gt;何も記述されてない場合は、エラーが起きてるかもしれませんので、メールログを見てみましょう。原因が分かるかも。&lt;/p&gt;
&lt;h5 id="まとめ"&gt;まとめ&lt;/h5&gt;
&lt;p&gt;これでphpが動くのが確認できたので、あとはphp側でメールアドレスを解析してユーザとひもづけてあげればOKですね！&lt;/p&gt;</description></item><item><title>さくらVPSにAPCをインストール</title><link>https://blog.playispeace.com/546/sakura_vps_apc_install/</link><pubDate>Tue, 13 Dec 2011 22:00:57 +0000</pubDate><guid>https://blog.playispeace.com/546/sakura_vps_apc_install/</guid><description>&lt;p&gt;phpがインストールされた状態を前提にソースからビルドします。&lt;/p&gt;
&lt;h5 id="apcインストール"&gt;APCインストール&lt;/h5&gt;
&lt;p&gt;最新版をここから探します。&lt;a href="http://pecl.php.net/package/apc"&gt;http://pecl.php.net/package/apc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;解凍後のディレクトリ内のINSTALLファイルを参考にしました。&lt;/p&gt;
&lt;p&gt;$ wget &lt;a href="http://pecl.php.net/get/APC-3.1.9.tgz"&gt;http://pecl.php.net/get/APC-3.1.9.tgz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$ tar xzvf APC-3.1.9.tgz&lt;/p&gt;
&lt;p&gt;$ cd APC-3.1.9&lt;/p&gt;
&lt;p&gt;$ phpize&lt;/p&gt;
&lt;p&gt;$ ./configure –with-php-config=/usr/local/php5/bin/php-config&lt;/p&gt;
&lt;p&gt;$ make&lt;/p&gt;
&lt;p&gt;$ export TEST_PHP_ARGS=’-n’&lt;/p&gt;
&lt;p&gt;$ make test&lt;/p&gt;
&lt;h1 id="make-install"&gt;make install&lt;/h1&gt;
&lt;p&gt;ここにインストールされたようなので、&lt;/p&gt;
&lt;p&gt;/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/&lt;/p&gt;
&lt;p&gt;php.iniに追記します。&lt;/p&gt;
&lt;p&gt;$ vi /usr/local/php5/lib/php.ini&lt;/p&gt;
&lt;p&gt;vi /usr/local/php5/lib/php.ini&lt;/p&gt;
&lt;p&gt;extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/”&lt;/p&gt;
&lt;p&gt;extension=”apc.so”&lt;/p&gt;
&lt;p&gt;apache を再起動してphpinfoを確認。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/12/phpinfo_apc.png" alt="phpinfo_apc"&gt;&lt;/p&gt;
&lt;p&gt;apcが表示されればOK&lt;/p&gt;</description></item><item><title>さくらVPSで（ソースからビルドする）LAMP環境構築しました</title><link>https://blog.playispeace.com/528/sakura_vps_lamp_setup/</link><pubDate>Mon, 12 Dec 2011 19:54:47 +0000</pubDate><guid>https://blog.playispeace.com/528/sakura_vps_lamp_setup/</guid><description>&lt;p&gt;最近新たにさくらVPS借りたので、LAMP環境をソースから構築してみたそのログです。&lt;/p&gt;
&lt;h5 id="さくらvpsでlamp構築"&gt;さくらVPSでLAMP構築&lt;/h5&gt;
&lt;p&gt;※前提として、一般ユーザを作成済みとして、主にそのユーザで作業しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.playispeace.com/435/sakura_vps_apache_install/"&gt;さくらVPSにLAMP環境構築〜apache編&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.playispeace.com/484/sakura_vps_mysql_install/"&gt;さくらVPSにLAMP環境構築〜mysql編&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ちょっと寄り道、&lt;a href="https://blog.playispeace.com/488/sakura_vps_gd_install/"&gt;さくらVPSにLAMP環境構築〜GD編&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.playispeace.com/510/sakura_vps_libraries_install/"&gt;さくらVPSにLAMP環境構築〜php入れるまで編&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.playispeace.com/514/sakura_vps_php_install/"&gt;さくらVPSにLAMP環境構築〜php編&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;おまけ、&lt;a href="https://blog.playispeace.com/521/sakura_vps_openssl_install/"&gt;さくらVPSにopensslインストールしてphpからhttps接続させる&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;おまけその2、&lt;a href="https://blog.playispeace.com/546/sakura_vps_apc_install/"&gt;さくらVPSにAPCをインストール&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今後もアプリケーション側で新たなライブラリが必要になる場合もあるかと思いますので、それは随時各エントリー内か新たなエントリーとして追記してく予定です。&lt;/p&gt;
&lt;h5 id="環境構築での課題"&gt;環境構築での課題&lt;/h5&gt;
&lt;p&gt;今回、環境構築の課題として「&lt;strong&gt;yumに頼らない&lt;/strong&gt;」という課題で取り組んでみました。&lt;/p&gt;
&lt;p&gt;何故か。&lt;/p&gt;
&lt;p&gt;昨今のIaaSの普及に伴い、環境自体をイメージとしてあたかもコピペで作っていけるような便利な時代になっており、毎回1から各ソフトウェアごとに構築していくのと比べると格段に時間の短縮が可能になります。&lt;/p&gt;
&lt;p&gt;そこで生産性向上のためにも、このようなサービスを利用すべきと考えていたのですが、いざ自分の構築スキルを振り返るとyumに頼った状態でした。&lt;/p&gt;
&lt;p&gt;yumは環境構築には非常に強力なので、つい頼ってしまうのですが、他のソフトとの連携等を行う際にyumだとconfigureオプションを変えれなかったり、ソフトのversionの指定が出来ない（しにくい？）などの不便な点があります。&lt;/p&gt;
&lt;p&gt;そこで、これではいかんと思い、今回このような課題で取り組んでみました。&lt;/p&gt;
&lt;p&gt;結果的に、それほど大きくハマることも無く、環境構築できました。&lt;/p&gt;
&lt;p&gt;まだやりたいことはあるのですが、LAMPとしてはこれで十分と思いますので、それはまた別でまとめたいと思います。&lt;/p&gt;
&lt;h5 id="iaasへの挑戦"&gt;IaaSへの挑戦&lt;/h5&gt;
&lt;p&gt;これで納得のいく形でIaaSに取り組めそうです！&lt;/p&gt;
&lt;p&gt;さて、使うとしたらどれがいいですかねー。少し前はEC2を触ってたのですが、さくらVPSずっと使ってたので、さくらクラウドかなー・・・&lt;/p&gt;</description></item><item><title>さくらVPSにopensslインストールしてphpからhttps接続させる</title><link>https://blog.playispeace.com/521/sakura_vps_openssl_install/</link><pubDate>Mon, 12 Dec 2011 18:55:18 +0000</pubDate><guid>https://blog.playispeace.com/521/sakura_vps_openssl_install/</guid><description>&lt;p&gt;phpのfile_get_contens()関数で引数のURLがhttpsの場合、以下のエラーが出る環境があります。&lt;/p&gt;
&lt;p&gt;Warning: file_get_contents() [function.file-get-contents]: Unable to find the wrapper “https” – did you forget to enable it when you configured PHP? in ssl.php on line 2&lt;/p&gt;
&lt;p&gt;その対応としてopensslをインストールしたので、そのメモです。&lt;/p&gt;
&lt;h5 id="opensslのインストール"&gt;opensslのインストール&lt;/h5&gt;
&lt;p&gt;参考）&lt;a href="http://memorva.jp/memo/linux/openssl.php"&gt;http://memorva.jp/memo/linux/openssl.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここからソースをDL &lt;a href="http://www.openssl.org/"&gt;http://www.openssl.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$ wget &lt;a href="http://www.openssl.org/source/openssl-1.0.0e.tar.gz"&gt;http://www.openssl.org/source/openssl-1.0.0e.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$ tar xzvf openssl-1.0.0e.tar.gz&lt;/p&gt;
&lt;p&gt;$ cd openssl-1.0.0e&lt;/p&gt;
&lt;h1 id="config--fpic-shared"&gt;./config -fPIC shared&lt;/h1&gt;
&lt;h1 id="make"&gt;make&lt;/h1&gt;
&lt;h1 id="make-test"&gt;make test&lt;/h1&gt;
&lt;h1 id="make-install"&gt;make install&lt;/h1&gt;
&lt;p&gt;なぜか./configもmakeも permisionで怒られたので、以降rootで実行しました。&lt;/p&gt;
&lt;h5 id="php連携"&gt;php連携&lt;/h5&gt;
&lt;p&gt;–with-openssl オプションをつけてインストールし直します。&lt;/p&gt;
&lt;p&gt;参考）&lt;a href="http://www.php.net/manual/ja/openssl.installation.php"&gt;http://www.php.net/manual/ja/openssl.installation.php&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="configure-今までのオプションwith-openssl"&gt;./configure （今までのオプション）–with-openssl&lt;/h1&gt;
&lt;p&gt;$ make&lt;/p&gt;
&lt;p&gt;$ make test&lt;/p&gt;
&lt;h1 id="make-install-1"&gt;make install&lt;/h1&gt;
&lt;p&gt;./configure時に権限のエラーが起きたのでrootで実行してます。&lt;/p&gt;
&lt;p&gt;また、make test時に&lt;a href="https://blog.playispeace.com/514/sakura_vps_php_install/"&gt;phpインストールしたとき&lt;/a&gt;と同じエラーがでましたが、ssl関連では出てないようだったので、スルーします。&lt;/p&gt;
&lt;h5 id="動作確認"&gt;動作確認&lt;/h5&gt;
&lt;p&gt;apacheを再起動してからphpinfoを見てみます。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/12/phpinfo2.png" alt="phpinfo"&gt;&lt;/p&gt;
&lt;p&gt;認識されてますね。&lt;/p&gt;
&lt;p&gt;先ほどエラーが出たスクリプトを再度実行してみると、エラーは出なくなりました。&lt;/p&gt;
&lt;p&gt;(以下、2011/02/09 追記)&lt;/p&gt;
&lt;h5 id="sslの設定"&gt;SSLの設定&lt;/h5&gt;
&lt;p&gt;ここを参考にしました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.server-memo.net/server-setting/apache/apache-mod_ssl.html"&gt;http://www.server-memo.net/server-setting/apache/apache-mod_ssl.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;実際の作業は整理後追記予定。(以下追記)&lt;/p&gt;
&lt;p&gt;関連ファイル保存用にフォルダを作成。&lt;/p&gt;
&lt;p&gt;$cd /etc/httpd/conf/&lt;/p&gt;
&lt;p&gt;$mkdir ssl.key&lt;/p&gt;</description></item><item><title>さくらVPSにLAMP環境構築〜php編</title><link>https://blog.playispeace.com/514/sakura_vps_php_install/</link><pubDate>Mon, 12 Dec 2011 17:50:06 +0000</pubDate><guid>https://blog.playispeace.com/514/sakura_vps_php_install/</guid><description>&lt;p&gt;&lt;a href="https://blog.playispeace.com/435/sakura_vps_apache_install/"&gt;apache&lt;/a&gt;,&lt;a href="https://blog.playispeace.com/484/sakura_vps_mysql_install/"&gt;mysql&lt;/a&gt;に&lt;a href="https://blog.playispeace.com/488/sakura_vps_gd_install/"&gt;GD&lt;/a&gt;や&lt;a href="https://blog.playispeace.com/510/sakura_vps_libraries_install/"&gt;その他ライブラリ&lt;/a&gt;が準備が整ったとこでいよいよphpインストールしていきます。&lt;/p&gt;
&lt;h5 id="phpインストール"&gt;phpインストール&lt;/h5&gt;
&lt;p&gt;ここからソースをDL &lt;a href="http://www.php.net/downloads.php"&gt;http://www.php.net/downloads.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;cd /usr/local/src/&lt;/p&gt;
&lt;p&gt;$wget &lt;a href="http://jp2.php.net/get/php-5.3.8.tar.gz/from/jp.php.net/mirror"&gt;http://jp2.php.net/get/php-5.3.8.tar.gz/from/jp.php.net/mirror&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xzvf php-5.3.8.tar.gz&lt;/p&gt;
&lt;p&gt;$cd php-5.3.8&lt;/p&gt;
&lt;p&gt;#./configure –prefix=/usr/local/php5 –with-apxs2=/usr/local/apache2/bin/apxs –disable-all –enable-libxml –with-libxml-dir=/usr/local –enable-zend-multibyte –with-regex=php –enable-filter –with-pcre-regex=yes –with-mysql=/usr/local/mysql –with-gd&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;$make test&lt;/p&gt;
&lt;p&gt;今回configure時に一部権限でエラーを吐いたので、rootで実行しました。&lt;/p&gt;
&lt;p&gt;–disable-allオプションを指定してから必要なものだけを入れるようにしてます。&lt;/p&gt;
&lt;p&gt;また、オプションは暫定ですので、今後のサービスにより、変更する可能性はあります。&lt;/p&gt;
&lt;p&gt;※追記2012/1/27 configureオプション変更がありました。&lt;/p&gt;
&lt;p&gt;$./configure –prefix=/usr/local/php5 –with-apxs2=/usr/local/apache2/bin/apxs –disable-all –enable-libxml –with-libxml-dir=/usr/local –enable-zend-multibyte –with-regex=php –enable-filter –with-pcre-regex=yes –with-mysql=/usr/local/mysql –with-gd –with-jpeg-dir –enable-session –enable-mbstring –enable-xml –enable-json –enable-sockets&lt;/p&gt;
&lt;p&gt;また、make testでいくつかエラー出たようなので、メモ&lt;/p&gt;
&lt;p&gt;=====================================================================&lt;/p&gt;
&lt;p&gt;EXPECTED FAILED TEST SUMMARY&lt;/p&gt;
&lt;p&gt;———————————————————————&lt;/p&gt;
&lt;p&gt;output buffering – fatalism [tests/output/ob_011.phpt] XFAIL REASON: This test will fail until the fix in revision r214155 is backported from php 6&lt;/p&gt;
&lt;p&gt;Inconsistencies when accessing protected members [Zend/tests/access_modifiers_008.phpt] XFAIL REASON: Discussion: &lt;a href="http://marc.info/?l=php-internals&amp;amp;m=120221184420957&amp;amp;w=2"&gt;http://marc.info/?l=php-internals&amp;amp;m=120221184420957&amp;amp;w=2&lt;/a&gt;&lt;/p&gt;</description></item><item><title>さくらVPSにLAMP環境構築〜php入れるまで編</title><link>https://blog.playispeace.com/510/sakura_vps_libraries_install/</link><pubDate>Mon, 12 Dec 2011 15:50:43 +0000</pubDate><guid>https://blog.playispeace.com/510/sakura_vps_libraries_install/</guid><description>&lt;p&gt;前回&lt;a href="https://blog.playispeace.com/488/sakura_vps_gd_install/"&gt;GD&lt;/a&gt;をインストールしましたが、その他phpをインストールする際に必要なライブラリのインストールログです。&lt;/p&gt;
&lt;h5 id="libxml2インストール"&gt;libxml2インストール&lt;/h5&gt;
&lt;p&gt;&lt;a href="ftp://xmlsoft.org/libxml2/"&gt;ここ&lt;/a&gt;から最新版を探します。&lt;/p&gt;
&lt;p&gt;$wget &lt;a href="ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz"&gt;ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xzvf libxml2-2.7.8.tar.gz&lt;/p&gt;
&lt;p&gt;$cd libxml2-2.7.8&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;
&lt;p&gt;今後アプリケーション側で必要なライブラリがあれば、随時こちらに追記予定&lt;/p&gt;
&lt;h5 id="いよいよphp"&gt;いよいよphp&lt;/h5&gt;
&lt;p&gt;ようやく&lt;a href="https://blog.playispeace.com/514/sakura_vps_php_install/"&gt;php&lt;/a&gt;いきます。&lt;/p&gt;</description></item><item><title>さくらVPSにLAMP環境構築〜GD編</title><link>https://blog.playispeace.com/488/sakura_vps_gd_install/</link><pubDate>Mon, 12 Dec 2011 15:07:43 +0000</pubDate><guid>https://blog.playispeace.com/488/sakura_vps_gd_install/</guid><description>&lt;p&gt;さくらVPSにLAMP環境構築で、&lt;a href="https://blog.playispeace.com/435/sakura_vps_apache_install/"&gt;apache&lt;/a&gt;と&lt;a href="https://blog.playispeace.com/484/sakura_vps_mysql_install/"&gt;mysql&lt;/a&gt;が動いてたのでphp行きます。&lt;/p&gt;
&lt;p&gt;・・・の前にこの環境で動かすサービス上必要な&lt;a href="http://php.net/manual/ja/book.image.php"&gt;GD&lt;/a&gt;を入れます。&lt;/p&gt;
&lt;h5 id="gdのインストール"&gt;GDのインストール&lt;/h5&gt;
&lt;p&gt;GD入れる前に色々必要なlibpng,libjpeg,freetypeを入れていきます。&lt;/p&gt;
&lt;p&gt;主な参考先）&lt;a href="http://www.momo-i.org/chapter9/gd.html"&gt;GD等のインストール&lt;/a&gt;&lt;/p&gt;
&lt;h6 id="libpng"&gt;libpng&lt;/h6&gt;
&lt;p&gt;ここからDL &lt;a href="http://sourceforge.net/projects/libpng/files/latest/download"&gt;http://sourceforge.net/projects/libpng/files/latest/download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;tar.bz2でローカルにDLしちゃうので、サーバアップ後&lt;/p&gt;
&lt;p&gt;$tar jxfv libpng-1.2.37.tar.bz2&lt;/p&gt;
&lt;p&gt;$cd libpng-1.2.37&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;すると&lt;/p&gt;
&lt;p&gt;configure: error: zlib not installed&lt;/p&gt;
&lt;p&gt;zlibが無いですよって怒られたので、&lt;/p&gt;
&lt;h6 id="zlibインストール"&gt;zlibインストール&lt;/h6&gt;
&lt;p&gt;$wget &lt;a href="http://prdownloads.sourceforge.net/libpng/zlib-1.2.5.tar.gz?download"&gt;http://prdownloads.sourceforge.net/libpng/zlib-1.2.5.tar.gz?download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xvzf zlib-1.2.5.tar.gz&lt;/p&gt;
&lt;p&gt;$cd zlib-1.2.5&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;
&lt;p&gt;再びチャレンジ&lt;/p&gt;
&lt;p&gt;$cd libpng-1.2.37&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;
&lt;p&gt;いけました。&lt;/p&gt;
&lt;h6 id="libjpegのインストール"&gt;libjpegのインストール&lt;/h6&gt;
&lt;p&gt;$wget &lt;a href="http://www.ijg.org/files/jpegsrc.v8c.tar.gz"&gt;http://www.ijg.org/files/jpegsrc.v8c.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xvzf jpegsrc.v8c.tar.gz&lt;/p&gt;
&lt;p&gt;$cd jpeg-8c&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;
&lt;h6 id="freetypeのインストール"&gt;freetypeのインストール&lt;/h6&gt;
&lt;p&gt;$wget &lt;a href="http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.4.8.tar.gz"&gt;http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.4.8.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xvzf freetype-2.4.8.tar.gz&lt;/p&gt;
&lt;p&gt;$cd freetype-2.4.8&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;
&lt;h6 id="gdのインストール-1"&gt;GDのインストール&lt;/h6&gt;
&lt;p&gt;いよいよ本体&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bitbucket.org/pierrejoye/gd-libgd/downloads"&gt;ここ&lt;/a&gt;から最新版をゲット&lt;/p&gt;
&lt;p&gt;$ wget &lt;a href="https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.zip"&gt;https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$ unzip GD_2_0_33.zip&lt;/p&gt;
&lt;p&gt;$ cd pierrejoye-gd-libgd-GD_2_0_33/src&lt;/p&gt;
&lt;p&gt;$./configure –with-png=/usr/local –with-freetype=/usr/local –with-jpeg=/usr/local&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;</description></item><item><title>Ti.Developers.meeting Vol 1.0に参加してきた</title><link>https://blog.playispeace.com/496/ti_developers_meeting_v1-0/</link><pubDate>Sat, 10 Dec 2011 16:57:03 +0000</pubDate><guid>https://blog.playispeace.com/496/ti_developers_meeting_v1-0/</guid><description>&lt;p&gt;&lt;a href="http://atnd.org/events/22016"&gt;Ti.Developers.meeting Vol 1.0&lt;/a&gt;に参加してきましたので、内容のメモ。タグは#TDm1&lt;/p&gt;
&lt;h5 id="androidiphoneアプリをjavascriptだけで作れるtitanium-mobileを知ろう"&gt;Android/iPhoneアプリをJavascriptだけで作れるTitanium Mobileを知ろう！&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/masuidrive"&gt;@masuidrive&lt;/a&gt;さんの発表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;HTML5 vs Ti ではなく HTML5 &amp;amp; Ti&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;200,000developers、30,000apps&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実績：ココログ、Maeda-1、amadana、サイボウズlive,MogSnap ・・・etc&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;User Experienceをどう提供するかが大事&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;できない（苦手な）こと：画像フィルター、シューティングゲームのようなリアルタイム性&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最終的にはモジュール（Obj-c,Java）で書ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デモ &lt;a href="http://bit.ly/TiHandsOn"&gt;http://bit.ly/TiHandsOn&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;技術的にできることとアプリとしてできることは違う。iphoneのUIガイドラインなど。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;進化が早いのでブログ等の情報は、version注意&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;12/19 v8エンジン搭載のver1.8リリース予定。ただ、すべてのメソッド対応してない。選択制。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回増井さんの話を聞いて思ったのは、決してandroidとiOSで同じUIを提供することが、いいUserExperienceを提供することにはつながらないんだなぁと。。。&lt;/p&gt;
&lt;p&gt;同じUIにすることにこだわらる必要は無いってことに気づかされました&lt;/p&gt;
&lt;h5 id="モジュールの力でtitanium-mobileをもっと活用しよう"&gt;モジュールの力でTitanium Mobileをもっと活用しよう！&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/donayama"&gt;@donayama&lt;/a&gt;さん&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.co.jp/Titanium-Mobile%E3%81%A7%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8BiPhone-Android%E3%82%A2%E3%83%97%E3%83%AA-Mobile-Developer/dp/4798123986"&gt;Titanium Mobile本&lt;/a&gt;の著者！お世話になってます！&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;実績：&lt;a href="http://d.hatena.ne.jp/donayama/20111119/PilgrimS_Released"&gt;聖地巡礼S&lt;/a&gt;、&lt;a href="http://d.hatena.ne.jp/donayama/20111208/TiAdventCalendar2011"&gt;TiAdventCalender2011 8日目&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Titanium Module：機能補完ライブラリ。画像の圧縮率指定、ファイルのzip/unzip、OpenGL etc&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Opensource Modules&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open Mobile Martketplace：レベニューシェア、70% developer、買い切り、月額、paypal&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Live shopping（実際にOpen Mobile Martketplaceでモジュールを買うデモ）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zipをDL&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プロジェクト直下にzipのままコピペ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ビルドすると、modulesディレクトリに展開&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;samplesディレクトリの中身をそのままコピペして再ビルド&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tiapp.xml にmodulesタグを記述&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Project →Cleanしてから再ビルド&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Titanium+Plus Modules Appceloator謹製のモジュール群&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;モジュールを探す場所は一つじゃないようですね！&lt;/p&gt;
&lt;h5 id="lt"&gt;LT&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/towerofl"&gt;@towerofl&lt;/a&gt; さん。なんど山口県から！&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;変数名とフォルダ名やファイル名を合わせる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;効果：変数名の名前が分かりやすい、ネストが深くなる（ここで時間切れ）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/atsusy"&gt;@atsusy&lt;/a&gt; さん。&lt;/p&gt;
&lt;p&gt;いくつかのカメラフィルター系moduleの制作者&lt;/p&gt;
&lt;p&gt;作ったモジュールのデモを見せていただけました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/sngmr"&gt;@sngmr&lt;/a&gt; さん。名古屋から。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ココ壱探し&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;データは、グルナビAPI＋ココ壱サイトスクレイピング&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="microsoftさん"&gt;Microsoftさん&lt;/h5&gt;
&lt;p&gt;会場を貸してくれた理由等。ナカオ様。&lt;/p&gt;
&lt;p&gt;Microsoft×デジハリで&lt;a href="http://www.socialtoprunners.jp/next-str/fukuoka01/"&gt;ソーシャルゲームグローバルリーダー育成プログラム&lt;/a&gt;、ってをやってるとな！&lt;/p&gt;
&lt;p&gt;笑いのあるすてきなプレゼンでした！&lt;/p&gt;
&lt;h5 id="まとめ"&gt;まとめ&lt;/h5&gt;
&lt;p&gt;ジュース飲み放題だし会場きれいだしMicrosoftさんには感謝！&lt;/p&gt;
&lt;p&gt;またそもそもこのイベントを開いてくれた@asotronoutesさんにも感謝！&lt;/p&gt;
&lt;p&gt;よーし、Tiやるぞー&lt;/p&gt;</description></item><item><title>さくらVPSにLAMP環境構築〜mysql編</title><link>https://blog.playispeace.com/484/sakura_vps_mysql_install/</link><pubDate>Fri, 09 Dec 2011 17:10:06 +0000</pubDate><guid>https://blog.playispeace.com/484/sakura_vps_mysql_install/</guid><description>&lt;p&gt;前回の&lt;a href="https://blog.playispeace.com/435/sakura_vps_apache_install/"&gt;apache入れた&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;h5 id="mysqlのインストール"&gt;mysqlのインストール&lt;/h5&gt;
&lt;p&gt;uname -a でOSを確認して&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.mysql.com/downloads/mysql/"&gt;http://dev.mysql.com/downloads/mysql/&lt;/a&gt;　ここからDL先を探します。&lt;/p&gt;
&lt;p&gt;$cd /usr/local/src/&lt;/p&gt;
&lt;p&gt;$wget &lt;a href="http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.18-linux2.6-x86_64.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/"&gt;http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.18-linux2.6-x86_64.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xzvf mysql-5.5.18-linux2.6-x86_64.tar.gz&lt;/p&gt;
&lt;p&gt;解凍後の設定は、&lt;a href="http://www3.atword.jp/nykdev/2010/04/12/mysql55%E3%80%80%E6%9C%80%E9%80%9F%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/"&gt;ここ&lt;/a&gt;とmysql-5.5.18-linux2.6-x86_64ディレクトリ内のINSTALL-BINARYを参考にしました。&lt;/p&gt;
&lt;p&gt;#ln -s /usr/local/src/mysql-5.5.18-linux2.6-x86_64 /usr/local/mysql&lt;/p&gt;
&lt;p&gt;#cd mysql-5.5.18-linux2.6-x86_64/scripts/&lt;/p&gt;
&lt;p&gt;#./mysql_install_db –user=mysqluser –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data/&lt;/p&gt;
&lt;p&gt;#vi /etc/my.cnf&lt;/p&gt;
&lt;p&gt;（support-files/my-large.cnf あたりを参考に）&lt;/p&gt;
&lt;p&gt;起動&lt;/p&gt;
&lt;p&gt;$/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf &amp;amp;&lt;/p&gt;
&lt;p&gt;root パスワード設定&lt;/p&gt;
&lt;p&gt;$/usr/local/mysql/bin/mysqladmin -u root password ‘new-password’&lt;/p&gt;
&lt;p&gt;ログイン&lt;/p&gt;
&lt;p&gt;$./mysql -u root -p&lt;/p&gt;
&lt;h6 id="一般アカウントを作成"&gt;一般アカウントを作成&lt;/h6&gt;
&lt;blockquote&gt;
&lt;p&gt;mysql grant all privileges on database_name.* to user_name@localhost identified by ‘password’&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;mysql exit&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;アカウント確認&lt;/p&gt;
&lt;p&gt;$./mysql -u user_name -p&lt;/p&gt;
&lt;p&gt;DB権限確認&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;mysql create database database_name&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Query OK, 1 row affected (0.01 sec)&lt;/p&gt;
&lt;p&gt;違う名前のDB’hoge’を作ろうとすると&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;mysql create database hoge&lt;/p&gt;</description></item><item><title>さくらVPSにLAMP環境構築〜apache編</title><link>https://blog.playispeace.com/435/sakura_vps_apache_install/</link><pubDate>Fri, 09 Dec 2011 16:59:46 +0000</pubDate><guid>https://blog.playispeace.com/435/sakura_vps_apache_install/</guid><description>&lt;p&gt;yumに頼らずやってみた際の自分用ログです。&lt;/p&gt;
&lt;h5 id="apacheのインストール"&gt;apacheのインストール&lt;/h5&gt;
&lt;p&gt;参考）&lt;a href="http://httpd.apache.org/download.cgi"&gt;http://httpd.apache.org/download.cgi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$wget &lt;a href="http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.21.tar.gz"&gt;http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.21.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$tar xzvf httpd-2.2.21.tar.gz&lt;/p&gt;
&lt;p&gt;$cd httpd-2.2.21&lt;/p&gt;
&lt;p&gt;$./configure&lt;/p&gt;
&lt;p&gt;$make&lt;/p&gt;
&lt;p&gt;#make install&lt;/p&gt;
&lt;h6 id="起動"&gt;起動&lt;/h6&gt;
&lt;p&gt;#/usr/local/apache2/bin/httpd&lt;/p&gt;
&lt;h6 id="動作確認"&gt;動作確認&lt;/h6&gt;
&lt;p&gt;ブラウザから　http://（IPアドレス）を見てみます。&lt;/p&gt;
&lt;p&gt;It works!&lt;/p&gt;
&lt;p&gt;動いてます！&lt;/p&gt;
&lt;h6 id="自動起動設定"&gt;自動起動設定&lt;/h6&gt;
&lt;p&gt;#vi /etc/rc.d/init.d/httpd&lt;/p&gt;
&lt;p&gt;内容は&lt;a href="http://kazmax.zpp.jp/apache/apache2.html"&gt;こちら&lt;/a&gt;を参考に&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#!/bin/sh
#
# chkconfig: 35 85 15
# description: apache 2.2.21

apachectl=&amp;#34;/usr/local/apache2/bin/apachectl&amp;#34;

case &amp;#34;$1&amp;#34; in
 start|stop|restart|fullstatus| \
 status|graceful|graceful-stop| \
 configtest|startssl)
 $apachectl $@
 ;;
 *)
 ;;
esac
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;権限を他のものと合わせる&lt;/p&gt;
&lt;p&gt;#chmod 755 httpd&lt;/p&gt;
&lt;p&gt;chkconfig に登録&lt;/p&gt;
&lt;p&gt;#chkconfig –add httpd&lt;/p&gt;
&lt;p&gt;サービス登録確認&lt;/p&gt;
&lt;p&gt;#service httpd start&lt;/p&gt;
&lt;p&gt;自動起動確認&lt;/p&gt;
&lt;p&gt;#reboot&lt;/p&gt;
&lt;p&gt;再度ブラウザで確認　http://（IPアドレス）&lt;/p&gt;
&lt;p&gt;動作が確認できたら次は&lt;a href="https://blog.playispeace.com/484/sakura_vps_mysql_install/"&gt;mysql&lt;/a&gt;です。&lt;/p&gt;</description></item><item><title>CakePHP2.0のキャッシュとレスポンス（CakePHP Advent Calendar 2011 8日目）</title><link>https://blog.playispeace.com/449/cakephp2-0_cache_and_response/</link><pubDate>Thu, 08 Dec 2011 20:33:35 +0000</pubDate><guid>https://blog.playispeace.com/449/cakephp2-0_cache_and_response/</guid><description>&lt;p&gt;この記事は&lt;a href="http://atnd.org/events/22721"&gt;CakePHP Advent Calendar 2011&lt;/a&gt;に参加しています。&lt;/p&gt;
&lt;p&gt;cakephp2.0でmodelキャッシュやviewキャッシュってあるけど、実際使ったらレスポンスってどうなるの？というのを検証してみたいと思います。&lt;/p&gt;
&lt;h5 id="前提"&gt;前提&lt;/h5&gt;
&lt;p&gt;環境は以下で試しております。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;さくらVPS512（512M）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;centOS 5.6&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apache 2.2.3&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mysql 5.5&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;php 5.2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cakephp 2.0.4&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apc 3.1.9&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回初めてcakephp2.0触ったのですが、これを期に&lt;a href="http://cakephp.org"&gt;cakephp.org&lt;/a&gt;に寄付しました（ﾄﾞﾔｯ（ｷﾘｯ&lt;/p&gt;
&lt;p&gt;円高の今がチャンスです！&lt;/p&gt;
&lt;h5 id="検証方法"&gt;検証方法&lt;/h5&gt;
&lt;p&gt;簡単なページ（レコード10万件から10件ランダムに抽出して一覧表示するページ）を作って、abを使ってRequests per secondの値を見て、比較していきます。&lt;/p&gt;
&lt;p&gt;ab -c 10 -n 10 (url)&lt;/p&gt;
&lt;p&gt;比較順は以下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;デフォルト（そのまま）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;modelキャッシュする&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;viewキャッシュする&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;始める前に一つ注意。cakephp2.0からmysqlの接続にpdo使ってたんですね！&lt;/p&gt;
&lt;p&gt;これでハマってしまいました＞＜さすがにcakephp2.0がエラーで「pdoが無いですよ！」とは教えてくれなかったので、初めて使う人はご注意を！&lt;/p&gt;
&lt;p&gt;phpinfo()で以下のようになってればOKです。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/12/phpinfo_.jpg" alt="phpinfo_pdo"&gt;&lt;/p&gt;
&lt;p&gt;なってない方は、&lt;a href="http://dozo.matrix.jp/pear/index.php?PECL%2Fpdo%2Fdriver"&gt;この辺&lt;/a&gt;を参考にインストールしましょう。&lt;/p&gt;
&lt;h5 id="結果"&gt;結果&lt;/h5&gt;
&lt;p&gt;結果から書きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;デフォルト : 3.22&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;modelキャッシュ : 74.43&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;viewキャッシュ : 116.30&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こうなりました。modelキャッシュで20倍以上、viewキャッシュで30倍以上のレスポンスが出ました！&lt;/p&gt;
&lt;p&gt;では、簡単に検証内容を説明します。&lt;/p&gt;
&lt;h6 id="デフォルト"&gt;デフォルト&lt;/h6&gt;
&lt;p&gt;コントローラの中身はこんな感じ&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$options = array();
	$options[&amp;#34;limit&amp;#34;] = 10;
	$options[&amp;#34;order&amp;#34;] = &amp;#34;RAND()&amp;#34;;
	$t = $this-&amp;gt;Model-&amp;gt;find(&amp;#34;all&amp;#34;,$options);
	$this-&amp;gt;set(&amp;#34;t&amp;#34;,$t);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ランダムで１０件引っ張ってきてます。&lt;/p&gt;
&lt;p&gt;デバッグによると、このクエリでだいたい平均400msかかってました。&lt;/p&gt;
&lt;p&gt;わりと重めのクエリです。&lt;/p&gt;
&lt;h6 id="modelキャッシュ"&gt;modelキャッシュ&lt;/h6&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$t = Cache::read(&amp;#34;cache_name&amp;#34;);
	if(!$t){
		$options = array();
		$options[&amp;#34;limit&amp;#34;] = 10;
		$options[&amp;#34;order&amp;#34;] = &amp;#34;RAND()&amp;#34;;
		$t = $this-&amp;gt;Model-&amp;gt;find(&amp;#34;all&amp;#34;,$options);
		Cache::write(&amp;#34;cache_name&amp;#34;,$t);
	}

	$this-&amp;gt;set(&amp;#34;t&amp;#34;,$t);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果をキャッシュして、キャッシュがあればキャッシュを表示させてます。&lt;/p&gt;</description></item><item><title>【Titanium Advent Calendar 2011：四日目】画面遷移</title><link>https://blog.playispeace.com/443/titanium_advent_calendar_2011_window_flow/</link><pubDate>Sun, 04 Dec 2011 17:12:05 +0000</pubDate><guid>https://blog.playispeace.com/443/titanium_advent_calendar_2011_window_flow/</guid><description>&lt;p&gt;この記事は、&lt;a href="http://twitter.com/#!/astronaughts"&gt;@astronaughts&lt;/a&gt;さん企画の「&lt;a href="http://atnd.org/events/21951"&gt;Titanium Advent Calendar 2011&lt;/a&gt;」向けに書いています。&lt;/p&gt;
&lt;p&gt;ただいまtitanium勉強中の身でして、大したことを書けないですが、最初につまった画面遷移について書きます。&lt;/p&gt;
&lt;h5 id="画面遷移"&gt;画面遷移&lt;/h5&gt;
&lt;p&gt;Titaniumを勉強するにあたり、さまざまな機能が詰め込まれたサンプル&lt;a href="https://github.com/appcelerator/KitchenSink"&gt;KitchenSink&lt;/a&gt;がとても役に立ちます。&lt;/p&gt;
&lt;p&gt;コードを見てみると、tabにwindowを置いて表示していくような流れになっています。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var tabGroup = Titanium.UI.createTabGroup({id:&amp;#39;tabGroup1&amp;#39;});
var win1 = Titanium.UI.createWindow({className:&amp;#39;win1&amp;#39;});
var tab1 = Titanium.UI.createTab({
	id:&amp;#39;tab1&amp;#39;,
	window:win1
});

tabGroup.addTab(tab1);
tabGroup.open({
	transition:Titanium.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ところが、タブの位置はiphoneは画面下側でandroidは画面上側に表示されますので、UIが大きく変わることになります。&lt;/p&gt;
&lt;p&gt;そこで、タブを使わず遷移させる方法を探していくと、やはり別のサンプルにヒントがありました。&lt;/p&gt;
&lt;p&gt;BaseUI -&amp;gt; Window (Standalone) -&amp;gt; Open(Plain) です。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// 現在のwindowの取得
var win = Titanium.UI.currentWindow;
// 次の遷移先に移動するボタン
var b1 = Titanium.UI.createButton({
	title:&amp;#39;Open (Plain)&amp;#39;,
	width:200,
	height:40,
	top:10
});

// クリック時の動作設定
b1.addEventListener(&amp;#39;click&amp;#39;, function()
{

	// クリック時に開くwindow
	var w = Titanium.UI.createWindow({
		backgroundColor:&amp;#39;#336699&amp;#39;
	});

	// クリック時に開くwindowに置く閉じるボタン
	var b = Titanium.UI.createButton({
		title:&amp;#39;Close&amp;#39;,
		height:30,
		width:150
	});
	// 閉じるボタン追加
	w.add(b);
	// 閉じるボタンを押したときの動作設定
	b.addEventListener(&amp;#39;click&amp;#39;, function()
	{
		w.close();
	});

	// 開く
	w.open();
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;クリックした先のwindowも、クリックイベントを設定する際に準備しているような動きのようですね。&lt;/p&gt;</description></item><item><title>Node.js勉強会＠関西 第0回に参加してきた</title><link>https://blog.playispeace.com/424/nodejs_osaka/</link><pubDate>Sat, 19 Nov 2011 18:42:35 +0000</pubDate><guid>https://blog.playispeace.com/424/nodejs_osaka/</guid><description>&lt;p&gt;&lt;a href="http://atnd.org/events/21762"&gt;Node.js勉強会＠関西 第0回&lt;/a&gt;（ハッシュタグは#nodesgw00）に参加してきたので、そのレポートです。&lt;/p&gt;
&lt;p&gt;会場は、サントリーアネックスビル。JR大阪駅から地下を通って出たらすぐ着きました。迷わないでいけたなんて・・・&lt;/p&gt;
&lt;h5 id="概要"&gt;概要&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/craftgear"&gt;@craftgear&lt;/a&gt;さんによるイベント説明とnode.js概要&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;node.jsを使ったhello worldでphpと比較検証。100回のリクエスト同時に100リクエスト、やく１３、４倍の時間差&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;出来て２年で若いのに、ライブラリに溢れてる。選択に迷う。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;フレームワーク・テンプレート・DBアクセス・テストフレームワーク・機能テスト・認証・ファイルアップロード等、それぞれ複数ある&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;補助ツールCoffeeScript、supervisor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;認証はauthenがおすすめ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;各基本機能のサンプルコードの簡単な説明&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とにかくライブラリが豊富だし、選択が難しそうという印象。&lt;/p&gt;
&lt;p&gt;あと、紹介コードがCoffeeScriptで書かれてたので、パッと見では分かりずらかったです。でもちょいちょい聞くなー、この単語。この辺が参考に良いかな。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tech.kayac.com/archive/coffeescript-tutorial.html"&gt;今日から始めるCoffeeScript&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;JavaScriptにコンパイルできる小さな言語&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;コンパイル後はJavaScriptとして動作するため実行速度面ではほぼ変わらない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;構文がRubyやPythonライク&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ブラウザ用の開発にもサーバサイドの開発にも使える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;forever,daemon&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;だそうです。&lt;/p&gt;
&lt;h5 id="マルチプロセスと永続化"&gt;マルチプロセスと永続化&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/kumatch"&gt;@kumatch&lt;/a&gt;さん（Feedtailor inc.）の発表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Cluster,foreverというモジュールの話&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cluster,master process ,worker process,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ライブコーディング、masterプロセスとworkerプロセスの動きを表示。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一つのportで複数プロセスが簡単に&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;workerプロセスではメモリ空間を共有してない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共有するためにはmasterにsendメソッドで値を渡す&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;forever,daemon,startメソッドで指定したプロセスが死んだら再度起動してくれる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;かなり動きが詳細に見れて分かりやすかったです。あとちょっと怪しい挙動も見れて、node.jsの未熟さもかいま見れましたw&lt;/p&gt;
&lt;p&gt;実際に、業務でファイル変換処理にnode.js使っているということ。&lt;/p&gt;
&lt;p&gt;ファイル変換時に次のプロセスを待たせてしまうが、node.jsのマルチプロセスで解決しているそうです。&lt;/p&gt;
&lt;p&gt;次からLTです。&lt;/p&gt;
&lt;h5 id="東京node学園祭レポート"&gt;東京Node学園祭レポート&lt;/h5&gt;
&lt;p&gt;矢谷重人さん（ファーストサーバ）の発表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;総勢200名,3000円１日経たず完売&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;node.js総本山と業務提携、&lt;a href="https://node-ninja.com/"&gt;Node Ninja&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中学三年生の参加者も！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プラチナ２枠のスポンサーに２０社応募の人気ぶり&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NodeNinjaの開発人員募集w&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;東京Node学園祭の写真を使っての発表だったので、イベントの雰囲気が伝わってきました。&lt;/p&gt;
&lt;p&gt;あと、東京ではnode.jsの初心者向けセミナーは飽きられてるという噂w&lt;/p&gt;
&lt;h5 id="nodejsでつくるリバースプロキシ"&gt;node.jsでつくるリバースプロキシ&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/kamiyan"&gt;@kamiyan&lt;/a&gt;さん,&lt;a href="http://prog.re-d.net/demo/slide/20111119/"&gt;発表資料&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;色んなポートに割り振られたアプリケーションに対して、リバースプロキシで一元urlアクセス可能に&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;具体的なソースコードの紹介&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;コードの量も少ないし、本当に簡単にリバースプロキシができそうな印象持てました。&lt;/p&gt;
&lt;h5 id="nodeにおけるcommonjs対応について"&gt;NodeにおけるCommonJS対応について&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/esperia09"&gt;@esperia09&lt;/a&gt;(Re: Kayo-System) さんの発表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CommonJS:javascriptをサーバサイドなどで利用する&lt;strong&gt;標準仕様&lt;/strong&gt;（ライブラリではない）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実はサーバサイドjsの歴史は古い（1996〜）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node.jsがCommonJSに対応してるかというと微妙で、対応しようともしてない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nodeはjavascriptのシステムを利用したいが、commonJSはjsの仕様を固めたい、というずれ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結論としては、Node.jsを使う場合は、CommonJSを気にしなくていいっぽいです。&lt;/p&gt;
&lt;h5 id="感想まとめ"&gt;感想まとめ&lt;/h5&gt;
&lt;p&gt;実際に触ってにないのもあり、具体的なソースをみて動きを把握することは難しかったです。ただ、ライブコーディングしてもらったのもあり、だいぶイメージがつかめました。&lt;/p&gt;
&lt;p&gt;実際に、業務で必要とするシーンが今のとこ思いつかないのですが、一部とはいえはNode.jsで出来ることを実際に見れてよかったです。&lt;/p&gt;</description></item><item><title>Titanium Mobile カメラ起動と写真のアップロード</title><link>https://blog.playispeace.com/420/titanium_mobile_camera_and_photo_upload/</link><pubDate>Tue, 08 Nov 2011 02:41:07 +0000</pubDate><guid>https://blog.playispeace.com/420/titanium_mobile_camera_and_photo_upload/</guid><description>&lt;p&gt;さて&lt;a href="https://blog.playispeace.com/413/titanium_mobile_pblo_rss_reader/"&gt;簡易なrssリーダーは完成した&lt;/a&gt;ので、次の目標は、&lt;strong&gt;カメラで撮った写真をアップロードする&lt;/strong&gt;、です。&lt;/p&gt;
&lt;p&gt;カメラを使った処理は、エミュレータでは起動しないので、実機でコンパイルするしかないのが難点です！&lt;/p&gt;
&lt;h5 id="appjsでカメラ起動"&gt;app.jsでカメラ起動&lt;/h5&gt;
&lt;p&gt;まずはボタンクリック→カメラ起動の流れを作ってみます。&lt;/p&gt;
&lt;p&gt;app.jsの中身はこんな感じ&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// window 設定
var win = Titanium.UI.createWindow({
 title:&amp;#39;CameraTest&amp;#39;,
 backgroundColor:&amp;#39;#fff&amp;#39;
});

// カメラ起動ボタン
var b1 = Titanium.UI.createButton({
	title:&amp;#39;camera start&amp;#39;,
	height:40,
	width:200,
	top:10,
});

//クリック時の動作
b1.addEventListener(&amp;#39;click&amp;#39;, function(e)
{
	var win = Titanium.UI.createWindow({
		url:&amp;#34;camera.js&amp;#34;,
		title:&amp;#34;camera&amp;#34;,
	});
	win.open(win,{animated:true});
});
//windowにボタン追加
win.add(b1);
//window open
win.open();
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これでクリックしたらcamera.jsが呼び出されるシンプルな画面ができます。&lt;/p&gt;
&lt;h5 id="camerajsでカメラ操作"&gt;camera.jsでカメラ操作&lt;/h5&gt;
&lt;p&gt;で実際にカメラを呼び出して操作するcamera.jsはこんな感じ&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var win = Titanium.UI.currentWindow;
Titanium.Media.showCamera({

	success:function(event)
	{
		var cropRect = event.cropRect;
		var image = event.media;
		if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO)
		{
			// カメラで撮った画像を表示する
			var imageView = Ti.UI.createImageView({
				width:win.width,
				height:win.height,
				image:event.media
			});
			win.add(imageView);

			// カメラで撮った画像をアップロード（uploadCameraImageはあとで説明）
			uploadCameraImage(image);
		}
		else
		{
			alert(&amp;#34;got the wrong type back =&amp;#34;+event.mediaType);
		}
	},
	cancel:function()
	{
	},
	error:function(error)
	{
		// create alert
		var a = Titanium.UI.createAlertDialog({title:&amp;#39;Camera&amp;#39;});

		// set message
		if (error.code == Titanium.Media.NO_CAMERA)
		{
			a.setMessage(&amp;#39;Please run this test on device&amp;#39;);
		}
		else
		{
			a.setMessage(&amp;#39;Unexpected error: &amp;#39; + error.code);
		}

		// show alert
		a.show();
	},
	saveToPhotoGallery:true,
	allowEditing:true,
	mediaTypes:[Ti.Media.MEDIA_TYPE_VIDEO,Ti.Media.MEDIA_TYPE_PHOTO]
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これはcameraで画像を撮った場合と、エラーが起きた場合の処理を書いてます。その他、細かいパラメータはKitichenSinkをコピペしたままです。（内容はまだ分かってませんw）&lt;/p&gt;</description></item><item><title>Titanium mobile 自分のrss reader とりあえず完成！</title><link>https://blog.playispeace.com/413/titanium_mobile_pblo_rss_reader/</link><pubDate>Sat, 29 Oct 2011 04:35:09 +0000</pubDate><guid>https://blog.playispeace.com/413/titanium_mobile_pblo_rss_reader/</guid><description>&lt;p&gt;&lt;a href="https://blog.playispeace.com/388/titanium_mobile_simplexml_reader/"&gt;前々回&lt;/a&gt;でrssを読み込んで一覧表示をし、&lt;a href="https://blog.playispeace.com/398/titanium_mobile_click_open_window/"&gt;前回&lt;/a&gt;なんとか一覧→詳細の画面遷移はできたので、ちゃんとデータの受け渡しをして、多少まともなアプリにしてみます。&lt;/p&gt;
&lt;h5 id="画面遷移時のデータの引き渡し方法"&gt;画面遷移時のデータの引き渡し方法&lt;/h5&gt;
&lt;p&gt;一覧→詳細と遷移する際に、tapした記事の本文を表示させないといけません。&lt;/p&gt;
&lt;p&gt;そこでポイントはapp.jsのここ。（プログラム全体は記事の最後に貼ってます。）&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;if (Ti.Platform.name == &amp;#34;android&amp;#34;) {
			var win = Titanium.UI.createWindow({
				url:&amp;#34;detail.js&amp;#34;,
				title:e.rowData.text,
				body:e.rowData.body
			});
		} else {
			var win = Titanium.UI.createWindow({
				url:&amp;#34;detail.js&amp;#34;,
				title:e.rowData.text,
				body:e.rowData.body,
				backgroundColor:&amp;#39;#fff&amp;#39;,
				barColor:&amp;#39;#111&amp;#39;

			});
		}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Platformによる分岐がありますが、大事なのはbody:e.rowData.bodyのところ。&lt;/p&gt;
&lt;p&gt;windowオブジェクトのプロパティとして新たにbodyというのを作りそこに、値をセットします。e.rowData.bodyは&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;datas.push({title:title.item(0).text, test:&amp;#39;detail.js&amp;#39;, body:description.item(0).text});
（・・・中略・・・）
 var tableview = Titanium.UI.createTableView({data:datas});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このようにtableviewに値をセットする際にbodyプロパティにxmlから取得したデータをセットしています。&lt;/p&gt;
&lt;p&gt;そして詳細画面（detail.js）で&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var win = Ti.UI.currentWindow;
（・・・中略・・・）
var detail = Ti.UI.createLabel({
//	backgroundColor:&amp;#39;#336699&amp;#39;,
	borderRadius:10,
	width:300,
	height:&amp;#39;auto&amp;#39;,
	top:10,
	text : win.body
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このような形でcurrentWindowで現在のwindowを取得し、そのbodyをlabelのtextにセットしています。&lt;/p&gt;
&lt;p&gt;これで詳細画面のlabelのtextに、xmlで取得した本文（descriptionタグ）が表示されます。&lt;/p&gt;
&lt;h5 id="画面のスクロール"&gt;画面のスクロール&lt;/h5&gt;
&lt;p&gt;ところがこのままだと、本文が画面いっぱい埋まってはみ出してしまう場合がありました。&lt;/p&gt;
&lt;p&gt;で、感覚的にスクロールしてくれるかと思いきや、画面は動かず。。。。&lt;/p&gt;
&lt;p&gt;てことでサンプルのKitchen sinkを見てみると、example/scroll_views_tabs.js に&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var scrollView2 = Titanium.UI.createScrollView({
	contentWidth:75,
	contentHeight:500,
	top:70,
	height:200,
	width:75,
	borderRadius:10,
	backgroundColor:&amp;#39;#13386c&amp;#39;
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こんなものを発見。実際画面もスクロールしていたので、これを参考にしました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;var win = Ti.UI.currentWindow;

var scrollView = Titanium.UI.createScrollView({
	 contentWidth:&amp;#39;auto&amp;#39;,
	 contentHeight:&amp;#39;auto&amp;#39;,
	 top:0,
	 showVerticalScrollIndicator:true,
});

var detail = Ti.UI.createLabel({
	borderRadius:10,
	width:300,
	height:&amp;#39;auto&amp;#39;,
	top:10,
	text : win.body
});

scrollView.add(detail);

win.add(scrollView);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これがdetail.jsの全貌ですが、前回との違いは、window( label() ) だったのが、window( scroll( label() ) ) という関係になって、scrollが間に噛んだようなイメージです。&lt;/p&gt;</description></item><item><title>携帯（ガラケー）IPアドレス最新版URL</title><link>https://blog.playispeace.com/404/latest_url_for_mobile_ip/</link><pubDate>Thu, 27 Oct 2011 21:32:45 +0000</pubDate><guid>https://blog.playispeace.com/404/latest_url_for_mobile_ip/</guid><description>&lt;p&gt;お仕事で最新のIPアドレスを調べたので、URL張っておきます。&lt;/p&gt;
&lt;h5 id="docomo"&gt;DoCoMo&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.nttdocomo.co.jp/service/developer/make/content/ip/index.html"&gt;http://www.nttdocomo.co.jp/service/developer/make/content/ip/index.html&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="au"&gt;AU&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html"&gt;http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="softbank"&gt;SoftBank&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://creation.mb.softbank.jp/mc/tech/tech_web/web_ipaddress.html"&gt;http://creation.mb.softbank.jp/mc/tech/tech_web/web_ipaddress.html&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="副産物"&gt;副産物&lt;/h5&gt;
&lt;p&gt;php でこのサブネットマスク形式のIP一覧に含まれているかどうか判定する処理を作りました。&lt;/p&gt;
&lt;p&gt;参考）&lt;a href="http://oshiete.goo.ne.jp/qa/2955550.html"&gt;サブネットマスクを用いたIP制限をしたい&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Titanium mobile クリックして次のウィンドウに遷移する</title><link>https://blog.playispeace.com/398/titanium_mobile_click_open_window/</link><pubDate>Thu, 27 Oct 2011 02:49:24 +0000</pubDate><guid>https://blog.playispeace.com/398/titanium_mobile_click_open_window/</guid><description>&lt;p&gt;&lt;a href="https://blog.playispeace.com/388/titanium_mobile_simplexml_reader/"&gt;前回&lt;/a&gt;課題とした、Titanium mobile でクリックしたら次のウィンドウに遷移させる方法です。&lt;/p&gt;
&lt;h5&gt;&lt;/h5&gt;
&lt;p&gt;遷移先のウィンドウ用にdetail.jsを作成しました（app.jsと同じ階層に）。中身はこんな感じ&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// create table view data object
var data = [
	{title:&amp;#39;Tab Groups&amp;#39;},
];

// create table view
var tableview = Titanium.UI.createTableView({
	data:data
});

// add table view to the window
Titanium.UI.currentWindow.add(tableview);

var win = Titanium.UI.createWindow({
	height:30,
	width:250,
	bottom:110,
	borderRadius:10
});

var view = Titanium.UI.createView({
	backgroundColor:&amp;#39;#000&amp;#39;,
	opacity:0.7,
	height:30,
	width:250,
	borderRadius:10
});

win.add(view);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;でapp.jsをこの形&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor(&amp;#39;#000&amp;#39;);

// create tab group
var tabGroup = Titanium.UI.createTabGroup();

//
// create base UI tab and root window
//
var win1 = Titanium.UI.createWindow({
 title:&amp;#39;Tab 1&amp;#39;,
 backgroundColor:&amp;#39;#fff&amp;#39;
});
var tab1 = Titanium.UI.createTab({
 icon:&amp;#39;KS_nav_views.png&amp;#39;,
 title:&amp;#39;Tab 1&amp;#39;,
 window:win1
});

// create slider view data object
 var tableview = Titanium.UI.createTableView({
data : [
	{title:&amp;#39;Detail&amp;#39;, test:&amp;#39;detail.js&amp;#39;},
]
});
tableview.addEventListener(&amp;#39;click&amp;#39;, function(e)
{
	if (e.rowData.test)
	{
		var win = Titanium.UI.createWindow({
			url:e.rowData.test,
			title:e.rowData.title
		});
//		Titanium.UI.currentTab.open(win,{animated:true});
		tab1.open(win,{animated:true});
	}
});
	win1.add(tableview);
//Titanium.UI.currentWindow.add(tableview);

//
// add tabs
//
tabGroup.addTab(tab1);

// open tab group
tabGroup.open();
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="クリックして開く処理"&gt;クリックして開く処理&lt;/h5&gt;
&lt;p&gt;まず、ポイントはここ。app.jsのこの部分&lt;/p&gt;</description></item><item><title>Titanium Mobileですごくシンプルなxml readerを作ってみた</title><link>https://blog.playispeace.com/388/titanium_mobile_simplexml_reader/</link><pubDate>Tue, 25 Oct 2011 23:13:55 +0000</pubDate><guid>https://blog.playispeace.com/388/titanium_mobile_simplexml_reader/</guid><description>&lt;p&gt;Titanium Mobile を最近触り始めたので、スキルアップとともにアプリができる過程を残していきます。&lt;/p&gt;
&lt;h5 id="前提"&gt;前提&lt;/h5&gt;
&lt;p&gt;開発環境は、こんな感じ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;mac book air&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Titanium Studio&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちなみに構築手順は&lt;a href="http://code.google.com/p/titanium-mobile-doc-ja/downloads/detail?name=TMINTRO_ch02Plus.pdf"&gt;こちら&lt;/a&gt;がまとまってます。&lt;/p&gt;
&lt;h5 id="最初の課題"&gt;最初の課題&lt;/h5&gt;
&lt;p&gt;twitter APIからjsonを読み込んで一覧で表示、というシンプルなアプリは&lt;a href="http://2011.phpmatsuri.net/"&gt;phpmatsuri&lt;/a&gt;のワークショップで、すでに動いてましたので、xml読み込みverを作ってみました。&lt;/p&gt;
&lt;p&gt;xmlの対象はこのブログの&lt;a href="http://blog.playispeace.com/feed"&gt;feed&lt;/a&gt;です。&lt;/p&gt;
&lt;h6 id="ハマりどころ"&gt;ハマりどころ&lt;/h6&gt;
&lt;p&gt;xmlのDOM操作も多少苦戦しましたが、何よりデバッグの分かりにくさに苦労しました。&lt;/p&gt;
&lt;p&gt;どうも、onload()による遅延ロードに起因して、デバッグがすべて表示されないようです。&lt;/p&gt;
&lt;p&gt;デバッグするタイミングが注意ですが、それは下の開発tipsに書いてます。&lt;/p&gt;
&lt;h6 id="完成ソース"&gt;完成ソース&lt;/h6&gt;
&lt;p&gt;デフォルトのapp.jsからいじってますので、その名残が多少あります。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor(&amp;#39;#000&amp;#39;);

// create tab group
var tabGroup = Titanium.UI.createTabGroup();

//
// create base UI tab and root window
//
var win1 = Titanium.UI.createWindow({
 title:&amp;#39;Tab 1&amp;#39;,
 backgroundColor:&amp;#39;#fff&amp;#39;
});
var tab1 = Titanium.UI.createTab({
 icon:&amp;#39;KS_nav_views.png&amp;#39;,
 title:&amp;#39;Tab 1&amp;#39;,
 window:win1
});

var http = Titanium.Network.createHTTPClient();
http.open(&amp;#34;GET&amp;#34;, &amp;#34;http://blog.playispeace.com/feed/&amp;#34;);
http.onload = function() {
	var doc = this.responseXML.documentElement;
	var items = doc.getElementsByTagName(&amp;#34;item&amp;#34;);
	var datas = [];
	for (var c=0;c 0)
		{
			row.add(Titanium.UI.createLabel({
 text: title.item(0).text,
 top: 0,
 left: 0,
 right: 0,
 height: &amp;#39;auto&amp;#39;,
 bottom: 8
 }));
		datas.push(row);
		}
	}
 var tableView2 = Titanium.UI.createTableView({data:datas});
	win1.add(tableView2);
};
http.send();

http.onerror = function(){
	//alert(&amp;#34;network error&amp;#34;);
};

//
// add tabs
//
tabGroup.addTab(tab1);

// open tab group
tabGroup.open();
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="開発tips"&gt;開発tips&lt;/h5&gt;
&lt;p&gt;開発時に気づいた点などです。&lt;/p&gt;</description></item><item><title>PHP祭りに参加して〜2日目</title><link>https://blog.playispeace.com/339/phpmatsuri_second_day/</link><pubDate>Mon, 17 Oct 2011 20:39:00 +0000</pubDate><guid>https://blog.playispeace.com/339/phpmatsuri_second_day/</guid><description>&lt;p&gt;&lt;a href="https://blog.playispeace.com/322/phpmatsuri_first_day/"&gt;PHP祭りに参加して〜１日目&lt;/a&gt;の続き&lt;/p&gt;
&lt;p&gt;朝は、7〜8時が朝食タイムだったので、なんとか7時前に起きて朝食モリモリ&lt;/p&gt;
&lt;p&gt;睡眠不足は食事でカバー！&lt;/p&gt;
&lt;p&gt;これモットーです。&lt;/p&gt;
&lt;h5 id="デモ大会にエントリー"&gt;デモ大会にエントリー&lt;/h5&gt;
&lt;p&gt;ふたたびモクモク。で、気がついたら、午後から始まるデモ大会のエントリー締め切りが迫ってるやないか！優勝したらipad2だぜ？ほかにも色んな賞で色々もらえるのにぃぃ、、、！！&lt;/p&gt;
&lt;p&gt;でも、こりゃ、成果物は無理ですぜ。。。&lt;/p&gt;
&lt;p&gt;でもでもせっかく来たのに、、、祭りなのに、、、爪痕残さねば。。。&lt;/p&gt;
&lt;p&gt;ということで、勢いでエントリー参加。で、&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/papettoTV/status/125374987682070528"&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/10/tweet.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;状態。&lt;/p&gt;
&lt;p&gt;内容は&lt;a href="https://blog.playispeace.com/313/on_andoff_button/"&gt;前回のブログ&lt;/a&gt;に書いた、こたつの話をすることに。&lt;/p&gt;
&lt;h5 id="デモ大会"&gt;デモ大会&lt;/h5&gt;
&lt;p&gt;昼食後いよいよ、デモ大会開始。40名を超える発表者がいたため、一人3分で3グループに別れ、グループ終わりで休憩挟む形に。&lt;/p&gt;
&lt;h6 id="デモ大会ルール"&gt;デモ大会ルール&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;発表終わりに全員で,1,2,3点(1がgoodで3がexellentってのもいい表現！)のどれかに投票&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全員の発表が終わったら、各フレームワーク等ごとの賞と、全体の優勝者を決定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;優勝者にはipad2がっはぁああ！！！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というわけで、話聞く側も気の抜けない大会なのです！&lt;/p&gt;
&lt;p&gt;私は、３番グループの真ん中当たりだったので、『デモの無い変化球的な発表やし、みんなが飽きてきた頃合いがいいなぁ』・・・と思ってたので、ちょうど良かった！&lt;/p&gt;
&lt;p&gt;そんなこと思いながら、みなさんのすばらしい発表を聞き不安にw&lt;/p&gt;
&lt;h6 id="いよいよ発表のとき"&gt;いよいよ発表のとき&lt;/h6&gt;
&lt;p&gt;３グループ目が始まる前に準備&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/papettoTV/status/125374987682070528"&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/10/tweet2.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;で、どんどん発表が進んでいって、いよいよ発表開始！&lt;/p&gt;
&lt;p&gt;だが、、、、&lt;/p&gt;
&lt;p&gt;あとから考えると、、そういえば初めてのLTでした、、、&lt;/p&gt;
&lt;p&gt;緊張はしてたものの、酒の力で、普通には喋れてたと思うのですが、、、、&lt;/p&gt;
&lt;p&gt;タイマーを見れてなかった、、、、&lt;/p&gt;
&lt;p&gt;さー、いよいよ本題と思った次の週間、鳴り響いたのはドラの音（終了の合図）&lt;/p&gt;
&lt;p&gt;『えーっ！！』って言っちゃった（全力で）。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/papettoTV/status/125457729841135616"&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/10/tweet3.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;あー、なんと、、、成果物の無い上に発表もこのざま。。。&lt;/p&gt;
&lt;p&gt;得点もねーなとあきらめ席に戻る。&lt;/p&gt;
&lt;p&gt;すると「残念でしたねー」「むっちゃ続き気になりますわー」と周りの方々に声を掛けていただく。あー、みなさん優しいお言葉ありがとうございます。。。&lt;/p&gt;
&lt;h6 id="まさかのリベンジ"&gt;まさかのリベンジ！？&lt;/h6&gt;
&lt;p&gt;そしてあっという間の全員の発表終了。&lt;/p&gt;
&lt;p&gt;３０分ほどの投票集計＆審査タイムに突入。&lt;/p&gt;
&lt;p&gt;で、この時間は、まだ発表したい、とか心残りのある人が発表していいような、フリーダムタイム。&lt;/p&gt;
&lt;p&gt;ん、、、、心残り、、、、だと・・・・？&lt;/p&gt;
&lt;p&gt;これは、もしや、と思っていると、、、&lt;/p&gt;
&lt;p&gt;「こたつの続きが聞きたーいっ！！」という&lt;a href="http://twitter.com/#!/mogya"&gt;@mogya&lt;/a&gt;さんのかけ声！&lt;/p&gt;
&lt;p&gt;その後に、自然発生的にわき上がるこたつコール！！！&lt;/p&gt;
&lt;p&gt;「こ・た・つ！こ・た・つ！」&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/10/kotatsu1.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;いやいやいや、そんな盛り上げられても困るんですけどwwwww&lt;/p&gt;
&lt;p&gt;てか、こたつの話なんですけどwwwwww&lt;/p&gt;
&lt;p&gt;でも、ぶっちゃけ嬉しかったですけどwwww&lt;/p&gt;
&lt;p&gt;ということで、続きを発表。おかげで、気持ちよく思いっきりしゃべれました。&lt;/p&gt;
&lt;p&gt;結果、賞とかはもらえ無かったですが、&lt;strong&gt;記録より記憶&lt;/strong&gt;に残せたのなら満足です！&lt;/p&gt;
&lt;p&gt;そのときの発表資料がこちら&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji/webtokotatsu"&gt;web_to_kotatsu&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/YokotaEiji"&gt;Yokota Eiji&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ちなみに資料内の「3G」というのは発表番号のことで、投票が行われてたので資料内でアピールしてますw&lt;/p&gt;
&lt;h5 id="発表会と後の祭り"&gt;発表会と後の祭り&lt;/h5&gt;
&lt;p&gt;各賞の発表や、次期祭りが福おk(ry とかどっかで決定とかの話もあり、祭りは終了。&lt;/p&gt;
&lt;p&gt;散り散りに帰っていく中、たまたま出会った遠征組のグループに合流。流れでお好み焼き「風月」によってわいわいして帰りました。&lt;/p&gt;
&lt;h5 id="感想"&gt;感想&lt;/h5&gt;
&lt;p&gt;セッション内容が濃すぎて、話聞いてるだけでもおなかいっぱいで、でもテンションは高いのでコードもごりごり書くし、みたいな状態が24時間以上ずーっと続くような、そんな感じです。&lt;/p&gt;
&lt;p&gt;帰りには、久々に味わう心地よい疲労感と達成感で満ちてました。&lt;/p&gt;
&lt;p&gt;あと、遠征して来る（関西以外）人は、エネルギッシュだなーと感じました。&lt;/p&gt;
&lt;p&gt;さすが祭りに対する意気込みが違いますね。&lt;/p&gt;
&lt;p&gt;にしも、本当に充実した２日間が送れました。&lt;/p&gt;
&lt;p&gt;スタッフのみなさん、また、発表者の方々、そして、いろいろと手助けしていただいた皆さん、本当にありがとうございました！そしてお疲れさまでした！&lt;/p&gt;
&lt;h5 id="おまけ"&gt;おまけ&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;祭りの&lt;a href="http://vimeo.com/channels/phpmatsuri"&gt;動画アーカイブページ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;みなさんの&lt;a href="http://2011.phpmatsuri.net/page/blog-and-picture-of-participants"&gt;感想ブログ、写真&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;祭りのテーマ曲になった（うそです）&lt;a href="http://www.youtube.com/watch?v=yLArBZISjio"&gt;動画&lt;/a&gt;。&lt;a href="http://twitter.com/gwoo"&gt;@gwoo&lt;/a&gt;氏が祭り中ずっと流してたお陰で、今も頭の中でループ中。。。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>PHP祭りに参加して〜１日目</title><link>https://blog.playispeace.com/322/phpmatsuri_first_day/</link><pubDate>Mon, 17 Oct 2011 18:36:03 +0000</pubDate><guid>https://blog.playispeace.com/322/phpmatsuri_first_day/</guid><description>&lt;p&gt;&lt;img src="https://blog.playispeace.com/wp-content/uploads/2011/10/phpmatsuri_logo.jpg" alt="phpmatsuri"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://2011.phpmatsuri.net/"&gt;PHP祭り&lt;/a&gt;に参加したので、そのレポート&lt;/p&gt;
&lt;p&gt;9時から10時まで受付予定だったので、少し余裕を持って参加したつもりでしたが、環状線の内回りと外回りを間違えるハプニングで、10時すぎに会場入り&lt;/p&gt;
&lt;h5 id="概要説明"&gt;概要説明&lt;/h5&gt;
&lt;p&gt;まずは、イベントの概要説明。祭り２回目の方がこの時点では少なかったのですが、これは経験上分かってて遅れてくるのだとかw&lt;/p&gt;
&lt;p&gt;部屋は二人の相部屋ですよとか、細かい注意事項が「みなさん大人なので」ということで終わったりw&lt;/p&gt;
&lt;h6 id="セッション"&gt;セッション&lt;/h6&gt;
&lt;p&gt;最初は&lt;a href="http://twitter.com/#!/yando"&gt;@yando&lt;/a&gt; さんの「ハッカソン入門」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ハッカーとは？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ハッカソンの例&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;とにかくアウトプット（github,blogに！twitterでは流れてしまう）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;次に、&lt;a href="http://twitter.com/#!/hyoshiok"&gt;@hyoshiok&lt;/a&gt; さん の「ハッカー文化を根付かせる」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;民族誌・・・その文化では当たり前のことを記述する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ミッドナイトプロジェクト（スカンクワークス）、googleの20%ルール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;統制の手法。強制的統制、功利的統制、規範的統制&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ハッカー倫理。すべての情報は自由にアクセスできなければならない、権威を信用するな、等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;facebook,google,yahoo,apple,linkedin エンジニアの人の移動の流れ。最高のプログラマは最高のプログラマと仕事する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ハッカー中心の企業文化の理解、価値観の共有、あとは方法論（勉強会、ランチ、飲み会、戦略、etc）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;質問で、「ハッカー文化を根付かせる」をハッカーと言わずに説明できないか？　→　答え：jobsもハッカーだ。いっしょに考えていきましょう。&lt;/p&gt;
&lt;h5 id="プレゼンワークショップ"&gt;プレゼン＆ワークショップ&lt;/h5&gt;
&lt;p&gt;昼飯後、いよいよ本格的なmatsuri開始&lt;/p&gt;
&lt;p&gt;ここからは、プレゼンとワークショップに別れて同時進行。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/masuidrive"&gt;@masuidrive&lt;/a&gt; さんの発表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;appceceletor,inc にてplatform evangelistとして活動&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;スマートフォンのアプリ開発の問題とtitaniumによる解決策&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;javascript解析エンジンが、nativeAPIを読んでる。「タブを置く」とjsで書いても、iphoneとandroidではタブの位置が違う&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;利用アプリ紹介、利用可能な機能の紹介（camera,video,sql database・・・etc）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;できないこと。リアルタイム性の必要なもの、bit処理（フィルター、暗号・複合化）、大量の写真を利用、&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ただ、ObjectC,Javaで拡張するModuleがある。部分的に、ObjectiveC or Javaで書ける（これ知らんかった！）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;modile販売プラットフォーム（open mobile marketplace）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ブラウザで動くjsとの違い：dom操作がない。xhrの代わりにhttpクライアント機能。requireのサポート&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;UI層、共通層、ロジック層の３層のイメージ。UIがプラットフォーム依存&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;速度、メモリ管理。ネイティブ（Objective-C/Java）より遅い。メモリ管理は自動（GC）でネイティブより食う&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Titanium Studio：Aptana(Elipse)ベース&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;対抗馬と言われるものの特徴。Corona – 2Dゲーム(Lua),Unity – 3Dゲーム、PhoneGap – HTML5、Flash for iOS – 開発難航？titanium はツール向け&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;得意/苦手。ネットのフロントエンドアプリ。アニメーション・エフェクト。リアルタイム性は厳しい。画像処理APIが無い（Moduleで対応できる）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;titanium mobile 本でてるよ！差分pdfもあるよ！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://ti.masuidrive.jp/"&gt;ti.masuidrive.jp&lt;/a&gt; で日本語版コミュニティも作成中。（後から直接ご本人と話した時、「なんか作ったらここで報告して」とのことでした）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;認定トレーニングあるよ！11/25に大阪きてしゃべります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Accelatorに入社した理由。iphone開発で渡米→android版も必要になる→titanium mobile出会う→module開発楽しくなる→イベントで作りの不満を言う→ceoとやり取り始まる→誘われるも条件（ビザの問題）で合わず断る→accelator $9M調達！→ビザの問題解決！・・・が結果日本で流行る→日本法人立てよう。（ビザ・・・w）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ビジネスはsubscription（ヘルプサポート）とmarketplaceでちゃりんちゃりん&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;質問１「日本法人であれば、本国の方針に逆らえないなどないか？」回答：「そこは自由で席は本国で、とかありなので、うまいことやりたい」&lt;/p&gt;
&lt;p&gt;質問２、「英語は？」回答：「できない。テクニカルなことは割と通じるがビジネスはまったく。」「レポートは？」「文のつなぎ合わせ。相手がほぼプログラマなのでifとかthenとかも書く」w&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/predominant"&gt;@graham&lt;/a&gt; による「cakephp2.0」&lt;/p&gt;
&lt;p&gt;通訳を交えての発表でした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;php11年,cakephp コアデベロッパー 4年 cakefest にも参加&lt;/p&gt;</description></item><item><title>いいね系ボタンにみるonとoff の表示について思うこと</title><link>https://blog.playispeace.com/313/on_andoff_button/</link><pubDate>Fri, 14 Oct 2011 14:10:10 +0000</pubDate><guid>https://blog.playispeace.com/313/on_andoff_button/</guid><description>&lt;p&gt;寒くなってきたので、もうすぐこたつが欲しくなりそうです。&lt;/p&gt;
&lt;p&gt;てなわけで、うちの（ちょっと古い）こたつの話します。&lt;/p&gt;
&lt;p&gt;追記(2011/10/16)：記事の内容を最後に資料としてupしてます。&lt;/p&gt;
&lt;h5 id="こたつのスイッチ"&gt;こたつのスイッチ&lt;/h5&gt;
&lt;p&gt;うちのこたつのスイッチって、電源切れてるときは「切」が見えてて、電源入れると「入」が表示されるんですね。&lt;/p&gt;
&lt;p&gt;で、なんかいつも分かりにくいと思ってました。&lt;/p&gt;
&lt;p&gt;ぱっとスイッチを見たときに「入」が見えたら、『今電源が切れててこのスイッチを切り替えたらスイッチが&lt;strong&gt;入&lt;/strong&gt;る』って意味にも捉えれるので。&lt;/p&gt;
&lt;p&gt;つまり、スイッチの表示が、本来は&lt;strong&gt;現在の状態&lt;/strong&gt;を表しているんですが、このスイッチを切り替えた場合の&lt;strong&gt;行動&lt;/strong&gt;の意味、とも考えられると。状態なのか行動なのか、という違いがある訳です。&lt;/p&gt;
&lt;p&gt;で、なぜこんな解釈をするかと考えると、日本語に起因するのかなと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;状態：電源が入っている&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;行動：電源を入れる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;どちらも「入」と表現できる。これが僕が分かりにくい理由だと思うんです。&lt;/p&gt;
&lt;p&gt;例えば英語だと「入/切」じゃなくて「on/off」になると思うのですが、on/offって状態の表現になりますので、分かりやすいよなと。スイッチの切り替えが、「行動」じゃなくて「状態の切り替え」というのが明確になる。&lt;/p&gt;
&lt;p&gt;（もちろん日本語でも「入っている/切れている」って表現すりゃ分かるのですが、デザイン上文字の長さの問題があります。）&lt;/p&gt;
&lt;h5 id="ちょっとだけwebの話"&gt;ちょっとだけwebの話&lt;/h5&gt;
&lt;p&gt;いいね！ボタンとか+1ボタンとかよく見かけるじゃないですか。最近。&lt;/p&gt;
&lt;p&gt;表示しているボタンて、状態の表示、だと思うんですよ。onかoffか。つまり押したら、状態が切り替わる。&lt;/p&gt;
&lt;p&gt;でもボタンだけあってあれだけのサイズで、それを表現するのって難しいですよね。&lt;/p&gt;
&lt;p&gt;+1ボタンなんかはちょっと分かりにくいなと思ってて、この見た目だと押したら「+1される行動」を表してるようにも見えます。&lt;/p&gt;
&lt;p&gt;で、さらに実際押してみたら、青くなる。これが「on」なのかというは押したから分かるのですが、あらためてそのページ訪れてそのボタンをぱっと見ても分かりにくいですよね。。。&lt;/p&gt;
&lt;p&gt;ただ、マウスオーバーすると、&lt;strong&gt;クリックしたらどうなるかという行動内容に関する説明が表示&lt;/strong&gt;されますね。さすがgoogleです。&lt;/p&gt;
&lt;h5 id="言いたいこと"&gt;言いたいこと&lt;/h5&gt;
&lt;p&gt;あうゆうボタンて、要件としてやはりあれぐらいのサイズである必要はあると思います。&lt;/p&gt;
&lt;p&gt;なので、いかにその中で「on/off」を的確に表現するか、というのは難しいですが、しっかり考えるべきじゃないかと思うわけです。&lt;/p&gt;
&lt;p&gt;追記(2011/10/16)：cakephpmatsuriでこれに関して発表しました。（&lt;a href="http://www.slideshare.net/YokotaEiji/webtokotatsu"&gt;資料&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji/webtokotatsu"&gt;web_to_kotatsu&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/YokotaEiji"&gt;Yokota Eiji&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ちなみに資料内の「3G」というのは発表番号のことで、投票が行われてたので資料内でアピールしてますw&lt;/p&gt;</description></item><item><title>kinect 勉強会行ってきた</title><link>https://blog.playispeace.com/292/kinnect-kansai_vol1/</link><pubDate>Sat, 24 Sep 2011 18:59:34 +0000</pubDate><guid>https://blog.playispeace.com/292/kinnect-kansai_vol1/</guid><description>&lt;p&gt;&lt;a href="http://atnd.org/events/19242"&gt;関西Kinect勉強会vol.1&lt;/a&gt;行ってきました。&lt;/p&gt;
&lt;p&gt;vol0にも参加したので、今日で２回目。kinect持参で乗り込んできました。&lt;/p&gt;
&lt;p&gt;勉強会の内容を自分用にメモ&lt;/p&gt;
&lt;h5 id="kinect初心者講座"&gt;kinect初心者講座&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/cokkler"&gt;@cokkler&lt;/a&gt;さんの発表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;kinectの更新処理はいくつかある。センサーの更新を一つ待つ・全部まつ・待たない（非同期）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;イメージバッファ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;深度バッファ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DirectX用のテクスチャに変換&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ユーザの輪郭抽出。１５人まで認識可能？（未検証）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デモ１kinect世界旅行:背景を有名地域の写真にして、仮想世界旅行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デモ２PCで遊べるダンスダンスエボリューション：背景を（踊りの）動画にしてボージングするゲームっぽいもの&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;割りと具体的なソース（メソッド）の紹介と、後半はデモな発表でした。&lt;/p&gt;
&lt;h5 id="kinectタイトルメモし忘れw"&gt;kinect（タイトルメモし忘れw）&lt;/h5&gt;
&lt;p&gt;主催者の&lt;a href="http://twitter.com/#!/tunemage"&gt;@tunemage&lt;/a&gt;さん&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;初心者の壁：C++と画像処理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenFrameworksを使ってみた&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デモ：図形描画、アニメーション、&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;カメラ情報を取得するメソッドも用意されている&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プラグイン：Box2d,OpenCV,OpenNIなど&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;良いところ：お手軽、C++なのでkinect連携しやすい？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;kinect連携がしたかったけど、はまってできなかった、とのこと。mac bookのカメラでの動作デモは動いてました。&lt;/p&gt;
&lt;h5 id="タイトル無し"&gt;タイトル無し&lt;/h5&gt;
&lt;p&gt;Kimura Koji さん&lt;/p&gt;
&lt;p&gt;急遽頼まれての発表とのこと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2010.12.03のdotFesでkinect使ったのでそのサンプル&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;flash+kinect連携&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://kimulabo.jp/"&gt;flKinect&lt;/a&gt;を作成(cocoaアプリ)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;asでは重いのでできるだけネイティブ（ObjectiveC）で実装。深度のしきい値などはネイティブ側&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;水の中で魚（#Kinect でつぶやくとアイコンが魚になる）が泳いでるのを表現するデモ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;今年のdotFesでもKinect使ってるやる、とのこと。他にも3,4社Kinectつかってるとのこと&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;昨日お願いしての発表だったにも関わらず、内容あるプレゼンでした。&lt;/p&gt;
&lt;p&gt;Kinectとインスタレーションて相性良いなぁ。&lt;/p&gt;
&lt;h5 id="kinect-android31でkinect-rock"&gt;Kinect Android3.1でKinect Rock&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/ksksue"&gt;@ksksue&lt;/a&gt;さん&lt;/p&gt;
&lt;p&gt;さっき頼まれて発表とのことw&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ドライバ等の低層に興味がある（組み込みよりな印象）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Android3.1からUSBをサポート&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;画像情報の転送がサポートされてない等あり、チルトモータとLEDは制御できた&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;デモ：フラワーロックならぬkinectロック&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;１、２時間で仕上げたプレゼンとは思えないちゃんとした内容でした。&lt;/p&gt;
&lt;h5 id="nui--business"&gt;NUI × Business&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://www.amazon.co.jp/KINECT%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E4%B8%AD%E6%9D%91-%E8%96%AB/dp/4798029815/ref=sr_1_9?ie=UTF8&amp;amp;qid=1316843428&amp;amp;sr=8-9"&gt;Kinect本&lt;/a&gt;の著者：中村薫（&lt;a href="http://twitter.com/#!/kaorun55"&gt;@kaorun55&lt;/a&gt;）さんの発表。なかなか結びつきにくいBusinessの話ということでこちらも興味津々。ちなみにNUIというのは&lt;a href="http://en.wikipedia.org/wiki/Natural_user_interface"&gt;こちら&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;本出して環境が変わった。執筆、開発、講演。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;microsoftのSDKだとキャリブレーションがいらない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;microsoftSDK とOpenNIの比較&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実はOpenNIはAndroid対応してる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenNIは正式にkinectをサポートしてる訳ではない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GPL、LGPL&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;windowsSDKは商用利用禁止だけど、将来的にはユーザの声で変えていきたい（microsoftの中の人談）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;検証をいかに自動化するか&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;後半、NUI × Business + Agile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Agileとは？の概要&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jenkins やスクラムまわりの話&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大阪産業会館で&lt;a href="http://kokucheese.com/event/index/16868/"&gt;イベント&lt;/a&gt;がある&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;内容の濃い話でした。ちょっと後半のほうは完全に聞き入って、メモれず。発表資料は&lt;a href="http://www.slideshare.net/kaorun55/20110924-kansai-kinectvol1"&gt;こちら&lt;/a&gt;（なぜかリンクエラー出るので直接表示しておきます。）&lt;/p&gt;
&lt;h5 id="ハッカソン"&gt;ハッカソン&lt;/h5&gt;
&lt;p&gt;とくにテーマもなく１チーム６、７人で分けてハッカソン（というほどでもない感じゆるい雰囲気の）。&lt;/p&gt;
&lt;p&gt;私のチームは、何故か私のコンパイルが通らないというのを色んな方に手伝ってもらって、なんとか進める会になってましたw&lt;/p&gt;
&lt;p&gt;助けていただいた方には感謝しております。&lt;/p&gt;
&lt;h5 id="雑感"&gt;雑感&lt;/h5&gt;
&lt;p&gt;全体的な感想は、やっぱkinectはデモに限る、動かしてなんぼ、っと思いました。ちょっとしたサンプルでも動かしたときの反応の良さは、すごく良いですね。&lt;/p&gt;
&lt;p&gt;あと、&lt;a href="https://groups.google.com/forum/?hl=ja#!forum/kinectkansai"&gt;google group&lt;/a&gt;できたようです。&lt;/p&gt;
&lt;p&gt;また、イベントを開催してくれた@tunemageさんと、会場を提供していただいたクロノス株式会社さんには、感謝感謝です！&lt;/p&gt;
&lt;p&gt;自分のモチベーションのためにもこのイベントが続いていくことを願っております。&lt;/p&gt;</description></item><item><title>Ti.Developers.meeting Vol 0.3 in Kyoto 行ってきた</title><link>https://blog.playispeace.com/278/ti-developers-meeting-vol-03-in-kyoto/</link><pubDate>Sat, 17 Sep 2011 17:25:36 +0000</pubDate><guid>https://blog.playispeace.com/278/ti-developers-meeting-vol-03-in-kyoto/</guid><description>&lt;p&gt;これ（&lt;a href="http://atnd.org/events/19431"&gt;Ti.Developers.meeting Vol 0.3 in Kyoto&lt;/a&gt;,&lt;a href="http://tidevs.me/"&gt;公式？サイト&lt;/a&gt;）に行ってきた。&lt;/p&gt;
&lt;p&gt;サンプル動かしたぐらいのちょー初心者でしたが、勢いで参加したので、内容まとめ。&lt;/p&gt;
&lt;p&gt;会場は、はてな本社。発表会場とオフィスが透明の壁で仕切られてたので、オフィスをちら見しながら聞く！&lt;/p&gt;
&lt;p&gt;進行：上野 正大さん（&lt;a href="http://twitter.com/#!/astronaughts"&gt;@astronaughts&lt;/a&gt;）&lt;/p&gt;
&lt;h5 id="android-バットノウハウつめあわせ"&gt;Android バットノウハウつめあわせ&lt;/h5&gt;
&lt;p&gt;EC studioの&lt;a href="http://twitter.com/#!/twingo_b"&gt;@twingo_b&lt;/a&gt;さん、メインはインフラ。見たことあるなーと思ったら、jaws-ugの大阪支部長でした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;チャットワークのandroid対応をTitaniumで（すでにあったiOS版をベース）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;コードの書き方：app.jsから各WindowごとのコードをTi.include()でinclude、参考サンプルtweetanium&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;起動時に落ちる。app.xmlに追記で対応&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;未定義プロパティはiOSはundefined、Androidはnull。if(sample==undefined) で対応。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;createWindowのあとに、各windowのプロパティを設定しないといけない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cookieが共有がされない。モジュール作るしか無い。（なんと！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;レイアウトがガタガタ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;特定のビューでおちる。iOS専用のコードがある。コード分離して対応&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ScrollViewでScrollしない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WebViewのevalJSが動かない。androidでは、evalJSで複数行の実行ができない。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;リリース時、.svnが原因でDistributeエラー。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;リリース時、WebViewで落ちる。jqueryなど、jsファイルは消える！jsを別拡張子にする。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結論：&lt;strong&gt;TitaniumMobileのソースコードをGitHubからとってきて、ソースコードを見ながら開発する&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;だそうでw&lt;/p&gt;
&lt;p&gt;基本、androidつくってios作ったほうがいい、という意見も。&lt;/p&gt;
&lt;p&gt;「問題にぶつかったときの解決方法は？」という質問したのですが、「やはりソースコードを見る」だそうですw&lt;/p&gt;
&lt;h5 id="windowurlを使わずにプログラミング"&gt;window.urlを使わずにプログラミング&lt;/h5&gt;
&lt;p&gt;ふるかわだいすけさん。なんと！モバイラーズオアシス開発者。今日もお世話になってました！&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;マルチコンテキストの問題、コンテキスト間での共有が難しくなる。例えば、変数の共有はハマりどころ。解決方法はいくつかある。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;シングルコンテキストで解決させる方法の紹介&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ti.include + ブロックスコープ((function());)で、ファイルの分割と親変数の参照が可能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;共有したいオブジェクトはグローバルに宣言&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;requireはお勧めしない？ハマりどころらしい・・・&lt;/p&gt;
&lt;h5 id="ないならつくってみなよipadアプリ"&gt;ないならつくってみなよ、iPadアプリ&lt;/h5&gt;
&lt;p&gt;いしもとこうじ（&lt;a href="http://twitter.com/#!/t32k"&gt;@t32k&lt;/a&gt;）さん&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;モテたい→お金稼ぎたい→売れるアプリ作りたい→売れるアプリ難しい→タイマーアプリ欲しい→デザインで差別化&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;既存アプリはボタンが多い（less is more）タッチジェスチャーだけ、するとフォントが重要なのでオリジナルで&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;結果、タブ・ボタンの無いデザインに→&lt;a href="http://ticktock.t32k.me/"&gt;http://ticktock.t32k.me/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;はまりtips&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;背景画像の繰り返し→モジュールあり&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ボーダーもモジュールあり&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上下のフリックは標準に無く、endies editionのサンプルコードにある&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;木曜（２日前）公開で、販売個数は18（うち7は海外）だそうです。&lt;/p&gt;
&lt;h5 id="はてなカウンティングアプリの裏側"&gt;はてなカウンティングアプリの裏側&lt;/h5&gt;
&lt;p&gt;id:chris4403 栗栖さん（&lt;a href="http://twitter.com/#!/chris4403"&gt;@chris4403&lt;/a&gt;）。webサービスで開発した&lt;a href="http://counter.hatena.ne.jp/"&gt;はてなカウンティング&lt;/a&gt;をiPhoneアプリ化。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;アプリ前とアプリ後で大きくユーザ層が変化。ギークからライトに、かな。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;開発環境：Vim,Git,Xcode。最終Xcodeで実機確認&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;viewとlogicに分けて作成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解析：&lt;a href="https://github.com/rogchap/Titanium-Google-Analytics"&gt;titanium-google-analytics.js&lt;/a&gt; というのがある&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/chris4403+tech/20110128/1296189155"&gt;ブログ&lt;/a&gt;にも書いてるとのこと&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「analyticsはアクション毎に毎回通信？」という質問したところ「まとめてバッチ処理的にしてる。通信の有無の影響はほとんど受けてない。」とのことでした。&lt;/p&gt;
&lt;h5 id="こんどこそtitaniumでアプリをリリースしてみた"&gt;こんどこそTitaniumでアプリをリリースしてみた&lt;/h5&gt;
&lt;p&gt;倉井龍太郎（@kurain）さん、はてなのアプリエンジニア、gihyo.jpも書いてる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;facemashの猫版。ero ratingでランキング化&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;データはサーバ、アプリ側はviewer 。json apiはcontent typeを指定しないと、androidで動かない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サーバどうするか。VPS、Iaas、Paas。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;結論：さくらVPS&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="titaniumでiosandroid同時リリースnifty-serveの事例"&gt;TitaniumでiOS/Android同時リリース：NIFTY-Serveの事例&lt;/h5&gt;
&lt;p&gt;成田　智也（&lt;a href="http://twitter.com/#!/harukazepc"&gt;@harukazepc&lt;/a&gt;）さん。ニフティ株式会社、システム開発部。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.nifty.com/25th/niftyserve/"&gt;Nifty-serve&lt;/a&gt;のスマホ版（iphone/android 両方）をつくろう&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ワンソース、マルチユース、体感40%〜15%減&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;javascriptでwebデベロッパになじみがあって運用しやすい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全ソースの15%がiOS/androidの振り分け&lt;/p&gt;</description></item><item><title>postfixをサブドメインでも使えるようにする</title><link>https://blog.playispeace.com/272/postfix_subdomain/</link><pubDate>Fri, 16 Sep 2011 01:13:40 +0000</pubDate><guid>https://blog.playispeace.com/272/postfix_subdomain/</guid><description>&lt;p&gt;&lt;a href="http://blog.playispeace.com/259/postfix_on_sakuravps/"&gt;以前の記事&lt;/a&gt;で、postfixによるメール設定を行いましたが、sample.com というドメインでmail.sample.comというドメインでの設定でした。同じように、aaa.sample.comやbbb.sample.comでも、また別アカウントでも使えるようにしたいと思います。&lt;/p&gt;
&lt;h5 id="virtual_alias_domainsを設定"&gt;virtual_alias_domainsを設定&lt;/h5&gt;
&lt;p&gt;virtual_alias_domainsを使います&lt;/p&gt;
&lt;h1 id="vi-etcpostfixmaincf"&gt;vi /etc/postfix/main.cf&lt;/h1&gt;
&lt;p&gt;設定ファイルは何でもいいようなので、とりあえず、/etc/postfix/virtual　にしてみます。&lt;/p&gt;
&lt;p&gt;virtual_alias_maps=hash:/etc/postfix/virtual&lt;/p&gt;
&lt;p&gt;保存を変更したら、実際に作成します。&lt;/p&gt;
&lt;h1 id="vi-etcpostfixvirtual"&gt;vi /etc/postfix/virtual&lt;/h1&gt;
&lt;p&gt;以下のように設定すると、&lt;/p&gt;
&lt;p&gt;mail1＠aaa.sample.com mail1&lt;/p&gt;
&lt;p&gt;mail2＠bbb.sample.com mail2&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;mail1＠aaa.sample.com というアドレスに送信すると、mail1＠sample.comに転送&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mail2＠bbb.sample.com というアドレスに送信すると、mail2＠sample.comに転送&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という状態になります。（＠は全角に変えてます）&lt;/p&gt;
&lt;p&gt;設定反映させて、完了&lt;/p&gt;
&lt;h1 id="postmap-etcpostfixvirtual"&gt;postmap /etc/postfix/virtual&lt;/h1&gt;</description></item><item><title>空メール用にメールサーバ（postfix）をさくらVPSに立てる</title><link>https://blog.playispeace.com/259/postfix_on_sakuravps/</link><pubDate>Thu, 15 Sep 2011 14:43:12 +0000</pubDate><guid>https://blog.playispeace.com/259/postfix_on_sakuravps/</guid><description>&lt;p&gt;携帯からの空メールや、添付写真送信等の用途でのメールサーバを立てていきます。&lt;/p&gt;
&lt;p&gt;主にこちらを参考にしています。（&lt;a href="http://centossrv.com/postfix.shtml"&gt;メールサーバー構築(Postfix+Dovecot)&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;いつもお世話になっております！&lt;/p&gt;
&lt;h5 id="postfixのインストール"&gt;postfixのインストール&lt;/h5&gt;
&lt;p&gt;仮にmail.server.com というhost名で立てる想定で進めます。&lt;/p&gt;
&lt;h1 id="yum--y-install-postfix"&gt;yum -y install postfix&lt;/h1&gt;
&lt;p&gt;設定ファイルを修正&lt;/p&gt;
&lt;h1 id="vi-etcpostfixmaincf"&gt;vi /etc/postfix/main.cf&lt;/h1&gt;
&lt;p&gt;追加(自FQDN名を指定)します&lt;/p&gt;
&lt;p&gt;myhostname = mail.server.com&lt;/p&gt;
&lt;p&gt;追加(自ドメイン名を指定)&lt;/p&gt;
&lt;p&gt;mydomain = server.com&lt;/p&gt;
&lt;p&gt;追加(ローカルからのメール送信時の送信元メールアドレス@以降にドメイン名を付加)&lt;/p&gt;
&lt;p&gt;myorigin = $mydomain&lt;/p&gt;
&lt;p&gt;変更(外部からのメール受信を許可)&lt;/p&gt;
&lt;p&gt;inet_interfaces = all&lt;/p&gt;
&lt;p&gt;変更(自ドメイン宛メールを受信できるようにする)&lt;/p&gt;
&lt;p&gt;mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain&lt;/p&gt;
&lt;p&gt;追加(メールサーバーソフト名の隠蔽化)&lt;/p&gt;
&lt;p&gt;smtpd_banner = $myhostname ESMTP unknown&lt;/p&gt;
&lt;p&gt;以下を最終行へ追加(受信メールサイズを10MBに制限)&lt;/p&gt;
&lt;p&gt;message_size_limit = 10485760&lt;/p&gt;
&lt;p&gt;参考にしているリンク先にあるような、SMTP-authやメールボックスは不要と考え、省いています。&lt;/p&gt;
&lt;h5 id="postfix起動"&gt;Postfix起動&lt;/h5&gt;
&lt;p&gt;sendmail停止し、&lt;/p&gt;
&lt;h1 id="etcrcdinitdsendmail-stop"&gt;/etc/rc.d/init.d/sendmail stop&lt;/h1&gt;
&lt;p&gt;自動起動も停止しておきます。&lt;/p&gt;
&lt;h1 id="chkconfig-sendmail-off"&gt;chkconfig sendmail off&lt;/h1&gt;
&lt;p&gt;システムで使用するメールサーバー機能をsendmailからPostfixに切替えます。&lt;/p&gt;
&lt;p&gt;2をいれてEnterします。&lt;/p&gt;
&lt;h1 id="alternatives-config-mta"&gt;alternatives –config mta&lt;/h1&gt;
&lt;p&gt;There are 2 programs which provide ‘mta’.&lt;/p&gt;
&lt;p&gt;Selection Command&lt;/p&gt;
&lt;p&gt;———————————————–&lt;/p&gt;
&lt;p&gt;*+ 1 /usr/sbin/sendmail.sendmail&lt;/p&gt;
&lt;p&gt;2 /usr/sbin/sendmail.postfix&lt;/p&gt;
&lt;p&gt;Enter to keep the current selection[+], or type selection number: 2&lt;/p&gt;</description></item><item><title>rootでcronしたらsudo: sorry, you must have a tty to run sudo ってでる対策</title><link>https://blog.playispeace.com/251/cron_erro_by_root/</link><pubDate>Wed, 14 Sep 2011 00:00:00 +0900</pubDate><guid>https://blog.playispeace.com/251/cron_erro_by_root/</guid><description>&lt;p&gt;タイトルどおり、とりあえずの対策&lt;/p&gt;
&lt;h5 id="etcsudoersを編集"&gt;/etc/sudoersを編集&lt;/h5&gt;
&lt;p&gt;visudo で編集するらしいがrootでやればviで可能&lt;/p&gt;
&lt;h1 id="vi-etcsudoers"&gt;vi /etc/sudoers&lt;/h1&gt;
&lt;p&gt;以下の行をコメントアウトする&lt;/p&gt;
&lt;p&gt;Defaults requiretty&lt;/p&gt;
&lt;p&gt;　　　↓&lt;/p&gt;
&lt;p&gt;#Defaults requiretty&lt;/p&gt;
&lt;h5 id="参考"&gt;参考&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://memo358.blog18.fc2.com/blog-entry-32.html"&gt;cronでsudoするには&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://blog.cles.jp/item/2919"&gt;sudoが「sudo: sorry, you must have a tty to run sudo」と文句を言うときは&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="おまけ"&gt;おまけ&lt;/h5&gt;
&lt;p&gt;そもそもrootでcronするような設計がまずい気がしないでもない、、、&lt;/p&gt;</description></item><item><title>pamを使ってSSHをIP制限する方法</title><link>https://blog.playispeace.com/234/restric_ssh_ip_using_pam/</link><pubDate>Mon, 12 Sep 2011 16:14:36 +0000</pubDate><guid>https://blog.playispeace.com/234/restric_ssh_ip_using_pam/</guid><description>&lt;p&gt;&lt;a href="http://www.itmedia.co.jp/help/tips/linux/l0230.html"&gt;pam&lt;/a&gt;という認証プログラムを使って、SSHするサーバをIPで制限する方法です。&lt;/p&gt;
&lt;h5 id="前提"&gt;前提&lt;/h5&gt;
&lt;p&gt;例）&lt;/p&gt;
&lt;p&gt;hogehogeというユーザでSSHするIPを&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;aaa.aaa.aaa.aaa&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;bbb.bbb.bbb.bbb&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;にだけに許可する方法。&lt;/p&gt;
&lt;h5 id="設定"&gt;設定&lt;/h5&gt;
&lt;p&gt;/etc/pam.d/sshd に以下を追記する&lt;/p&gt;
&lt;p&gt;account required pam_access.so accessfile=/etc/security/access_login.conf&lt;/p&gt;
&lt;p&gt;アクセス制限するファイルを/etc/security/access_login.conf　と指定します。ここはなんでもいいので、好きなように変更可能。&lt;/p&gt;
&lt;p&gt;で、指定した　/etc/security/access_login.conf　内を&lt;/p&gt;
&lt;p&gt;+:hogehoge: aaa.aaa.aaa.aaa. bbb.bbb.bbb.bbb.&lt;/p&gt;
&lt;p&gt;-:ALL: ALL&lt;/p&gt;
&lt;p&gt;「aaa.aaa.aaa.aaa.」というように、指定したIPの最後に「.」をつけるように！&lt;/p&gt;
&lt;p&gt;これで、hogehogeというユーザでのログインは、aaa.aaa.aaa.aaa とbbb.bbb.bbb.bbbからしかログイン出来なくなります。&lt;/p&gt;</description></item><item><title>さくらVPSの環境構築でお世話になったURLまとめ</title><link>https://blog.playispeace.com/227/sakuravps_setup_url/</link><pubDate>Sat, 10 Sep 2011 14:38:28 +0000</pubDate><guid>https://blog.playispeace.com/227/sakuravps_setup_url/</guid><description>&lt;p&gt;環境構築はなかなかすんなりいかないものですので、いつもぐぐって解決させてますが、そんなときに助けてもらっているURLをまとめておきます。&lt;/p&gt;
&lt;p&gt;まずは最初の下準備&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weble.org/2011/05/16/sakura-vps-and-centos"&gt;はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;rootでのログイン禁止&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wiki.minaco.net/index.php?Linux%2Froot%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%A6%81%E6%AD%A2"&gt;rootによるログインを禁止&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FTPをyumインストール&lt;/p&gt;
&lt;p&gt;&lt;a href="http://saba.nitty-gritty.org/250ftp/ftp.html"&gt;FTPサーバのインストール（Linux）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;昔っからお世話になりまくってる。環境構築全般&lt;/p&gt;
&lt;p&gt;&lt;a href="http://centossrv.com/"&gt;CentOSで自宅サーバー構築&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;httpd.conf でベーシック認証&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.atmarkit.co.jp/flinux/rensai/apache10/apache10b.html"&gt;ユーザー認証によるアクセス制限（ベーシック認証編）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;mysqlデータ移行が必要なら&lt;/p&gt;
&lt;p&gt;&lt;a href="http://napzak.com/tips/index.php?MySQL%E3%81%AE%E3%83%80%E3%83%B3%E3%83%97%EF%BC%88%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%EF%BC%89%E3%80%81%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%80%81%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97"&gt;MySQLのダンプ（エクスポート）、インポート、バックアップ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;バーチャルホストでリダイレクト&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.noiri.net/archives/2006/01/virtualhost.html"&gt;virtualhostを使ったリダイレクト&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不正アクセスを自動でhosts.deny に追加&lt;/p&gt;
&lt;p&gt;&lt;a href="http://epidemic.jp/2010/09/25/denyhosts-on-sakura-vps/"&gt;さくらのVPSで絶対最初に入れてほしいセキュリティソフト&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Developers Summit in Kansai 行ってきた</title><link>https://blog.playispeace.com/208/developers-summit-201-kansai/</link><pubDate>Wed, 07 Sep 2011 15:26:17 +0000</pubDate><guid>https://blog.playispeace.com/208/developers-summit-201-kansai/</guid><description>&lt;p&gt;行ってきたので内容まとめ。&lt;/p&gt;
&lt;h5 id="スマートデバイスとクラウドが実現するソフトウェアの革新上陸したwindows-phone7-と-kinnect-によるar世界の実現"&gt;スマートデバイスとクラウドが実現するソフトウェアの革新〜上陸したWindows Phone7 と Kinnect によるAR世界の実現〜&lt;/h5&gt;
&lt;p&gt;発表者の西脇氏が、マイクロソフト株式会社　テクニカル・ソリューション・エバンジェリスト　というだけあって、マイクロソフトごりごりな内容。自分のアンテナには無い内容だったので、マイクロソフトも色々やってますねって言う印象。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;マイクロソフトもクラウドやってるよ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;officeとの相性はそりゃいい。データロス無し。これ→&lt;a href="http://www.microsoft.com/ja-jp/office365/what-is-office365.aspx"&gt;office365&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;エクセルとかをアップロード、PCやスマートフォン（windows phone7）から複数人でのリアルタイム編集&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;windowsXP中国語office無しでも、IEで開いたら中国語でそのエクセル見れる&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="windows-phone7とiphoneとの違い"&gt;windows phone7とiphoneとの違い&lt;/h6&gt;
&lt;p&gt;iphoneのホームはアプリ一覧。wp7のホームはタイル一覧。つまり目的別。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;iphone:Aさんとコミュニケーションとりたい→アプリを選ぶ→人を選ぶ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;windows phone7:Aさんとコミュニケーションとりたい→人を選ぶ→アプリを選ぶ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;人間中心デザインである&lt;/strong&gt;とのこと&lt;/p&gt;
&lt;p&gt;kinnect使ったAR、バーチャルフィッティングルームおもろかったー。鞄を右手左手持ち替えたり、違う鞄に切り替えたり、そのままオーダーとか。アメリカ、ヨーロッパではすでに実用化されてるとのこと。&lt;/p&gt;
&lt;p&gt;あとプレゼンの本出してるらしく、プレゼンがすんごいスムーズに進めてました。すばらしかった。&lt;/p&gt;
&lt;h5 id="html5でwebはどう変わるのか"&gt;HTML5でWebはどう変わるのか？&lt;/h5&gt;
&lt;h6 id="html5の概要の話"&gt;HTML5の概要の話&lt;/h6&gt;
&lt;p&gt;HTML5の障壁の一つ、それがIE6（&lt;a href="http://www.ie6countdown.com/"&gt;http://www.ie6countdown.com/&lt;/a&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;よりセマンティックに（＝意味付け）。タグに意味を持たせる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;レンダリングエンジン、Trident,Webkit,Gecko,Prestoがあるが、同じマークアップで同じ表示になるべき&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;サンプル紹介&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;SVG:&lt;a href="http://jsdo.it/event/svggirl"&gt;SVG女子&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;geo location api :&lt;a href="http://fsplayground.cloudapp.net/"&gt;foursqure playground&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;web font api,video api: &lt;a href="http://www.theshodo.com/"&gt;書道&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基本的なHTML５の話、これまで見てきたHTML5の講演とかと内容は同じだった印象。&lt;/p&gt;
&lt;h5 id="次世代ジオロケーションサービスの開発手法"&gt;次世代ジオロケーション　サービスの開発手法&lt;/h5&gt;
&lt;p&gt;ロケーションサービスの概要&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;位置情報&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;メタデータ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;収集・分析&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="次世代ジオロケーションとは"&gt;次世代ジオロケーションとは？&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;リアルタイム&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;クラウド&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ソーシャル&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="yolpyahoo-open-local-platform"&gt;YOLP(yahoo open local platform)&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://developer.yahoo.co.jp/webapi/map/"&gt;http://developer.yahoo.co.jp/webapi/map/&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Yahoo!ロコの地図データ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ローカルサーチAPI&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/getgid.html"&gt;店舗名寄せAPI&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="データストレージ"&gt;データストレージ&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ユーザデータのホスティング→検索APIの提供&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;オープンな位置情報データリポジトリ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;チェックインAPI を近日公開予定&lt;/p&gt;
&lt;h6 id="開発例"&gt;開発例&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ラーメン屋ヒートマップ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マクドナルドナビゲーション&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちょっと発表者の方がもごもご話されて聞き取りにくかった。&lt;/p&gt;
&lt;h5 id="終わり"&gt;終わり&lt;/h5&gt;
&lt;p&gt;あと、２講演あったけど、聞きたそうな内容ではなかったので、退散〜&lt;/p&gt;</description></item><item><title>7/10 facebook勉強会でのLT資料公開</title><link>https://blog.playispeace.com/203/cakephp_plugin_for_facebook/</link><pubDate>Sat, 23 Jul 2011 15:06:15 +0000</pubDate><guid>https://blog.playispeace.com/203/cakephp_plugin_for_facebook/</guid><description>&lt;p&gt;遅ればせながら公開します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/YokotaEiji/cakephp-plugin-forfacebook"&gt;Cakephp plugin for_facebook&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/YokotaEiji"&gt;Yokota Eiji&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;以下、余談。&lt;/p&gt;
&lt;p&gt;発表直前に自宅サーバがお亡くなりになり、復旧作業をずるずるとここまで引っ張ってしまいました。すいません。。。実は、まだ、完全復旧はできておりません。&lt;/p&gt;
&lt;p&gt;元々は自宅サーバでこのブログや&lt;a href="http://twitter.com/tukkomimura"&gt;@tukkomimura&lt;/a&gt; というbotを動かしていました。で、ハード的な故障っぽかったので、さくらVPSにお引っ越ししました。ところが、このbotを動かすのに&lt;a href="http://mecab.sourceforge.net/"&gt;mecab&lt;/a&gt;というソフトとphpとの連携が何故かうまくいかず。。。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html"&gt;yahoo テキスト解析api&lt;/a&gt; を使うという手もあるのですが、、、なんとか自分とこのサーバで完結したい＞＜&lt;/p&gt;</description></item><item><title>地図検索サービスを公開</title><link>https://blog.playispeace.com/201/event_map/</link><pubDate>Mon, 18 Jul 2011 21:00:22 +0000</pubDate><guid>https://blog.playispeace.com/201/event_map/</guid><description>&lt;p&gt;地図検索サービスを公開をしちゃいます。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://playispeace.com/event_map/"&gt;地図検索サービス&lt;/a&gt;&lt;/p&gt;</description></item><item><title>mysqlでスロークエリをチェック</title><link>https://blog.playispeace.com/184/mysql_slowquery_setting/</link><pubDate>Mon, 30 May 2011 23:13:06 +0000</pubDate><guid>https://blog.playispeace.com/184/mysql_slowquery_setting/</guid><description>&lt;p&gt;パフォーマンスネタを暫く続けようかと思い立ったので、まずはmysqlから。&lt;/p&gt;
&lt;p&gt;mysqlの場合、スロークエリを無くすことが一つの指標になりますので、まずはチェックできる環境を構築します。（mysql5.5で実施）&lt;/p&gt;
&lt;h5 id="スロークエリ設定"&gt;スロークエリ設定&lt;/h5&gt;
&lt;p&gt;mysqlといえばこのブログ、漢のコンピュータ道。いつも勉強させてもらってます。そこの「&lt;a href="http://nippondanji.blogspot.com/2009/01/mysql-51.html"&gt;MySQL 5.1のスロークエリログ&lt;/a&gt;」を参考にして、&lt;/p&gt;
&lt;p&gt;[mysqld]&lt;/p&gt;
&lt;p&gt;slow_query_log=ON&lt;/p&gt;
&lt;p&gt;slow_query_log_file=mysql-slow.log&lt;/p&gt;
&lt;p&gt;long_query_time=0&lt;/p&gt;
&lt;p&gt;まずは試しにlong_query_time=0にして動作チェックしてみる。&lt;/p&gt;
&lt;p&gt;この設定をmysql再起動して反映。&lt;/p&gt;
&lt;p&gt;#/etc/rc.d/init.d/mysqld stop&lt;/p&gt;
&lt;p&gt;#/etc/rc.d/init.d/mysqld start&lt;/p&gt;
&lt;p&gt;restartでも問題ないと思いますが念のため。&lt;/p&gt;
&lt;p&gt;ていうか、mysql-slow.logってどこなの？と思い探してみる。&lt;/p&gt;
&lt;p&gt;find / -name mysql-slow.log&lt;/p&gt;
&lt;p&gt;ここにありました。&lt;/p&gt;
&lt;p&gt;/usr/local/src/mysql-5.5.11-linux2.6-i686/data/mysql-slow.log&lt;/p&gt;
&lt;p&gt;ちなみにmysql5.5はソースからインストールしました。で適当にアクセスしてみてみて、mysql-slow.logにごにょごにょ追記されているのを確認。じゃ、ファイルじゃなくてテーブルに保存してみる。&lt;/p&gt;
&lt;p&gt;[mysqld]&lt;/p&gt;
&lt;p&gt;slow_query_log=ON&lt;/p&gt;
&lt;p&gt;long_query_time=0&lt;/p&gt;
&lt;p&gt;log_output=TABLE&lt;/p&gt;
&lt;p&gt;最初保存されるテーブルがどこにあるか分かりませんでしたが、mysqlというDBにshow_logテーブルを発見。中を見るといきなり１０００件を越すレコードががが。long_query_timeを現実的に0.1にすると、止まりました。&lt;/p&gt;
&lt;h5 id="結果"&gt;結果&lt;/h5&gt;
&lt;p&gt;まだまだレコード数もなけりゃアクセスもないので、0.1秒を越すようなクエリは無いってことですなー。&lt;/p&gt;
&lt;h5 id="補足"&gt;補足&lt;/h5&gt;
&lt;p&gt;さすがに0.01になると以下のクエリが引っかかりました。&lt;/p&gt;
&lt;p&gt;select * from followers where tukkomi_flg=0 and delete_flg=0 order by rand() limit 0,1&lt;/p&gt;
&lt;p&gt;これはwordpressじゃなくて&lt;a href="http://twitter.com/tukkomimura"&gt;@tukkomimura&lt;/a&gt;のクエリｗ やはりrand()は重いようですね。。。あと*指定も改善の余地あり＞＜&lt;/p&gt;</description></item><item><title>「連ツイ」リリース</title><link>https://blog.playispeace.com/178/rentwi/</link><pubDate>Mon, 23 May 2011 01:58:08 +0000</pubDate><guid>https://blog.playispeace.com/178/rentwi/</guid><description>&lt;p&gt;連続一文字ツイート「連ツイ」作りました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://playispeace.com/rentwi/"&gt;連ツイ&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="動機"&gt;動機&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://playispeace.com/rentwi/lighter.png"&gt;画像未復旧: lighter.png&lt;/a&gt;←このボタンを勉強に作ってみたくて、それきっかけで手頃なサービス無いかなーと思い作りました。&lt;/p&gt;
&lt;h5 id="作り方"&gt;作り方&lt;/h5&gt;
&lt;p&gt;概要ですがざっと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dev.twitter.com/"&gt;ここ(https://dev.twitter.com/)&lt;/a&gt;でアプリケーション登録しましょう。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitterのoauth用ライブラリを取得。gitの場合→git clone git://github.com/abraham/twitteroauth.git&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauthの中にあるサンプルソースを参考に、作る&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="twitteroauthの概要"&gt;twitteroauthの概要&lt;/h5&gt;
&lt;p&gt;参考にしたサンプルの概要です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/config.php ： 登録したアプリのConsumer key,Consumer secretと、callback先のURLを設定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/connect.php ： 最初の画面。&lt;a href="http://playispeace.com/rentwi/lighter.png"&gt;画像未復旧: lighter.png&lt;/a&gt;←このボタンがある画面&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/redirect.php ： ボタンのクリック先の処理。twitter.comの承認画面にリダイレクト&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/callback.php ： 承認から帰ってくる遷移先。index.phpにリダイレクト（config.phpで設定）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/index.php ： 認証後の画面&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/clearsessions.php ： セッションを削除&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitteroauth/twitteroauth/ ： OauthとツイッターAPI用のライブラリのあるディレクトリ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DBもいらないのでPHPだけですね。セッション（$_SESSION）を利用しているので、保持する値がどこでどう使われてるか、がポイントです。&lt;/p&gt;
&lt;h5 id="終わりに"&gt;終わりに&lt;/h5&gt;
&lt;p&gt;忘れかけてたのもあるのですが、Oauthへの理解も深まってよかったかなと思います。&lt;/p&gt;</description></item><item><title>SSHの公開鍵と秘密鍵の関係</title><link>https://blog.playispeace.com/145/ssh_publickey_login/</link><pubDate>Mon, 09 May 2011 02:16:04 +0000</pubDate><guid>https://blog.playispeace.com/145/ssh_publickey_login/</guid><description>&lt;p&gt;ID/パスワードなしでログインできるしセキュリティも向上するしで、SSHの公開鍵認証によるログインはお勧めです。&lt;/p&gt;
&lt;p&gt;ですが、いまいち公開鍵と秘密鍵って？？とか、どっちで鍵生成するんやったっけ？？って、いつも分からなくなるので図示してみました。&lt;/p&gt;
&lt;h5 id="ssh鍵生成"&gt;SSH鍵生成&lt;/h5&gt;
&lt;p&gt;まずは鍵生成で分からなくなるのが、どっち（サーバ/クライアント）で鍵を生成して、どっち（公開/秘密）の鍵を移動するのか。&lt;/p&gt;
&lt;p&gt;クライアント（ログイン元）が左側で、サーバ（ログイン先）が右側とします。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/images/ssh_key_gen.png"&gt;画像未復旧: ssh鍵生成&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;クライアント（ログイン元）で鍵生成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公開鍵をサーバに移動（クライアント側には公開鍵は不要）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公開鍵を~/.ssh/authorized_keys に追記&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このときauthorized_keysの権限も確認します。600になっていなければ、変えておきます。&lt;/p&gt;
&lt;p&gt;chmod 600 authorized_keys&lt;/p&gt;
&lt;p&gt;※Windowsだとちょっと生成方法とか違うので、クライアントもサーバもlinuxベースで考えてます。&lt;/p&gt;
&lt;h5 id="ssh公開鍵認証"&gt;SSH公開鍵認証&lt;/h5&gt;
&lt;p&gt;で、実際、公開鍵認証するときの概要も図示してみました。（参考：&lt;a href="http://www.jitaku-server.net/ssh_crypto.html"&gt;公開鍵暗号でSSHのセキュリティを高める&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/images/ssh_key_login.png"&gt;画像未復旧: ssh鍵ログイン&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="まとめ"&gt;まとめ&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;鍵の生成はクライアント&lt;/strong&gt;で&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;公開鍵&lt;/strong&gt;を&lt;strong&gt;サーバのauthorized_keysに追加&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;関係ないですが、こうゆう図を書くのに&lt;a href="http://cacoo.com/"&gt;Cacoo&lt;/a&gt;使ってみたのですが、なかなか使えそうです。イラレとかなくてもある程度必要な図がすでにあるのでいいですね。&lt;/p&gt;
&lt;h6 id="参考"&gt;参考&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://www14.plala.or.jp/campus-note/vine_linux/server_ssh/ssh_key.html"&gt;鍵交換方式による認証&lt;/a&gt;&lt;/p&gt;</description></item><item><title>三村botを復活させました</title><link>https://blog.playispeace.com/110/about_tukkomimura/</link><pubDate>Thu, 05 May 2011 17:07:11 +0000</pubDate><guid>https://blog.playispeace.com/110/about_tukkomimura/</guid><description>&lt;p&gt;サーバが止まって以来三村bot(&lt;a href="http://twitter.com/#!/tukkomimura"&gt;@tukkomimura&lt;/a&gt;)も止まっていたのですが、復活させました。簡単に三村botをご紹介。&lt;/p&gt;
&lt;h5 id="そもそもbotとは"&gt;そもそもbotとは？&lt;/h5&gt;
&lt;p&gt;twitter上でプログラムで動くアカウントのことです。色んなbotが存在します。&lt;/p&gt;
&lt;h5 id="三村botって"&gt;三村botって？&lt;/h5&gt;
&lt;p&gt;さまぁ〜ずの三村にインスパイアされて作ったbotです。&lt;/p&gt;
&lt;p&gt;特徴は：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;あなたのつぶやきにツッコミます&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ボケてなくてもツッコミます&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例えばこんな感じです。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/#!/tukkomimura/status/66021072327286784"&gt;@LEGZAS23 だんでだよ！ RT 久しぶりに2時まで寝てしまった&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ツッコミ噛むのかよ！&lt;/p&gt;
&lt;p&gt;・・・と、言いたくなりますね。色んな突っ込みしてくれるので、どう突っ込まれるかはフォローしてからのお楽しみということで。&lt;/p&gt;
&lt;p&gt;また、作るときに、気をつけたのは、つっこまない条件です。それは以下、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;同じツイートにつっこまない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;リプライツイートにつっこまない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RT付きツイートにつっこまない&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同じツイートにつっこんだらうっとうしいですよね。なので避けました。またリプライやRTのあるつっこみにツイートすると、フォロワーでないアカウントにつぶやいちゃう可能性があるので、それも避けました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/115/how_to_tukkomimura/"&gt;次のエントリ&lt;/a&gt;で技術的な話も紹介してますので、興味のある方はこちらもどうぞ。&lt;/p&gt;</description></item><item><title>三村botの作り方</title><link>https://blog.playispeace.com/115/how_to_tukkomimura/</link><pubDate>Thu, 05 May 2011 00:00:00 +0900</pubDate><guid>https://blog.playispeace.com/115/how_to_tukkomimura/</guid><description>&lt;p&gt;&lt;a href="https://blog.playispeace.com/110/about_tukkomimura/"&gt;先のエントリー&lt;/a&gt;で三村botの復活をお知らせしましたが、その作り方をご紹介&lt;/p&gt;
&lt;h5 id="環境"&gt;環境&lt;/h5&gt;
&lt;p&gt;用意したものは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;twitterアカウントとOauth認証キー&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;phpとmysqlとcron&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mecab&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="twitterアカウントとoauth認証キー"&gt;twitterアカウントとOauth認証キー&lt;/h5&gt;
&lt;p&gt;まずbot用のアカウントを用意します。&lt;/p&gt;
&lt;p&gt;そして、ここ(&lt;a href="https://dev.twitter.com/"&gt;https://dev.twitter.com/&lt;/a&gt;)でアプリケーション登録すると、Oauth認証に必要な各値(Consumer key,Consumer secret,Access Token,Access Token Secret)が取得できます。これらをメモっておきます。&lt;/p&gt;
&lt;h5 id="phpとmysqlとcron"&gt;phpとmysqlとcron&lt;/h5&gt;
&lt;p&gt;LAMP環境であればだいたい揃いますね。別にwebサーバは無くていいです。&lt;/p&gt;
&lt;p&gt;また、&lt;a href="https://github.com/abraham/twitteroauth"&gt;TwitterのOatuh認証用ライブラリ&lt;/a&gt;も利用します。&lt;/p&gt;
&lt;h5 id="mecab"&gt;mecab&lt;/h5&gt;
&lt;p&gt;三村botのつっこみは、フォロワーのツイートから単語（名詞）を抽出してつっこむパターンがあります。この名詞抽出部分で&lt;a href="http://mecab.sourceforge.net/"&gt;mecab&lt;/a&gt;を利用します。形態素解析というやつですね。&lt;/p&gt;
&lt;p&gt;また、&lt;a href="http://www.opendogs.org/pub/php_mecab-0.4.0.tgz"&gt;php-mecab連携のライブラリ&lt;/a&gt;を作ってくださった方がいるのでありがたく利用させていただきます。&lt;/p&gt;
&lt;p&gt;インストール方法については、「php mecab」あたりでぐぐると出ますので、そちらにお任せします。&lt;/p&gt;
&lt;h5 id="設計指針"&gt;設計指針&lt;/h5&gt;
&lt;p&gt;一応つっこむツイートはランダムにはしたいけど、できるだけフォロワー全員を突っ込むよう工夫してます。&lt;/p&gt;
&lt;p&gt;フォローしたのにつっこんでくれないよう＞＜、みたいことは避けたいなとw&lt;/p&gt;
&lt;h5 id="処理概要フロー"&gt;処理概要フロー&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;（全員つっこみ終わってたら）フォロワー一覧取得&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ランダムに一人のフォロワーを選んで、最新つぶやき取得&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;そのつぶやきからつっこむツイート生成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;つっこみポスト&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記処理を毎分cronで走らせてます。&lt;/p&gt;
&lt;h5 id="注意"&gt;注意&lt;/h5&gt;
&lt;p&gt;気をつけないといけない&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;twitter APIが350回/hの制限があること&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;twitter APIの返りに必ずデータが入ってないこと&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こんな不安定なの？ってぐらいAPIは信用できませんw&lt;/p&gt;
&lt;p&gt;それを元に設計しないと、構想してたのができねー、ってなるので注意です。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.twitter.com/doc"&gt;twitter API（本家）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt"&gt;twitter API(日本語)&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="まとめ"&gt;まとめ&lt;/h5&gt;
&lt;p&gt;以前作ったときは、まだbasic認証だったのとAPI制限も60/hだったので、その頃とは少し詳細仕様が変えました。より理想に近い形にはなったかなーと。&lt;/p&gt;
&lt;p&gt;そのうちプログラムはgithubで管理したいなーと思ってますので、できたら追記しておきます。&lt;/p&gt;</description></item><item><title>webなボタンを集めてみた</title><link>https://blog.playispeace.com/97/collection_web_buttons/</link><pubDate>Sat, 30 Apr 2011 12:56:09 +0000</pubDate><guid>https://blog.playispeace.com/97/collection_web_buttons/</guid><description>&lt;p&gt;webには、なんたらボタンていっぱいありますね。ブックマークだ、ソーシャルだと、、、。で、それを集めたらおもろいかなー１コンテンツにならんかなー、と思ってページ作ってみました。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.playispeace.com/web_buttons/"&gt;webなボタン集&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;で、集めだして気づいたのは、同じ機能のボタンでも画像が違うかったり、同じサービスでも色んな機能のボタンがあったり、と、キリがねぇーってなりました。&lt;/p&gt;
&lt;p&gt;それで、重複してるの除いたり、メジャーじゃないやつ（僕が知らないやつw）を除いたりしてると、意外と少ないなーとw&lt;/p&gt;
&lt;p&gt;今後も、新しいボタン見つけたらどんどん追加予定です。気に入ったらぽちぽちボタン押してね＞＜&lt;/p&gt;</description></item><item><title>バッチ処理が重複するのを避ける方法</title><link>https://blog.playispeace.com/40/stop_run_batch_duplicate/</link><pubDate>Wed, 27 Apr 2011 16:40:34 +0000</pubDate><guid>https://blog.playispeace.com/40/stop_run_batch_duplicate/</guid><description>&lt;p&gt;例えば、1分毎に走らせてるバッチ処理があり、1分後にまだその処理が終わってない場合、同じ処理が重複して実行されてしまいます。これを避ける方法として、同じ処理が走ってるかどうかチェックする機能を実装しました。&lt;/p&gt;
&lt;h5 id="バッチ処理の重複実行を回避するシェルスクリプト"&gt;バッチ処理の重複実行を回避するシェルスクリプト&lt;/h5&gt;
&lt;p&gt;シェルスクリプトがphpファイルを実行する例(このソースは&lt;a href="https://gist.github.com/1213293"&gt;gist&lt;/a&gt;でも管理しています。)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#!/bin/sh
exec_file=&amp;#39;/full/path/to/exec_file_name.php&amp;#39;
pid=`pgrep -f $exec_file`

#if not running
if [ -z $pid ] ; then
        echo &amp;#34;Done!!&amp;#34;
        php $exec_file
#don&amp;#39;t exec
else
        echo &amp;#34;canceled&amp;#34;
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ポイントは、pgrepコマンドで、実行ファイル名を含んでいる処理のプロセスIDを取得していること。マッチしない場合は、空になるので、if内の条件が真になり実行されます。&lt;/p&gt;
&lt;p&gt;また、文字列によるあいまい検索なので、実行ファイル名(exec_file)はフルパスを推奨します。&lt;/p&gt;
&lt;h5 id="検証方法"&gt;検証方法&lt;/h5&gt;
&lt;p&gt;動作の検証ですが、実行するphp内でsleep使って止めてみました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、出力結果をファイルに吐き出すようにcronに設定して、&lt;/p&gt;
&lt;p&gt; */1 * * * * sh /path/to/test.sh 1&amp;raquo; /tmp/test.php.1.log&lt;/p&gt;
&lt;p&gt;出力結果が以下のようになったので、OKかな。&lt;/p&gt;
&lt;p&gt;・・・&lt;/p&gt;
&lt;p&gt;Done!!&lt;/p&gt;
&lt;p&gt;20110427 16:38:01&lt;/p&gt;
&lt;p&gt;canceled&lt;/p&gt;
&lt;p&gt;Done!!&lt;/p&gt;
&lt;p&gt;20110427 16:40:01&lt;/p&gt;
&lt;p&gt;canceled&lt;/p&gt;
&lt;p&gt;Done!!&lt;/p&gt;
&lt;p&gt;20110427 16:42:01&lt;/p&gt;
&lt;p&gt;canceled&lt;/p&gt;
&lt;p&gt;・・・&lt;/p&gt;
&lt;p&gt;Done!! とcanceledが交互に出力されてるのが分かります。&lt;/p&gt;</description></item><item><title>jawsug大阪勉強会行ってきた</title><link>https://blog.playispeace.com/30/jawsug_osaka/</link><pubDate>Sat, 23 Apr 2011 13:51:51 +0000</pubDate><guid>https://blog.playispeace.com/30/jawsug_osaka/</guid><description>&lt;p&gt;行ってきました。&lt;a href="http://atnd.org/events/14351"&gt;jawsug大阪勉強会&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;多分スライドとか探せばwebにあるんだろうけど、自分の言葉でのメモをば。&lt;/p&gt;
&lt;h5 id="エバンジェリスト玉川さんのお話"&gt;エバンジェリスト玉川さんのお話&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;リージョン内にゾーンがある&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ライセンス量も時間課金内に含まれる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Amazon RDS ＝mysql 自動オートスケーリングで、ゾーン間で同期、フェイルオーバしてくれる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;EBS＝ オンラインストレージ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;S3＝バケットというものにあらゆるデータを保存、データ保存料に応じて課金、３重バックアップ。静的コンテンツの公開サーバとして利用可能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SimpleDB ＝NoSql&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Elastic IP＝固定IP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Route 53 一ドメイン１月約１ドル&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;感想としては、これ&lt;/p&gt;
&lt;p&gt;AWSって色んなことが出来過ぎるので何をしたらいいかわからないと思っている人は多いんじゃないかなぁと思う。 &lt;a href="https://twitter.com/search?q=%23jawsug&amp;amp;src=hash"&gt;#jawsug&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— AKAI Tadaaki (@akai_t) &lt;a href="https://twitter.com/akai_t/statuses/61670194807971840"&gt;April 23, 2011&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;何でもできすぎて、何していいか分からんw&lt;/p&gt;
&lt;h5 id="ハンズオン"&gt;ハンズオン&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://aws.amazon.com/jp/free/"&gt;無料枠AWS&lt;/a&gt;、１ヶ月ごとの使用量。個人で使う分には充分ぽい&lt;/p&gt;
&lt;h6 id="s3ハンズオン"&gt;S3ハンズオン&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;バケット作成。create bucket。bucket名は一意なので早い者勝ち&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;create bucket（bucket名は一意なので早い者勝ち）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set Permision→Everyone open/Download&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set Metadataでレスポンスヘッダが制御可能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start uploadでアップロード完了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;アップロードファイルを選択してProperties&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DetailタグのLink（しかもSSL！）クリックで、画像表示or動画再生とか。Metadataで調整可能っぽい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://blog.suz-lab.com/2011/02/aws-sdk-for-phps3.html"&gt;phpでS3にアップロードするライブラリ&lt;/a&gt;あり&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;S3用アドオン&lt;a href="http://www.s3fox.net/"&gt;s3fox&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;時間が余ったのでEC2も！&lt;/p&gt;
&lt;h6 id="ec2ハンズオン"&gt;EC2ハンズオン&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://www.slideshare.net/kentamagawa/3amazon-ec2"&gt;玉川さんの資料&lt;/a&gt;を元に実施&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;manage consoleはfirefox推奨&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;星のついてるイメージが無料対象&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;インスタンス１個のmicroが無料。Availability ZoneはNo Preference&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Shutdown Behavior:terminateはインスタンス消去。stopは課金が止まるだけでそのまま始めれる。コンソールからはstop推奨&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;key-valueでサーバ群に名前を付けてカテゴライズできる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公開鍵をDLしたら保存場所忘れずに！鍵はリージョンごとで違う&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Security Groupとはファイアーウォール。Sourceは0.0.0.0/0を選ぶと全解放。既存グループを選択可能。Add ruleでルール追加&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;選んだSecurity Groupは後から変更できないが、内容の変更は可能。ので、広め？に設定しておくといい。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;インバウンドのみの制御。アウトバウンド（出て行く方の）制御は別&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Termination Protection：enableだと落とせなくなる。本番用のサーバなどに。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Launch !!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;sshは、AMIの場合、ユーザはec2-user。イメージごとにユーザが決められていて、rootのイメージもある&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DLした公開鍵をつかってログイン。macなら公開鍵のパーミションを600にしてssh -i (公開鍵) ec2-user@(Public DNS)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apache インストール。sudo yum -i install httpd&lt;/p&gt;</description></item><item><title>DB(mysql)を自動でバックアップする</title><link>https://blog.playispeace.com/13/mysql_backup_automation/</link><pubDate>Wed, 20 Apr 2011 01:44:22 +0000</pubDate><guid>https://blog.playispeace.com/13/mysql_backup_automation/</guid><description>&lt;p&gt;DB(mysql)データを自動バックアップするメモ。以前にも書いたのですがｗ　再掲。&lt;/p&gt;
&lt;h5 id="自動バックアップの流れ"&gt;自動バックアップの流れ&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;バックアップ先のサーバにSSH公開鍵を設定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;バックアップ用シェルを作成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;それをcronに設定&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;公開鍵を設定するのは、シェルでssh(scp)する際にID/パスワードを聞かれないようにするためです。そうしないとそこでシェルが止まってしまいます。&lt;/p&gt;
&lt;h6 id="バックアップ先のサーバにssh公開鍵を設定"&gt;バックアップ先のサーバにSSH公開鍵を設定&lt;/h6&gt;
&lt;p&gt;バックアップ元のサーバで、鍵を生成&lt;/p&gt;
&lt;p&gt;$ssh-keygen -t rsa&lt;/p&gt;
&lt;p&gt;全部Enter で進むと ~/.ssh/ にid_rsa.pub と id_rsaができるので、id_rsa.pub をバックアップ先のサーバに移してから&lt;/p&gt;
&lt;p&gt;$cat id_rsa.pub &amp;raquo; ~/.ssh/authorized_keys&lt;/p&gt;
&lt;p&gt;~/.ssh/authorized_keys に加えます。&lt;/p&gt;
&lt;h6 id="バックアップ用シェルを作成"&gt;バックアップ用シェルを作成&lt;/h6&gt;
&lt;p&gt;以下をdb_backup.shとして保存。&lt;/p&gt;
&lt;p&gt; ${dmpfile}
exec ssh-agent scp ${dmpfile}.gz user@backup_server:/backup/dir/path &amp;amp;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
--&amp;gt;

dumpしたデータを圧縮し、バックアップ先のサーバに保存します。ファイル名を曜日ごとに変えることで、１週間分のバックアップが取れます。

また、最後の exec 〜　は、最後に&amp;amp;をつけることで、これ以降にスクリプトを追加しても処理が継続します。

###### シェルをクーロンに設定

0 5 * * * /bin/sh /home/user/batch/db_backup.sh 1&amp;gt;&amp;gt;/home/user/batch/db_backup.1.log 2&amp;gt;

&amp;gt;/home/user/batch/db_backup.2.log

負荷がなさそうな朝5時に設定して、１日１回バックアップ処理が走ります。

###### 復旧作業

バックアップデータから復旧させるときは、圧縮したデータを解凍して

$mysql -u user -p –default-character-set=utf8 dbname で対応します。–default-character-setは必要に応じて修正します。

##### まとめ

ssh公開鍵設定して、シェルスクリプト書いて、クーロン設定して終わり！

※補足　クーロンによる処理が動いてなかったのですが、ここが参考になりました。

[crontabがどうしても動かないときに確認すべき3つの点+α](http://d.hatena.ne.jp/natsumesouxx/20100313/1268479064)
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>oracle で、複数レコードを同時にinsertするSQL</title><link>https://blog.playispeace.com/9/oracle_insert_sql_multi_records/</link><pubDate>Mon, 18 Apr 2011 14:59:19 +0000</pubDate><guid>https://blog.playispeace.com/9/oracle_insert_sql_multi_records/</guid><description>&lt;pre tabindex="0"&gt;&lt;code&gt;insert all
 into table_a(column_a,column_b,column_c) values(value_1a,value_1b,value_1c)
 into table_a(column_a,column_b,column_c) values(value_2a,value_2b,value_2c)
 select * from dual
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;もしくは、カラム指定を省略して&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;insert all
 into table_a values(value_1a,value_1b,value_1c)
 into table_a values(value_2a,value_2b,value_2c)
 select * from dual
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>OSC 2011 kansai@kobe に行ってきました</title><link>https://blog.playispeace.com/6/osc-2011-kansaikobe/</link><pubDate>Sun, 17 Apr 2011 17:56:08 +0000</pubDate><guid>https://blog.playispeace.com/6/osc-2011-kansaikobe/</guid><description>&lt;p&gt;復活したばかりのサーバが突然SSHできなくなったり、ほっといたら復活したりで不安なpapettoTVです。ガクブル。&lt;/p&gt;
&lt;p&gt;昨日、OSC 2011 kansai@kobe 行ってきたので、簡単にメモっておきます。&lt;/p&gt;
&lt;h4 id="osc-2011-kansaikobe-話聞いた一覧"&gt;OSC 2011 kansai@kobe 話聞いた一覧&lt;/h4&gt;
&lt;h5 id="nodejs入門"&gt;node.js入門&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;node.jsってサーバサイドで動くjs、って認識しかなかった&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apacheやnginxとは違うアーキテクチャ（シングルスレッドベースの非同期処理環境）がjsで実装されている&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;C10K問題、ノンブロッキングI/O&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="linkstation-をハックしよう"&gt;LinkStation をハックしよう！&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;LinkStationもwebサーバやFTPサーバにできる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;シリアルポート？を半田ごてでつなげてディスプレイ表示。出力探すのに2日。入力探すのに２日&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サブCPUでタイマー制御して、パックアップ時だけ起動→省エネ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="linux-kvmではじめるカンタン仮想化入門"&gt;Linux KVMではじめるカンタン仮想化入門&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;発表資料を紙でもらえたので、後で確認&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="徹底比較-postgresql-vs-mysql"&gt;徹底比較 PostgreSQL vs MySQL&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;利用率は2009年にmysqlが抜く&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;レプリケーションはMySQLが早い段階で導入・多段構成が可能（スレーブのスレーブ）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プロシージャはPostgreSQLが早い&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PostgreSQLはBSDライセンスなので商用製品に組み込んで販売可能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;どちらが良い悪いではない。（発表者宗近さんの私見）web系はMYSQL。PostgreSQLは堅牢なので業務系向きか？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;昼休憩&lt;/p&gt;
&lt;h5 id="今年はhtml5開発元年なのでhtml5アプリを開発しよう"&gt;今年はHTML5開発元年！なのでHTML5アプリを開発しよう。&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;HTML5とは、CSS3や周辺API機能も含めてHTML5と呼ばれてる。５月に草案が決まる予定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;タグが増えるし、既存タグの意味が変わる。覚え直しが必要だし、きちっと意味通りマークアップするのは大変になる。html5テンプレ系サイトでも間違ってることあり&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CSS3で色んな動きを演出可能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ゲーム作成フレームワーク。&lt;a href="http://techwave.jp/archives/51534698.html"&gt;IMPACT&lt;/a&gt;,&lt;a href="http://craftyjs.com/"&gt;crafty&lt;/a&gt;,&lt;a href="http://www.limejs.com/"&gt;limeJS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;画像にsvg（ベクター画像）が使える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;metaタグでブラウザのサイズによってcss切り替えれるので、１htmlでpcサイトとモバイルサイトが自動切り替え可能&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="スマートフォンfacebook時代のcms活用-soy-cms2の事例"&gt;スマートフォン、Facebook時代のCMS活用 —SOY CMS2の事例&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;既存HTMLなサイトも簡単にCMS化できる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Facebookのファンページ？もiframeでできてるので作れるよ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="まとめ"&gt;まとめ&lt;/h4&gt;
&lt;p&gt;去年より倍ぐらい人がおったような気がします。内容も濃いもの多し。あとweb業界って宇宙ですね。勉強してもしても終わらないぐらい広いなーと。つくづく痛感。&lt;/p&gt;</description></item><item><title>サーバ復活！</title><link>https://blog.playispeace.com/1/hello-world/</link><pubDate>Sat, 16 Apr 2011 00:00:00 +0900</pubDate><guid>https://blog.playispeace.com/1/hello-world/</guid><description>&lt;p&gt;HDが死んで半年・・・２、３年の知識が詰まってたデータの復旧を試みたのですが、無理だったので、ようやくあきらめて、、、一から始めます！&lt;/p&gt;</description></item><item><title>Profile</title><link>https://blog.playispeace.com/profile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.playispeace.com/profile/</guid><description>&lt;h2 id="media"&gt;Media&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://x.com/papettoTV" target="_blank" rel="noopener noreferrer"&gt;X / Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qiita.com/papettoTV" target="_blank" rel="noopener noreferrer"&gt;Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zenn.dev/papettotv" target="_blank" rel="noopener noreferrer"&gt;Zenn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="product"&gt;Product&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://isyo-894d2.web.app/" target="_blank" rel="noopener noreferrer"&gt;遺書一筆&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://my-tohyo.vercel.app/" target="_blank" rel="noopener noreferrer"&gt;マイ投票&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/tukkomimura" target="_blank" rel="noopener noreferrer"&gt;ツッコみむら&lt;/a&gt;（停止中）&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>