WordBench愛媛 – 春のお茶会を開催します。
新年度が始まりましたね。
フレッシュな気分で、新しい環境で皆さんそれぞれご活躍のことと思います。
さて、WordBehch愛媛もおかげさまで登録メンバーが増えてきまして、せっかくの地域コミュニティですので実際にお会いして情報交換ができればと思いましてお茶会をセッティングしました。
まだ席がございますのでお時間ありましたらお気軽にご参加ください。
参加登録はATNDからお願いします。
http://atnd.org/events/38295
JUnit勉強会を開催しました。
3月12日の夕方からJUnitの勉強会を開催しました。
イベントの案内ページはこちら。
「JUnit勉強会 in 松山 – “REVIVAL” #season1」
教材は、”JUnit” や “Tutorial” といったキーワードで検索したネット上の記事と
WEB+DB PRESS Vol.69, そして「JUnit実践入門」を辞書的に(?)使いました。
セッション1
Eclipse, JDKなどは各自インストール済みだったのでプロジェクト作成から開始。
JUnitライブラリの組み込み方や、テストクラスの追加の仕方などうっかりミスがあったり。それとAssertThatですが、参考にしたTutorial記事のimportの仕方に引きずられていたようで、勉強会のあとでimportの記述の仕方を見直したところ問題なく利用できました。
参考
The Hamcrest Tutorial
JUnitMatchers(JUnit API)
セッション2
ParameterizedTestやTemporary Folder、@Ruleなど。
何となくキーワードをながめるだけではよくわからなかったりしますが、仕事のどういう場面で使うとか解説してくれる方がいてとても勉強になりました。逆に、あまり使っていないこともわかったりして、今後の仕事で使ってみたいなど刺激にもなったようです。
セッション3
EasyMockをテーマに議論しました。
そして全体を通しての振り返り。今回はTutorialに沿って進めてみましたが、次回は実際に課題を決めてテスト->コーディングを繰り返してみたいと思います。
Intel Hardware Accelerated Execution Manager – Android SDK
しばらく使ってきたノートPCの液晶が故障したので、新しいPCに開発環境を構築しました。
あらかじめJDKをインストールしておいて、
Android SDKはBundle版を利用します。
http://developer.android.com/sdk/index.html
ざっくりと環境が整ったところでSDKマネージャを起動して
“Intel x86 Emulator Accelerator(HAXM)”を追加でインストール。
Android-4.2の仮想端末を作成して、CPUを”Intel Atom (x86)”にしておきます。
作成した仮想端末を起動してみるとエラーメッセージが表示されています。
コマンドプロンプトでサービスを確認。
sc query intelhaxm
「早春CMS祭り」を開催しました。
2013年2月16日(土曜日)にCreator’s village in EHIMEさんとWordBench愛媛の共催で「早春CMS祭り」というセミナーを開催しました。
開催内容はこちら(ATND)
http://atnd.org/events/35423
ツイッターのまとめ
http://togetter.com/li/458104
僭越ながら、私の発表資料はこちら
http://www.slideshare.net/twikaz/cms-festa0216
昨年秋、WordBench愛媛を作る際にお世話になった三好さん。@takayukister
WordBenchのメッセージでやり取りをしていたところ「愛媛」というキーワードがあったので勢いで講師をお願いしたところ、快く引き受けてくださいまして、はるばる松山まで講演にきていただきました。
ということで、せっかく三好さんに来て頂くので少しでも多くの方にご参加いただこうと思い、Creator’s village in EHIMEの@bornknow108さんに共催をお願いしたところ、快く引き受けてくださいましてトップバッターとして登壇をしていただきました。
そして、最近いろいろなコミュニティに積極的に参加され、プレゼンもされている@0310lanさんにお声がけしたところ、快く引き受けてくださいまして、ウェブサービスのCMSをメインにご紹介いただきました。
さらに、@bornknow108さんからのご紹介で@netachoさんにも劇画調に各種CMSをご紹介いただきました。さすがWebディレクターです。プレゼン内容はまさにエンターテインメントでした。
ショートセッションでは昨年のWordBench愛媛で自作のプラグインをつくってこられたわたなべさんに、プラグイン開発の技術要素についてご紹介をいただきました。プレゼン資料がきれいに作られていて尊敬。
ラストのセッションはオートクチュールの中村さん。@shinyajp
ソーシャルアプリで益々ご発展の様子。お忙しい中ありがとうございました。
それと、今回のセミナーで会場を提供してくださったイヨテツケーターサービス様には会場設営から当日の受け付け、ドリンクの提供など大変感謝しております。さらに、開催当日の午前中にコワーキングスペースを無料提供してくださったシトラス・スペース・カンパニー様にもお世話になりました。
ご参加いただいた皆様もふくめ、お礼申し上げます。
ありがとうございました。
maxSdkVersion を指定しないほうがいい – Android
http://goo.gl/FiIm3
android:maxSdkVersionは指定しないほうがいい(not recommended)
Androidプラットフォームの新しいバージョンは後方互換性を維持するので、新しいバージョンをブロックするのではなくて、標準のAPIを使って新しいバージョンの上でも動作するようにするべき。
それと、maxSdkVersionを指定すると、利用者がシステムアップデートを行った際にそのアプリケーションが削除されることになる。
また、システムアップデートの定期的な通知がアプリケーションに何らかの影響を与えないか事前に確認する必要がある。
アジャイルサムライ読書会の予習
バーンダウンチャート
縦軸は残作業の総量
横軸は時間(イテレーション)
順調に進めば右下がりとなり、ゼロになればプロジェクト完了
右下がりにならない、すなわちチームのベロシティが下がっている
プロジェクトの状況を可視化できる
思ったほどのベロシティにならない場合は計画の見直しをするなど
右上がりのバーンアップチャート形式でも可能
途中からアジャイルにしていく
まずはインセプションデッキの作成から
チームメンバーの入れ替えはベロシティが下がる前提で
時間が足りない場合はスコープの調整
無理をするのではなく信頼関係の構築
パーキングロットチャートについては
「アジャイルな見積りと計画づくり」を参照
イテレーションの運営
アジャイルなイテレーション
毎週価値のある成果を届ける
実装開始直後から動く状態
結合した状態で進んでいく
分析・設計、開発、テスト
ペルソナとは
ソフトウェアのユーザを役割ごとに簡単に説明したもの
リアルな人間が具体的に解決したい課題を持っている
ペアプログラミング
分析やテストもペアでやってみる
イテレーション・ゼロ
実装に着手するまえの段取り、環境整備
カンバン
カードを使って組み立てラインでのパーツ補充の工程を調整する仕組み
仕掛り(Work In Progress)にできる作業に上限を設ける
すなわち、チームが同時に着手できる作業の数
イテレーションが必要ない(タイムボックスは関係ない)
運用やサポート業務に向いている
TeX Live Manager – TeX環境の管理ツール
昨年10月に TeX Live を使ってTeX環境を作り直しました。
TeXのインストール
以下、もう1台のPCにインストールした際のメモ書き。
install-tl.batでインストールを実行。
するとコマンドプロンプトのログにところどころ次のようなメッセージが出ています。
TLDownload::get_file: response error:
500 Server closed connection without sending any data back
permanent server connection set up, but downloading did not succeed!Retrying with wget.
そして約1時間ほどで2595個のパッケージのインストールが完了。
では上記のエラーメッセージはその後どうなったのか。
手作業でwgetとか再インストールが必要なのかと思い調べてみました。
コマンドプロンプトから、
CD C:\texlive\2012\bin\win32
tlmgr update --all
を実行すると次のようにすべて最新の状態で問題なさそうです。
tlmgr: package repository http://(...省略...)
tlmgr: saving backups to C:/texlive/2012/tlpkg/backups
tlmgr: no updates available
念のため他にツールはないかと探してみるとTex Live Manager(GUIツール)が見つかりました。
C:\texlive\2012\bin\win32\tlmgr-gui.exe
スマホのメンテナンス – Android
昨年末ごろから手元のスマホの調子が悪くて困っていました。
例えばCメールを送信しようとするとリブートしてしまうなど。
原因はどうやらSDカードの容量不足。
そういえばアプリを追加しようとして、警告が出ておりました。(汗
ということでSDHC(Class6)のメモリーカードを購入してデータを移し変え。
移し変えは、元のSDカードの中身を一旦PCに丸ごとコピーしておいて、新しいSDカードをスマホにマウントしてフォーマット。
あとはPCにコピーしたファイルを丸ごとスマホに移します。
念のためMoveToSDというアプリを使って、可能なものをすべてSDに移動。
ずいぶんと安定して前よりも少し快適になった感じがします。
アジャイルサムライ読書会 – 8章前半のふり返り
昨日22日のアジャイルサムライ読書会のふり返りです。
今回は8章の途中まででした。
前回参加できなかったこともあって、久しぶりの参加でうっかり予習を忘れてしまいました。流し読みでもいいから、読んでいかないといけませんね。反省。せっかくの勉強会。皆さんの時間を無駄にしないように。他にもいろいろ勉強したいこともありますし。
さて、8章はアジャイルな計画作りです。
プロジェクトの途中で主力のメンバーが何らかの都合で外れてしまうとか、まぁありそうなお話ですね。そうでなくても多少のマージンを見ていたとしても、現実には全員がほぼフル稼働状態で期日が迫るに連れて残業が慢性化していて休日も…。何とか間に合わせようと、安易にコードをペタペタと膨らませて、どうにもならなくて他のところから人をかき集めて…。それで何とかなったとしても、その後の運用・保守を考えるとぞっとします。いや、ぞっとしないかも。慣れてるから。(汗
(コラム記事には「プロジェクトをクビに…」という最悪のお話も書かれていて “逆に” 安心できます。)
このあたりを読んでディスカッションしたこと。
リリースの期日に間に合いそうにない場合に、期日を調整するのかスコープを調整するのか。経験上、心苦しい会議をして期日を延ばすことが多かった。じゃあそれでその後うまく行くのか。結局、そのような状況になる時点ですでに無理やりのコーディングになっていたり、超過勤務の日々を過ごしていて期日が延びたからといって
特にモチベーションがあがるわけでもなく。
それよりは、スコープを調整して期日にリリースすべき。そうすれば新たなモチベーションの元に次のリリースに向けて開発を進めることができるはず。
5章でも出てきたけど「スコープを柔軟に」することがポイント。じゃあなんでも削れるのかというともちろんそんなはずはないですよね。そこで出てきた言葉がMMF(Minimal Marketable Feature Set)。リリース単位のことをこのように表現されています。要するに価値のある機能を厳選して最初のリリースに含めるということです。そうすることで、期日が迫ったときにスコープを調整しやすい状態にできるわけです。
それともうひとつディスカッションしたこと。それは個人の成果物に対する評価について。例えばある程度の規模のコーディングをすれば一定の割合のバグが発生するはず。言い換えれば、バグがなければ上司にとっては都合が悪かったりするわけです。これは何が問題かというと、個人の生産性を測っていること。すなわち生産性の高い人と低い人が同じ割合でバグを発生しないといけないのか、というまぁナンセンスなお話です。そうじゃなくてチームの生産性、この本ではチームのベロシティという表現がされていますが、このベロシティを評価して維持あるいは良くすることが重要です。どうしてもベロシティがあがらない場合、それは開発環境に問題があるのか、チーム内のコーディングの仕方に問題があるのか。そこの見通しがないと期日とかスコープの調整もできません。
だいたいこのあたりまで。
ということで、次回は少し先まで読んでから参加しようと思います。
さて、この読書会のほかに、今年はいろいろな新しいセミナー・イベントに参加することができました。その大半は無料で参加できるもので、有志の方々が自主的に企画して開催されています。来年にはさらに新しいセミナーの計画もされています。そういう状況の中で考えてほしいこと。それは、無料で気軽に参加できるからといって甘えてばかりではいけないということ。開催する側は日常の仕事をしながら、身の回りの人も含めて少しでも良い仕事をしたいと思って努力をしていると思います。もちろん自分自身の勉強目的があります。なので、自分の都合だけで参加するとかしないとか、そういうことではなくて、なんとか時間を調整して積極的に参加するとか、参加できなくても周りの人への告知を協力するとか、何かできることがあると思います。もちろん強制されることではありませんが、これからの各種勉強会の益々の充実に期待するとともに、小さなことでも何かできることがあれば協力していきたいですね。
Android用Facebookアプリ
Facebookアプリ(for Android)が最近のバージョンアップによってずいぶんとサクサク動くようになった感じです。現在のバージョンは2.0です。UIも改善されてずいぶん使いやすくなりました。
以前、Facebookアプリの調子が悪かったころに、3GとかWi-Fiとか接続方法を変えてみたりキャッシュを削除してみたりといろいろと試してみましたがなかなか根本的な解決には至らず。これまで使ってきての私なりの感触というか想像も含めてなのですが、サービス側が日々改善なりバージョンアップされていて、そのタイミングによってアプリ側が部分的に対応できなかったり不具合が発生して、その後のアプリ側のアップデートで改善されるという、アプリが後追いの形になっているのかなぁと思います。
なので、あるタイミングでアプリでなにか問題がおきたら、それはサービスとアプリの整合性の問題であってアプリ側(端末側)で何とかしようとしても、その時点ではおそらく解決はできないと判断する。そして、代替のアプリを利用するとかWeb(ブラウザ)からのアクセスに切り替えて様子を見るのが良いような気がします。
たとえば、この秋ごろからFacebookの”グループ”をよく利用するようになったのですが、Facebookアプリからだとグループのコメントにたどり着けない(開けない)状況がしばらく続いていました。現在では改善されています。現時点での問題としてはFacebookページのアンケートに「いいね!」をもらった際に「お知らせ」からアンケートのページにたどり着けない、というのがあります。ご利用の端末によって状況が異なるかもしれませんが、参考までに。
コードリトリート開催しました
Global Day of Coderetreat 2012
松山で記念すべきイベントを開催することができました。
2012年12月8日は “Global Day of Coderetreat 2012” ということで、Coderetreatが世界各地で同時開催されました。
国内では東京、大阪、松山、福岡の4ヶ所。
Coderetreatとはプログラマのスキルアップのためのイベントです。
午前・午後合わせて6つのセッションがあって、すべてペアプログラミングを行います。
また、セッションが終了したら書いたコードをすべて削除します。それとTDDでのプログラミングを基本とします。
オブジェクト指向が使えるものであれば言語はとくに制限はされません。
ファシリテータによって、セッションごとに制約が設定されます。セッションごとに毎回ペアを入れ替えます。
初めてのイベントで、ちゃんと開催できるかどうかいろいろ不安がありましたが、経験豊富なファシリテータ @haradakiro さんによってペアの進行状況をみながらきちっと形にしていただきました。
参加してみての感想。
テストファーストで、余計なコードを書かないということが体感できた。
ペアで作業すると確かに集中力が高まる。
とにかく小さく書くこと。コメントにたよらないということ。
コードをわかりやすく書くことで意思疎通ができるようになる。
最初のうちは、相手がやろうとしていることや自分がどうしたいのか、などの意思疎通が難しくあっというまにセッション終了となってしまいました。セッションを重ねるたびに慣れてはきたものの、完成させるには至らず。スキル不足を痛感させられるイベントでした。
基本的な言語のスキル、テストツールを使いこなすこと、そして小さく作ること。このトレーニングを習慣づけることでソフトウェアの品質は格段に向上しそうです。
今後、松山ローカルでもCoderetreatのイベントを継続して開催したいと思います。
皆様のご協力・ご参加をよろしくお願いします。
開催当日の会場/昼食/おやつスポンサー
- 株式会社アトラクタ
- 株式会社ウイットプラン
- 合同会社カルチャーワークス
ありがとうございました。
当日の各地の様子
http://coderetreat.org/photo
GDCR公式サイト
http://globalday.coderetreat.org/
GDCR12のアナウンス
http://coderetreat.org/profiles/blogs/announcing-global-day-of-coderetreat-2012
Webアクセシビリティについて
普段、パソコンを音声で利用されている方から相談がありまして、ネットスーパーについて調べています。
食料品や日用品をネットで注文して配達してくれるサービスです。
視覚障がい者の方など、このようなサービスが便利に使えれば日常生活がとても楽になると思います。
すでに活用している方も多いと思います。
以下、Windowsパソコンメインの内容です。
パソコンを音声利用するには、まず読み上げソフトが必要です。
日本語の品質の良さから、高知システム開発さんのPC-Talkerなどが多く使われているようです。
例えば、このPC-TalkerとIE(Internet Exploler)があれば、とりあえずホームページを開いてコンテンツを読むことができます。画像やFlashなどのアニメーションで作られているコンテンツはそのままでは読めませんが、アクセシビリティに配慮して作られていれば、代替テキストなどによってその画像やアニメーションの内容を知ることができます。
そして、さらにホームページの読みあげを快適にするためのネットリーダーというソフトがあります。
これも高知システム開発さんが開発・販売されています。
NetReaderのご案内
※体験版をダウンロードして試すことができます。
で、本題。
ネットリーダーを使って、2件ほどネットスーパーを利用してみました。
いずれのサイトも、同じようなページレイアウトで、
- ヘッダ
- メインメニュー
- サイドメニュー
- メインコンテンツ
- フッタ
およそこのようなページ構成になっています。
そして、例えばお買い物を始めると、商品カテゴリがずらっと並びます。
- 食料品
- 日用品
- 衣料品
- …
このような感じです。
それぞれの商品カテゴリには10~30種類のサブカテゴリが含まれます。
画面を見てマウス操作ができる場合はこれで問題ないのですが、これを音声で利用するとなると画面上にあるすべてのテキストを読み上げてから次の操作を行うことになります。
なので、例えばメインカテゴリ5種類、サブカテゴリ各20種類とすると100種類のカテゴリを読み上げたあとでその中から購入したいカテゴリを選ぶという操作になります。通常、キーワードによる検索の機能が用意されているのでそれを使って検索ということもできますが、その場合でも画面上には他の商品が簡単に探せるように、すべてのカテゴリが表示されています。要するにどのページに遷移しても、すべてのカテゴリやメニューを読み上げないと先に進めない状態になります。
そこでどうすればよいか。
- 不要なカテゴリを省略
例えばカテゴリの表示については階層型にして、現在開いている商品カテゴリについてはサブカテゴリまで表示するが、それ以外の商品カテゴリについてはサブカテゴリを表示しない。 - 見出しタグを適切に配置
ネットリーダーには見出しタグによってページ内をスキップする機能があります。
ページ内コンテンツをグループ分けして、各グループに対して適切な見出しタグを設置すると、とても効率よくページ内を移動できますのでページ全体が把握しやすくなります。 - 不要なコンテンツを省略
すべてのページが同じレイアウトになっていればアクセスしやすいという見方もありますが、ネットリーダーを使って閲覧してみると、目的のコンテンツ以外を毎回読まないといけないのは結構わずらわしく感じると思います。
デザインやプログラムの都合もあると思いますが、例えば見出しタグを配置するのはそれほど大きな影響を与えずに対応しやすいのではないかと思います。
少し試しただけできちっとした調査ではありませんが、せっかくのサービスですので少しでも多くの方に快適に利用していただきたいですよね。
何かヒントにでもなれば幸いです。