A Day In The Boy's Life -64ページ目

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

iPhoneを使っていて一番気になるのはバッテリーの持ち時間だったりします。

電池がなくなってしまってはただの箱になってしまうわけですが、iPhoneはその魅力的なアプリの数々からどうしてもバッテリーを浪費しやすかったりします。


そこでバッテリーを気にしないですむように充電グッズを色々と買ってみたので、その使用感をまとめてみました。



乾電池式のバッテリー充電装置


inG iPhone,iPod用乾電池充電器 3×4Dock ブラック T5001/多摩電子工業

¥価格不明
Amazon.co.jp


一番値段が安く返るのが、この電池式のバッテリー装置です。

千円前後で手に入れることが出来たり、コンビニとかでも置いてたりします。

バックにもすんなり入り重くも無いので持ち運びに凄く便利です。


ただ、iPhoneの充電は電圧や電流に関する規格が決まっていて、それに対応していない充電器からは充電できなかったりするので注意が必要です。

また、乾電池式のこのタイプでは最初は充電できたのに、急に充電できなくなったりすることもあります。

電池を使用していく中で電圧が低下して、iPhone側で受け付けなくなったりするためのようです。


A Day In The Boy's Life-iPhone充電エラー


最初にこの電池式の充電器を利用した際には問題なく使えていたのですが、途中で上図のように「このアクセサリの充電機能はサポートされていません」というメッセージが表示され、受電が出来なくなってしまいました。

電池を換えたらまた充電できるようになったんですが、電池の残量を気にしながら使うのも不便だったりします。


エコや総合的に低コストで抑えたいのならエネループのような充電池を使う充電器を選択するのもよいかもしれません。


SANYO NEW eneloop USB出力付き充電器セット(単3形2個セット) KBC-E1AS/三洋電機
¥2,980
Amazon.co.jp


USB経由で充電するバッテリー装置


