はてなブックマーク - JaSST ’13 Tokyoに行ってきました。
    このエントリーをはてなブックマークに追加

    こんにちは。フクダです。

    今年も私の投稿は行ってきましたシリーズが続きます。
    2013年1月30~31日に行われたJaSST '13 Tokyoに聴講参加させていただきました。

    場所は目黒にある雅叙園です。
    雅叙園

    ここで二日間、のべ1700人(昨年のJaSST'13 Tokyo延べ人数より)のソフトウェアテストに関係する人たちがくるわけです。胸熱。

    参加したワケ


    前回、JaSST '12 Kyushuに参加して、色々と勉強になりました。
    何より、テストエンジニアとして、私よりも十歩も百歩も先を歩いているような方々に出会えたことがとても感動しました。
    JaSST '13 TokyoはJaSSTの金字塔とも言えるようなシンポジウムで、参加者はKyushuの数十倍規模になるとのこと。
    セッション数も多く、来るなら仲間を紹介するよ、と言ってくださる方もいたので参加させていただきました。

    外部非公開のものも多くあったこともあり(チュートリアルだけですかね。。。)
    全体的に聞いた所感を中心に書こうと思います。

    テスティングの過去から現在まで


    各講演のなかで、いくつか、過去からのソフトウェアテスティングについてのお話を聞きました。
    今ではテストは重要視されている。というような説明がありましたが、まだまだ場所によりけりじゃないかな?と思いました。
    テストにコストをかけていられないものであれば、十分なテスト要件、仕様を洗い出すこともないかな?と思っていますし、リリース後のバグ分析などはサービスだったり、十分なメンテ費用をいただかない限り行っていないかと思います。
     組み込み系とWEB系でこの辺の考え方はかなり違ってくるのではないかなと思いました。

    テストエンジニアのこれからについて


    Wモデルのお話だったり、探索的テストのお話だったり、自分が無意識に似たようなことをやっていたり、全く手をつけていないことのお話を聞くことができました。
    テスト要求、仕様、計画については 案件の大小ですぐに取り入れることはできませんが、自分のスタイルにあったものを今後も探していきたいと思いました。
    特に探索的テストについては、自分がどのくらいできているかを測ったことがないので、詳しく勉強したい項目です。

    JaSSTを取り巻く人たちについて


    JaSST東京の参加は初めてでしたので、規模の大きさにはびっくりしました。その中で面白いな。と思ったこと。
    ハッシュタグ付きでツイートしている人のほとんどがJaSST実行委員や登壇者などの関係者であること。西先生にいたっては、檀上でTweetしていらっしゃる。(多分)
    みなさんフランクで面白い方々だったのにも関わらず、聴講者の声が聞こえてきませんでした。周りをみても、パソコンはおろか、携帯を触っているような人も見かけず。。ノートに書き込みしている人も思ったより少ない印象でした。スーツ姿の人が多かったのも印象的でした。
    もっとSNSなどのツールを使って楽しめばいいのに。って思いました。
    Twitterに関しては、あとでフィードバック資料を作成するのにtogetterがあるのとないのとで全然違ってくるので、私もできるだけツイートしようと思っています。

    情報交換会について


    JaSST Tokyoは一日目の夜に情報交換会があるという、私にとってありがたい形式で、フル参加しました。(JaSST Kyushuは日帰り参加だっただめ、途中で帰らなければならなかった。。。)
    その中で、今福岡で勉強しているソフトウェアテストド
    リルの著者である秋山浩一さんにご挨拶&サインを戴いたり、過去の勉強会のゲストにいらしてくれた方々にご挨拶できました。
    秋山さんはイメージよりもふんわりしていて可愛らしい感じでした。
    登壇された方々も参加されていましたので、セッション中に聞けなかったことを質問できるいいチャンスだと思います。
    クイズがあったりなどして、本をいただきましたよ。

    二次会について


    情報交換会終了後に、二次会にも参加しました。
    多くはJaSSTやWACATEなどの関係者で、JaSSTの中では若者の人達が参加していました。
    参加者は40人弱、ここでも規模の大きさにビックリしました。
    最初に挙手形式で各々のクラスタ紹介をしたのですが、九州クラスタもWEBクラスタも私1人だけでした。。。。
    はっ!!!そういえば実行委員の人にお土産として持って行った「にわかせんぺい博多っ子とPHPerに大うけだと思ってたのに、そもそも博多っ子もPHPerもいなかったのではなかろうか。。。

    二時間くらいのテストの話を肴に呑むという、なんとも凄い光景でした。
    各々が毎回参加されている方も多く、とても熱かったですし、色々な意見があって面白かったです。
    飛び交う単語の意味がわからなくて、勉強不足だということも再認識しました。
    以前お話したことのある方から私のテストスタイルや、うっすら思っている今後の展開に興味を持っていただいていたこともあり、これから面白いことが起こるかもしれません。

    今後の課題


    ・テスティングや品質管理における単語の理解。単語は勉強すれば身に付くはずなので、勉強します。
    ・LT中に飛び入りOKとの話がありましたが、資料準備が出来ていなかったので、いつその時が来てもいいように自己紹介レベルの資料を作る
    ・基調講演(全編英語)で、質問された方は、最低でも自己紹介までは当然のように英語でしていました。
    また、文献だったり、探したいものが日本の文献では限りがあるので、英語力をつけないといけないと思いました。

    おわりに


    二日間中身の詰まったシンポジウムに参加できてよかったです。1日目の夜くらいから頭の整理ができず、このブログとフィードバック資料の書き始めでかなり自信喪失していましたが、地道に勉強して、自分のスタイルを確立できるといいな。と思います。
    参加させていただいた会社と、現地で紹介していただいた方々、ご挨拶させていただいた方々 皆様に感謝します。

      はてなブックマーク - Filebinder pluginの今 #cakeadvent2012 Day25
      このエントリーをはてなブックマークに追加

      CakePHP Advent Calendar 2012 25日目の記事です。

      24日は@takahashiyuyaさんの「Cakephp h()メソッドから php を学ぶ」です。

      h()が意外に配列にも対応しているというのはソースを見ないと気づかないですよね。

      さて、ラストは今年のPHPMatsuriで「変態」と言われ続けたFusicよりお送りいたします。

      非常に心外ですので、
      本エントリで「Fusicは変態」という汚名を払拭したいと思います。

      Filebinder Pluginとは

      弊社がGitHubリポジトリで提供しているCakePHP Pluginに「Filebinder」というものがあります。

      fusic/filebinder

      簡単にいうとCakePHPのファイルアップロード機能を簡単に実装するためのプラグインです。

      最初のリリースはCakePHP1.3の頃で、そこから継続的にメンテナンスしています。
      現在はmasterブランチではなく2.0ブランチのみの開発を続けていますので、そのうちブランチ名を切り替えるかもしれません。

      弊社では未だにデファクトのライブラリなのですが、一部では「過去のライブラリ」となってしまっていそうなので、そうならないように「あれからFilebinderはどうなっているのか」について紹介したいと思います。

      CakePHP2.x対応

      弊社では現在CakePHPの主流は2.x系です。

      意外に知られていませんが、FilebinderもCakePHP2.x対応をしています(2.0ブランチ)。
      ブランチ名については後悔しています。。

      使い勝手も変えていませんので是非確認してみてください。

      UnitテストをTravis CIで管理

      弊社では良く使う重要なライブラリですので、少ないですが必要最低限のテストを書いています。

      最初は、開発者である私の環境でテストを回した後にpushをしていたのですが、
      ふと思うことがあってTravis CIの力を借りてテストを回しています

      README.mdにグリーンアイコンがでるのは、使う側としても安心ですよね。

      1.3系2.x系両方でTravis CIを回しているので、CakePHP PluginのテストをTravis CIに任せてみたい人には参考になるかもしれません。

      AmazonS3に対応

      おそらく、かつてから最も変わった部分ではないでしょうか。

      弊社にもご多分に漏れずAWSな波がきておりまして、FilebinderもAmazonS3に対応させていたりします。

      簡単にいうと、ファイルをアップロードするとS3に(も)転送する機能が簡単な設定だけで利用できます(Amazonから提供されているSDKを利用しています)。
      データベースと同様に、S3のデータからローカルのデータを復活させるようなことも可能です。

      README.mdに書くのをサボっていたので(ちょっと書きました)、テストケースを読むような人でない限り気づかなかったとは思いますが、便利です。S3に保存できると安心感が違います。

      現在開発中のzenpreでもスライドデータなどをS3、さらにはCloudFrontに任せることで負荷を軽減させています。

      実はCDP:Rename Distributionパターンを構築しやすい

      Filebinderはファイルの保存先をModel::transferTo()を上書きすることで変更できるのですが、それを活用してCDP:Rename Distributionパターン(リンク参照)をものすごく容易に実装できます。

      例えば以下のようにすれば、タイムスタンプごとにディレクトリを切ってファイルを保存できます。

      /**
      * transferTo
      * Filebinder BindableBehavior::transferToをオーバーライド
      * CDP:Rename Distributionパターン
      *
      * @param $data
      */
      public function transferTo($data){
      $time = preg_replace('/[\s:-]/','', $data['modified']);
      return $this->alias . DS . $data['model_id'] . DS . $time . DS . $data['field_name'] . DS . $data['file_name'];
      }

      Filebinderの機能でそのままS3にアップロードし、CloudFrontと連携させればもう完成です。楽ですね。
      上記機能は実は弊社ではなく、@jyokyokuさんが追加した実装です。OSSの醍醐味ですね。この場をかりてお礼を言いたいと思います。ありがとうございます!

      というわけで

      「Filebinder pluginの今」の紹介でした。慣れれば使いやすく拡張しやすいと思いますので、是非使ってみてください。

      Fusicの汚名も無事払拭できたかと思います。

      CakePHP Advent Calendar 2012も無事完走いたしました(誰かが走り続ける可能性もありますが)。皆さんお疲れ様でした。

      あ、4回目です。すみません。

        はてなブックマーク - Android キーボードの出現と同時に画面がスクロールしないときに
        このエントリーをはてなブックマークに追加

        こんにちは、山本です。
        最近はUXに興味をもち、勉強会を開催しているのですが、今回はAndroidのEditTextに関わるお話です。

        Objective-cにおけるUITextFieldとキーボードの関係

        Androidと言いながらまずはiPhoneの話ですが、iPhoneを作られた方なら一度はこんな経験ありませんか?

        “テキストフィールドにフォーカスを当てると、キーボードで隠れる”

        とくに意識せず作っちゃうと、キーボードの高さ分画面が上部に動くことは無いので
        ・UIScrollViewにする
        ・キーボードの高さを計算して、キーボードの出現と同時に手動で画面を上部に移動させる
        のような対処が必要です。

        ※ページの下部にあるテキストフィールドが


        ※キーボードの出現で隠れる

        Androidは機種によって挙動が違う!

        これがAndroidなら、単純に作ってもオンフォーカスと同時に、もしテキストフィールドがキーボードで隠れるようなら勝手に画面を押し上げてくれます。(OS4.0で作成時)
        しかし、一部の機種ではキーボードの出現と同時に画面が動かない! いわゆる機種依存ということになるのでしょうか。
        ああ、こまった。。

        EditTextの背景色と右寄せに注意

        なぜそういうことが起きるのか。まずは以下のソースをご覧ください。

        <EditText
                android:id="@+id/editText1"
                android:layout_width="200dp"
                android:layout_height="25dp"
                android:background="#00ffffff"
                android:gravity="right" />

        このようなEditTextの定義にしていると動かない機種があります。
        注目は「背景色」「右寄せ」のプロパティを付けているところです。
        このダブルコンボこそが、どうも諸悪の根源のようなのです。
        どちらかを外す、もしくは「左寄せ」にすると画面が動いてくれました。
        しかし、要件定義上、この2つを外すワケにはいきません。

        paddingRightのプロパティを付けると解決

        背景色を付けるためには、色の付いた画像を用意してそれを背景画像にすればいいので、”background”プロパティを使わなくて済みます。ですが、その方法以外で解決しました。

        <EditText
                android:id="@+id/editText1"
                android:layout_width="200dp"
                android:layout_height="25dp"
                android:background="#00ffffff"
                android:gravity="right"
                android:paddingRight="1dp" />

        新たに”paddingRight”プロパティを定義しました。ポイントは、dp値を必ず1以上にすることです。0だと書かないのと同じですので。
        こうすると、テキストフィールドの右辺からすこーしだけずれてテキストが表示されることになります。

        Viewの工夫だけで解決

        「背景色」「右寄せ」のせいでスクロールしない原因は不明ですが、この現象だけ切り取って考えると、テキストポインタが右辺にくっついちゃっていると、テキスト入力モードだと認識されないのかな、と思います。現に「背景色」「右寄せ」のEditTextでも、文字が入ってる状態にしてテキストポインタが文字の左側にいくようにタップするとスクロールします。

        ちなみに、解決にあたっては、
        ・AndrodManifest.xml に windowSoftInputMode=”adjustPan” のプロパティを付ける
        ・ScrollViewにする
        も試しましたが、結果は変わらずでした。

        また、
        ・iPhoneのように、キーボード出現イベントをトリガーにViewを上に動かす
        も検討しましたが、機種によってキーボードの形状が異なると思うので現実的ではないかなと。

        結果、Viewの調整でうまくいきました。
        お困りの方がいたらお役立てできればと思います。