[Android]Google Playでアプリケーションを更新する

Google Playへの登録方法は以下の記事で紹介されています。
[Android]Android Marketにディベロッパー登録してみる

また初回のアプリケーション登録方法については以下の記事で紹介されています。
[Android]マーケットにアプリケーションを登録してみる

更新したモジュールをエクスポートする

最初にGoogle Playにアプリケーションを登録する方法とほぼ同様の方法でapkファイルをエクスポートして登録を行います。

最初にGoogle Playに登録したKey Storeを利用してファイルをエクスポート

キーストアは最初に登録したapkファイルと同様である必要があるので、既存のキーストアを利用して作成します。これポイントです。最初に登録したときのキーストア情報がないとUpdateできないようです。

管理画面からアプリをアップロードする

Google Playで確認してみる

アプリケーションにアクセスすると最初のうちはエラーとなりますが、30分程度で完全に反映されます。

[Android]マーケットに登録したapkファイルでFacebookAPIを利用する方法

apkをGoogle Playで登録し、稼働確認を実施していたところFacebookの認証でクラッシュしたのでそのときの備忘録。

Key Hashの生成

通常の開発はデバッグモードで行っているので、デバッグ用のキーストアを利用して開発しているが、Google Playに登録するときには別のキーストアを発行する。これに対するKey Hashを生成し、Facebookアプリの管理ページに登録する必要がある。

まずKey Hashの生成方法だが通常の証明書付きapkファイルを出力した場合はキーストアのファイルとapkファイルが出てくる。このキーストアファイルとapkファイルを作成したときに入力したエイリアスを利用してKey Hashを生成する。

$ keytool -exportcert -keystore ${Path to key store} -validity 10 -alias ${Alias name} | openssl 
sha1 -binary | openssl base64
キーストアのパスワードを入力してください:  ******* <- Key Storeのパスワードを入力
*******************                          <- これをAndoid Key Hashとして登録する

Facebookの開発者ページにログインし、出力されたAndroid Key Hashを入力して設定を変更すると「several minutes」後に反映され、認証が通るようになります。

[Opinion]AKB48と仕事

初めてかもしれないが、ちょっとテクニカルや本の話題ではないことについてみて書いてみる。

できる人とできない人

一般的にある物事に対して「できる人」・「普通の人」・「できない人」に分類すると比率は2:6:2らしい。
就職活動をしていてばかばか内定をとってくる人・がんばってとってくる人・何をやってもとれない人。仕事をしていて、ばりばり働いて上を追い抜いていく人・それなりに働く人・社内ニート。

仕事の話をするとある企業の売り上げはほとんど上位の人間が稼ぎだしており、上の人間の企業における重要性は増しているとともに、往々にしてできる人はヘッドハンティングにかかり易く、起業し易い。
ある企業Aを考えたとき、「上位2割の人間がすべて入れ替わる」ことと「その他の8割の人間がすべて入れ替わる」ことの売り上げに対するインパクトは前者のほうが大きい。

AKB48もそうなのか

ネットですぐデータが拾えた2011年度総選挙の結果で分析してみた。

2011 AKB48 投票結果
順位 名前 投票数
1 前田敦子 139,892票
2 大島優子 122,843票
3 柏木由紀 74,252票
4 篠田麻里子 60,539票
5 渡辺麻友 59,118票
6 小島陽菜 52,920票
7 高橋みなみ 52,790票
8 板野友美 50,403票
9 指原莉乃 45,227票
10 松井玲奈 36,929票
11 宮澤佐江 33,500票
12 高城亜樹 31,009票
13 北原里英 27,957票
14 松井珠理奈 27,804票
15 峯岸みなみ 26,070票
16 河西智美 22,857票
17 秋元才加 17,154票
18 佐藤亜美菜 16,574票
19 横山由依 16,455票
20 増田有華 14,137票
21 倉持明日香 12,387票
22 梅田彩佳 11,860票
23 高柳明音 11,674票
24 仲川遥香 10,854票
25 多田愛佳 9,910票
26 平嶋夏海 9,742票
27 宮崎美穂 9,271票
28 山本彩 8,697票
29 大家志津香 7,264票
30 大矢真那 6,660票
31 仁藤萌乃 6,288票
32 小森美果 6,120票
33 秦佐和子 6,117票
34 佐藤すみれ 5,438票
35 大場美奈 5,411票
36 須田亜香里 5,343票
37 前田亜美 5,220票
38 松井咲子 5,020票
39 市川美織 4,928票
40 藤江れいな 4,698票