PLANEX iPod・アイフォンUSB充電・通信ケーブル ホワイト (iPod nano/i.../プラネックス
¥1,344
Amazon.co.jp


これは、iPhoneに付属する純正の充電器と同様にUSB経由で充電するタイプのアクセサリです。

純正の充電コードを持ち歩くのが面倒という場合に、会社など普段よく行く場所に補助用として置いて充電できるようにしておくと便利です。

iPhoneのバッテリーを消費するのは通勤中や会社だったりするので、帰りにバッテリーが無いというようなことは避けたいですからね。

もちろんUSB経由となるので充電以外にiTunesとの同期も可能です。


こういったタイプの充電器には、ガラケーの充電器を使えるタイプのものもあります。



ラスタバナナ RB9ZD11 i View stand 変換アダプタタイプ スクエア ブラック


iPhoneへ乗り換えたという人にはこういったタイプは、以前使ってて余っている携帯充電器を使いまわせて便利かもしれません。

ただし、こちらも電圧の関係でiPhoneが正しく認識されないという問題があったりするので注意が必要です。

私も1台このタイプを買って、Softbankの以前使っていた携帯充電器を使ってみたところ正しく認識されませんでした。

ガラケー向けのエネループの充電器を経由したら正しく充電できるようになりましたが。

そういった余っているバッテリー装置も使いまわせるかもしれません。



リチウムイオン式バッテリー装置


SONY スマートフォン用USB出力(2口)機能付 ポータブル電源(高容量リチウムイオン) C.../ソニー
¥価格不明
Amazon.co.jp


最終的に落ち着いたのがこれ。

リチウムイオン式電池に充電しておき、手軽に持ち運べいつでも充電が可能です。

この商品は2ポートUSBの口が付いているため、2台のiPhoneを同時に充電できます

(バッテリー容量はちょうどiPhone2回分らしいです)

USBケーブルは付属していないので、純正の物を使うか別途購入しておく必要があります。


AC入力部分(上部のとこ)は取り外せるので、持ち運ぶ際は下部のバッテリー部分だけを持ち歩くだけでよかったりします。

また、マイクロUSBの変換アダプタを買えばiPhoneのみならずAndoroid製品でも充電可能です。

旅行に行く際に、色んなスマートフォンを持っている人がいると思うのでこういったバッテリー装置を持っていると重宝されそうですね。


会社でUSBポートの利用が禁止されているというような場合でも、この製品であれば気にせずに充電できます。

また、非常に軽いのでバックに入れていても気にならないレベルのも嬉しいところです。


1日にもたないレベルのiPhoneのバッテリーでもこういった外部アクセサリを利用して、バッテリー残量を気にせずに快適なiPhoneライフを送りたいものです。





A Day In The Boy's Life-Google+1


Google+に招待していただきました。ありがとうございました。

ミーハーな気分で早速使ってみた(といってもまだ1日も触れてないけど)ので、感想等をまとめてみます。



Google+?Twitter+?Facebook+?


まず、ログインするとGoogle+上でつながっている(サークルに登録した)メンバーの投稿が「ストリーム」という形で表示されていきます。

Twitterのタイムラインのようなものですが、友達や知り合いをグルーピングしたサークル機能を活かし、そのサークルごとのストリームを見ることができます。


A Day In The Boy's Life-Google+2


Twitterのリスト機能を使ってタイムラインを見ている感じでしょうか。


正直、他のSNSをほとんど使ったことがないので、正確な比較が出来ないんですが、それでもSNSというのはどんなもんかみたいなところは、なんとなく把握しているのでその期待を上回ることは無かった感じがします。

こんなコミュニケーション方法があったのか!みたいな。

そう意味で、第一印象としてはTwitter拡張やFacebookの機能を少し改善した感じ、ってぐらいでしょうか。



Googleらしいインターフェース


UIは確かに洗練されていて、話題のサークル追加機能とかは動きが面白いなとは思いましたが、その画面を経由しなくてもサークルへの登録(フォロー)はできるので、最初の方しか使われないんじゃないかなと思ったり。

もったいない気はしますけど、わざわざ機能自慢のためにサークル登録の画面を経由しなくてはならないみたいなことになったら一気に使い勝手が落ちるでしょうから致し方ないかもしれませんけど。


Google+1が発表されたり、Googleのデザインが変わったりとここ最近のリリースや変化は、このGoogle+への布石だったような気はします。

ストリーム上に流れてくる情報には、Google+1ボタンが付いていて、Facebookの「いいね!」ボタンのような機能を提供してくれていますし、上部のツールバーからはGmailやリーダーなどへのリンクが配置されており、Google+がパーソナライズしたポータルのように扱うことが出来るようになっています。


ただ、一番すごいなって思ったのはGoogle+自身とは何の関係もないフィードバック画面。


A Day In The Boy's Life-Google+フィードバック画面1


フィードバックしたい箇所(問題点がある部分)を、ハイライト表示して指定できます。

また、その画面内に見られたくない情報が含まれている場合は、黒く塗りつぶして送信することも可能です。

プレビュー画面に行くと、先ほど指定した画面がスクリーンショットになっていたり。


A Day In The Boy's Life-Google+フィードバック画面2


Google+本体とは関係のないものですが、こういうフィードバック方法もあるんだなぁって感心したり。

あれが悪いって文章で言われたりしてもわかりづらいですし、ユーザーにわざわざスクリーンショットとってここって枠で囲み送らせるのも負担になりますからね。



Google+上に情報を流していくメリットを作れるか?


先に書いたようにストリーム上に、サークルでつながっている人の情報が流れてきたりもするんですが、その情報の取り込み口が全然少ないという印象を受けました。


Google+上で情報を流すには、自分自身でコメントをつけていかないといけません。

Twitterのツイートボタンのように外部から情報を簡単に取り込めたり、TumblrのリブログやEvernoteのクリッピングのような機能があって、それをストリームに簡単に流せるように出来れば便利なのになと。

Google+1で評価したサイトをGoogle+上で見ることはできますけど、それをストリームに流していくような機能があってもいいのになとかも思ったり。


これをしないと、わざわざGoogle+へ情報を流すためのコストが大きくなって使われなくなるんじゃないかなと。

ソーシャルネットワークって、必ずしも知っているもの同士がつながるわけじゃなくて、その人が普段発している情報とかから興味を持っていくってことも多いと思うので、そのコストを如何に下げるかがユーザーにとってそこで個を形成するためのモチベーションにつながっていくんじゃないかなと思うわけです。


Twitterとかやってて思うことですが、自分自身が日常からネタを搾り出してゼロから発言していくのって結構難しいと思うんです。

何かのネタがあればそれに対しての考察が頭をよぎりますが、そんなポンポンと面白いことが周りで起きることもなかったり。

なので、他人のネタをベースにしてそこにプラスアルファの自分の考えをプラスしていくようなことの方が発言しやすい。

そのほかにあるネタを簡単に取り込むことが出来たら、そのプラットフォームを利用するメリットも増加するんじゃなかろうかと。


今のところChrome拡張でGoogle+を便利に使うためのアドオンが提供されたりしていますけど、どこまで本体に取り込まれるのかが鍵になってきそうな気はします。



何故Facebookと同じ土俵で勝負したのか?


で、最後で最大に思ったことはGoogle+は何でFacebookと同じ土俵で勝負したんだろうという点。

先に書いたように今のところGoogle+にしかないようなソーシャルな機能って見当たらない状態です。

どちらかというとFacebookに対抗するために一般的なSNSの基盤を作ったというような印象を受けます。


Facebookが巨大なコミュニケーション基盤として進化していき、そのクローズドな世界で情報が溜め込まれると、検索エンジンが主のGoogleとしてはその情報が引っ張ってこれなくなり困るから、それだったらうちの方でも作ってしまい、ユーザーがFacebookに流れていくのを阻止しようというような戦略的な意図はあるかもしれません。


Googleは検索以外にも様々な質の高いサービスを持っていて、それらは個々に成功を収めていますけど、それを使っているユーザー同士をうまく連携させるということは出来ていません。

Gmailもメール以外でコミュニケーションをする機能があったりしますけど、あくまでメールという基盤の上で成り立っていたりしますし、YoutubeならYoutubeで、Google DocsならGoogle Docsでのコミュニケーションが主となっています。

それらを統合して連携させたいという意図があり、その基盤を作りたいというところからSNSの基盤に目をつけたのかもしれません。


ただ、検索でインターネット上の情報を網羅しているGoogleにとっては、プラットフォームを特定するよりもそのネット上全てが基盤に出来るようなSNSの基盤を作った方がらしさが出たような気はします。

どちらかというとFacebookよりはTumblrにイメージが近いでしょうか。

ネット上で見つけた「いいね!」を簡単に取り込めたり整理したりして、パーソナル化ができたり。


今のところ限定公開なので、これが一般公開されたときにどこまでの情報がネット上に流れていくのか見えていなかったりもします。

Facebookのようにクローズドな世界を作るのか、Googleの特性とGoogle+のサークル機能を活かしてネット上に公開するものとGoogle+上で限定する情報のすみわけがうまく出来るようになるのかとか。

FacebookとのSNSプラットフォームを巡る戦いやこれからのソーシャルネットワークの未来と変化について、Googleらしい新しい発想が出てくることを期待したいと思います。





Symfonyには、setFlashというセッションデータを一度きり利用するための関数が用意されています。

setFlashでセットしたセッションデータは、getFlash関数で取り出し可能ですが、getFlashを一度呼び出すとそのセッション情報は削除されてしまい、再び取り出すことができなくなります。


これの何が便利って、例えばページをリロードされたく無いような場合とか、入力・確認・完了画面へ遷移するような場合に、確認画面でsetFlashした情報を一度だけ完了画面でgetFlashできるので、完了画面遷移後に確認画面へ戻り再度サブミットされ、同じデータが登録されてしまうというような誤操作を防止するというような事ができたりします。


で、そのsetFlashをしたはずのセッション情報が何故かgetFlashする前に消えてしまっているという現象が発生しました。

その時の対処方法をメモしておきます。



基本的なsetFlash/getFlashの処理の流れ


まず簡単に正常な場合の基本動作についてプログラムを追っていきます。

ここでは2つの画面が存在し、画面1(Indexアクション)でsetFlashでセッションデータを格納し、その情報を画面2(Hogeアクション)でgetFlashして取り出すというものです。


class userActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->getUser()->setFlash('word', 'Hello World!');
    $this->setTemplate('index');
  }

  public function executeHoge(sfWebRequest $request)
  {
    $this->setTemplate('hoge');
  }
}