全部で40位(表示上40位なのかな?)まで出ていたのでそれを表にしたのが上の表である。ちなみに1〜40位までの投票合計は1,081,332票だった。

企業でいうところの売上に当たる部分がAKBでは≒投票数と考えることができるので、上位2割(8人)の投票数・中間6割(24人)・下位2割(8人)の投票数の全体に占める割合を求めると、

ランク別投票率
ランク ランクに占める投票率
できる人 56.67%
ふつうの人 39.43%
できない人 3.90%

投票比率以上に彼女たちの仕事ぶりをみると上位8人のAKB以外の仕事(CM・女優etc…)は「できる人」に偏っているのは明らかで、売上ベースだとその比率やとんでもなくなるだろう。

結局何が言いたかったかというと、仕事でもスポーツでもやるからには上位2割の「デキルやつ」になろうということだ。AKBはあいにく戦うフィールドを変えることができないが、基本的には転職を始め、戦うフィールドの選択肢は我々にある。

[Facevote]投票アプリWeb版

WEB版

機能概要→[Android]Facemash的なアプリ

Google Playに登録した「Facevote」の簡易Web版が追加されました。Ajaxが使われているのでAndroidに比べるとサクサク感がナイスです。
※2012/3/27 現在対応ブラウザはChromeのみ。
# Update 2012/3/29 Firefox対応完了

[Android]マーケットにアプリケーションを登録してみる

Androidアプリに署名をつけてエクスポートする

出力対象のプロジェクトを選択して、右クリック > Androidツール > Export Signed Application Package…と選択していきます。そして、プロジェクト名称を入力します。

※おそらく、開発中は実機でデバックを行うためにAndroidManifest.xmlで「android:debuggable=”true”」としているはずなので、「android:debuggable=”false”」にする必要があります。

必要な情報を入力していきます。

必要事項の入力が終了したら、apkファイルを出力します。これで、署名されたapkファイルが出力されました。

Google Playに登録する

マーケットに登録するためにはまずディベロッパー登録する必要があります。登録方法にすいては過去の投稿をご覧ください。→ [Android]Android Marketにディベロッパー登録してみる

まず、Google Playの管理画面にログインして、画面右下にある「アプリケーションをアップロード」を選択します。

次にapkをアップロードするよう求められるので、先ほど作成したapkファイルをアップロードします。

アップロードが完了するとそのアプリケーションの情報(バージョン、アクセスする機能等)が出てきますので、そちらを確認し、問題なければ保存を選択します。

公開するためにはアプリケーションの説明や画像が必要なので、そちらの登録を行っていきます。具体的には設定として以下の項目が用意されています。

アセットのアップロード
項目 説明
プロモーション画像 携帯のGoogle Playに表示させる画像です。
宣伝用画像 PC版のGoogle Playに表示させる画像です。
プロモーション動画 YouTubeに紹介用の動画をUPLOADしている場合にYouTubeへのリンクが設定可能です。
プライバシー ポリシー プライバシー ポリシー画面が用意されている場合はそのURLを設定することが可能です。この項目にはチェックボックスが用意されており、「今回はプライバシー ポリシー の URL を送信しない」の選択も可能です。
マーケティングの除外 「Google Play と Google 所有のオンライン/モバイル サービス以外ではアプリケーションを宣伝しません。この設定への変更が有効になるまでに 60 日程度かかることについて了承します。」のチェックが可能です。
掲載情報
項目 説明
言語 アプリケーションの言語を設定できます。複数選択が可能で、アスタリスク(*)のついている言語がデフォルトの言語となります。
Title (日本語) タイトルを設定します。
Description (日本語) 説明を設定します。
Recent Changes(日本語) 変更履歴のようなものを設定します。
Promo Text (日本語) 販促説明を設定します。
アプリケーション タイプ アプリケーションのタイプを「アプリケーション・ゲーム」から選択します。
カテゴリ カテゴリを「エンターテイメント・カスタマイズ・コミック・ショッピング・スポーツ・ソーシャル・ツール・ニュース&雑誌・ビジネス・ファイナンス・メディア&動画・ライフスタイル・ライブラリ&デモ・交通・仕事効率化・健康&フィットネス・写真・医療・天気・教育・旅行&地域・書籍&文献・通信・音楽&オーディオ」から選択します。
公開設定のオプション
項目 説明
コピー防止 端末からアプリケーションのコピーが可能かを設定します。(コピー機能は間もなく廃止される予定という注釈が表示されています。)
コンテンツのレーティング ユーザ成熟度の設定を行います。
価格設定 価格の設定です。
サポートされている端末 AndroidManifest.xmlの定義情報を得て、どの機能を有した端末で利用可能かを表示してくれます。具体的にX台の利用が可能と表示されます。

その他に連絡先情報の設定と同意事項のチェックがあります。

以上の項目を必要に応じて入力したあと、「公開」ボタンを押すとGoogle Playにアプリケーションが公開されます。

[WordPress]固定ページのカスタムテンプレートを作成する

カスタムテンプレートとは

WordPressで固定ページを作成する際に利用するテンプレートのことを指しています。テーマがtwentyelevenの場合、テンプレートは以下のディレクトリに配置されています。

${WP_HOME}/wp-content/themes/twentyeleven/

初期状態ではデフォルトテンプレート, Showcase Template, Sidebar Templateがありますが今回はこちらに新規テンプレートを追加します。

新規作成方法

1. ${WP_HOME}/wp-content/themes/twentyeleven配下にtest.phpを配置します。
2. test.phpのヘッダーに以下を追加します。

<?php
/**
 * Template Name: Test Template
 */

3. test.phpをカスタマイズします。

新規テンプレートを利用した固定ページの作成方法

ADMINのダッシュボードから固定ページを選択し、新規作成か既存の固定ページを編集します。そして、ページ属性のテンプレートのドロップダウンリストに「Test Template」が追加されていることを確認してください。以上となります。

[Book]チームで最高の結果を出すマネージャーの習慣

要約

内容紹介
「少数のできる人材」と「それ以外の人材」の二極化。
これは、多くの組織が抱える問題です。
引く手あまたの有能な人材の有無に左右されず、常に安定した成果を出すことがマネジャーの使命。
そこで本書では、チームの誰もが力をフルに発揮して最高の結果を出すための、マネジャーの行動習慣を徹底解説!
 「チームから比較グセを排除」「根拠のない目標は立てない」「強みベースの役割分担」など
、元外資系生保no.1マネジャーによる、実践的で結果に直結するメソッドを伝授。

Amazonより

目次

第一章 実践の前に心得てほしい5つのこと
第二章 「結果に至るまでのポイント」を押さえておこう
第三章 合理的に「チームの機動力」がアップする方法
第四章 メンバー戦略化のために、本当に必要なサポートとは
第五章 「何をどう伝えるか」が成否を分ける
第六章 全員で共有するべき「営業」の基本

感想