テンプレートの方は、下記のような2つのファイルを用意しています。


<?php echo link_to('次のページへ', 'user/Hoge'); ?>


link_to関数はリンクヘルパーで、アンカータグを自動生成してくれるものです。


<?php echo "セッションの値:" . $sf_user->getFlash('word'); ?>


今回は、テンプレートファイルの方でgetFlashをしています。

もちろん下記のようにアクションファイル内で取り出して、テンプレートに引き渡すことも可能です。


  public function executeHoge(sfWebRequest $request)
  {
    $session_val = $this->getUser()->getFlash('word');
    $this->setVar('word', $session_val);
    $this->setTemplate('hoge');
  }


これで、最初のページ(user/Index)でセットしたセッション情報が、次のページ(user/Hoge)で1度だけ取り出すことが可能になりました。



CSSのファイルが存在しないことでsetFlashしたセッション情報が消える


私の方ではまったのが、テンプレートから呼び出しているCSSファイルが存在しない(404が返った)場合、setFlashしたセッション情報が消えて取り出せないという現象です。

画面上は、正常に遷移できるしその他のロジックは普通に処理されるので、「今までと何も変わらないはずなのになんで???」って状態になりました。


って事で、再現させてみたいと思います。

まず、テンプレートの共通レイアウト用のlayout.phpファイル(正確にはそこから呼び出しているコンフィグファイル)を少し変更します。