仕事上マネージャーではないのではないのですが、マネージャーの視点も仕事上大事になってくるしゆくゆくは部下を持つ立場になるのだから読んでいて損はないと思い読んでみました。この本の著者自身が営業出身ということもあり、著者自身のセールスのマネージャーの経験をもとにマネージャーとしての振る舞いや、部下に対する姿勢および育て方について細かく書かれています。企業の一員として働く以上、プロジェクト単位で恊働して仕事を進めていかなければならにので、今どういう立場にいるにしろマネージャーとしての視点は必要かと思います。
マネージャー視点から部下の育て方について言及してあるので、今の仕事の進め方の参考になる部分が多くある。今からでも実践できそうなポイントをいくつか。

  • チャレンジングなことで、失敗のリスクが大きくとも、挑戦はするべきでそこから得られるものは多い
  • 仕事の結果よりもその結果にたどり着くまでのプロセスを重視する

また、マネージャーとしての部下への動機付けと管理方法についていくつか。

  • 数値的な目標だけではなく、イメージできる目標を設定する
  • 会社全体としての目標とプロジェクトにおける目標はリンクさせる
  • 仕事の出来具合には個人差がある、絶対的な数字でなく目標に対する達成度で評価する
  • 一週間単位で予定と実績を記録させる。実績を細かくレビューすることで、何が成長したのか・仕事の進め方に関して何がよくできているのか、何が甘いのかを指摘する
  • 答えをすぐに与えず、気づきを与える

本の最後の方は、営業マンの仕事方法について書かれている。内容としては全体的に優しく読みやすい印象でした。
著者の小林一光さんが以前働いていた企業はプレデンシャルです。いまうちの会社ではかなり熱いはず。

[Book]サボる時間術

要約

アポは入れない、手も動かさない、まず時間をマーケティングする――。仕事や勉強で成果を上げるなら、なにより「サボり時間」を確保しよう。外資系企業経験の長い著者が提案する、まったく新しい「時間の使い方」。

忙しく働いているのに、結果が出ない。重要な案件が、いつも「やっつけ仕事」になってしまう…。仕事に追われずに、限られた時間で成果を最大化するには、まず「サボる時間」を確保しよう。多くの外資系企業で働いたマーケターが提案する、逆転発想の時間のとらえ方、使い方。

Amazonより

目次

序 章 なぜ時間は管理できないか
第1章 まじめな人ほど「時間がない」と言う
第2章 どうすればサボれるのか
第3章 その時間は「お値打ち」ですか?
第4章 午後4時45分、机の上はカバンだけ
第5章 なぜサボるのか
おわりに

感想

本のタイトルから察すると、本当に仕事をしないという意味での「サボる」を想像してしまうかもしれないが、そうではない。本質的な仕事(価値に直結する仕事)を行うための時間のを創出するためのTipsである。
往々にしてスケジュールがつまっていて毎日忙しく過ごしている人は、本質的な仕事を行い得ていない可能性が高い。(本質的な仕事とそうでない仕事については後述)
いかに作業の時間を短縮し価値を生み出すための時間を使えるか、残業は休日出勤を減らせるかということをこの本を通して発見できるかもしれない。本当に価値を生み出す仕事は「サボる」ことからはじまる。。。

二種類の仕事

価業
・企画立案
・新しい価値を生み出す気付きを得る時間→現地で直接見てみる、新しい考え方を得るために勉強会やセミナーに出席する
・新しい考え方、ものの見方を醸成するために、会社外の人など、価値観の違った人たちと会う
作業
・リサーチ結果、営業数字の見直し
・毎日のルーティン作業

[Java]WebページをTree構造に基づいてスクレイピング

Introduction of JTidy

以前、スクレイピングするコードを書いたさいにはHTMLファイルを一旦Stringオブジェクトに変換して、divタグやらクラス属性やらでStringをパースした記憶がありますが、今回はDOMの構造に基づいて解析可能なライブラリがあったので、紹介したいと思います。そのライブラリはJTidyです。

JTidyとは

Download

こちらからダウンロードしてください。クラスパスに追加すれば、即利用可能です。

Show sample Program

日経のマーケット情報サイトから現在値・始値・高値・安値を取得するサンプルプログラムを作成してみます。
まず、プログラム作成のINPUTとして、サイトのHTMLがどのような構造から成り立っているか確認する必要があります。
Firefoxの場合⇒HTML上で右クリック > ページのソースを表示
Chromeの場合⇒HTML上で右クリック > ページのソースを表示
IEの場合⇒ツールバー > 表示 > ソース

今回のスクレイピング対象は以下のような構造をしています。(一部抜粋)

<div class="st-top_price_detail">
    <dl class="stc-part1">
        <dt class="stc-opening">始値<span class="stc-update">(9:00)</span></dt>
        <dd class="stc-opening">433</dd>
        <dt class="stc-high">高値<span class="stc-update">(9:01)</span></dt>
        <dd class="stc-high">434</dd>
        <dt class="stc-low">安値<span class="stc-update">(9:05)</span></dt>
        <dd class="stc-low">431</dd>
    </dl>
    .
    .
    .
</div>

実装は以下の通りです。(Main.java)

package src;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.tidy.Tidy;

public class Main {

	static final String expNow = "//div[@class='st-company']/dl/dd[@class='stc-now']";
	static final String expOpen = "//div[@class='st-top_price_detail']/dl[@class='stc-part1']/dd[@class='stc-opening']";
	static final String expHigh = "//div[@class='st-top_price_detail']/dl[@class='stc-part1']/dd[@class='stc-high']";
	static final String expLow = "//div[@class='st-top_price_detail']/dl[@class='stc-part1']/dd[@class='stc-low']";

	/**
	 * 引数に銘柄コードを入力してください。
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			URL url = new URL("http://www.nikkei.com/markets/company/index.aspx?scode="+ args[0]);
			URLConnection con = url.openConnection();
			Tidy tidy = new Tidy();
			tidy.setShowWarnings(false);
			tidy.setQuiet(true);
			Document doc = tidy.parseDOM(con.getInputStream(), null);
			XPathFactory xpf = XPathFactory.newInstance();
			XPath xpath = xpf.newXPath();
			String now = (String) xpath.evaluate(expNow, doc, XPathConstants.STRING);
			String open = (String) xpath.evaluate(expOpen, doc, XPathConstants.STRING);
			String high = (String) xpath.evaluate(expHigh, doc, XPathConstants.STRING);
			String low = (String) xpath.evaluate(expLow, doc, XPathConstants.STRING);
			System.out.println("now  : " + now);
			System.out.println("open : " + open);
			System.out.println("high : " + high);
			System.out.println("low  : " + low);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (XPathExpressionException e) {
			e.printStackTrace();
		}
	}
}

引数に指定したコードの各種値を取得します。expNow, expOpen, expHigh, expLowであらわされるXPath表現さえ覚えてしまえば、使いこなせるはず。

About of XPath Expression

W3に規定されていますので、ご参照いただければと思います。XML Path Language (XPath)

2012/6/21追記
FirefoxのアドオンにXPathを簡単に見れるのがあったので、追記しておきます。
XPath Checker

[Home Server]Jetpackでアクセス解析

サイトアクセス解析

Google Analyticsがアクセス解析としてメジャーですが、WordpressのプラグインであるJetpackを導入してみました。正確にはWordpress.com StatsというプラグインがJetpackに含まれているようです。

At A Glance

デイリーのアクセス数が確認できます。棒グラフにフォーカスをあてたとき、その日に投稿があれば書いた記事が確認できます。

Referres

どこからアクセスがきたのかがわかります。

Top Posts & Pages

どの記事が参照されたのかが確認できます。

Search Engine Terms

Google等検索エンジンからきたときの検索ワードが確認できます。

Clicks

記事内のリンクがクリックされた場合にどのリンクがクリックされたのかを確認できます。

Subscriptions

まとめ

オンタイムで更新されるので、見てるだけで面白いです。