layout.phpでは、下記のようにスタイルシートを呼び出すための専用関数が呼び出されています。


  <head>
    <?php include_http_metas() ?>
    <?php include_metas() ?>
    <?php include_title() ?>
    <link rel="shortcut icon" href="/favicon.ico" />
    <?php include_stylesheets() ?>
    <?php include_javascripts() ?>
  </head>


で、このinclude_stylesheetsって関数からどのCSSファイルを呼び出すかって事ですが、それはconfig/view.ymlファイルに定義されています。


  stylesheets:    [main.css]

これにより、web/cssディレクトリにあるmain.cssファイルが呼び出されます。

(デフォルトだと空っぽのファイルですけど)


これを、あえて存在しないCSSファイル名に変更してみます。


  stylesheets:    [sub.css]

view.ymlファイルを編集した後は、キャッシュのクリアが必要なので、symfonyコマンドを使ってキャッシュを削除しておきます。(キャッシュのクリアは、Symfonyのディレクトリ直下でsymfony ccで削除できます)


これで、先ほど正常に動いていたプログラムにアクセスしてみたら、次のページでgetFlashをしてもセッション情報が取得できません。

理由は、Symfony自体が404をキャッチしてその際にセッション情報を削除してしまっているようです。

要は404ページを内部的に出したというような感じで、ページが呼び出されたからsetFlashしたセッションも削除してしまうというような処理のようです。(あまり詳細調べてないんですが)


FireBugとかで見てみると


A Day In The Boy&#39;s Life-SymfonyでCSSが404の場合


CSSファイルが404になっていて、セッションの値が表示されていないことがわかります。

CSSが存在しないだけなのに、セッションデータが突然消えたのでかなりはまった現象でした。