まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:google

IBM LinuxONE(メインフレーム上の Linux)ネタシリーズ、今回は Go 言語を動かしてみます。
http://golang-jp.org/


前提として、IBM LinuxONE の環境が必要になります。今回は 120 日間無料で使える IBM LinuxONE コミュニティクラウド上の RHEL 6.x 環境を使うことにします。この IBM LinuxONE コミュニティクラウドの導入方法についてはこちらを参照してください:

さて、s390x 向けの Go 言語をどうやってインストールするかというと・・・ なんとグーグルから同環境を含めた各種プラットフォーム向けのバイナリが主要バージョン毎に提供されているのでした:
https://storage.googleapis.com/golang/

Windows や Linux, OS X 向けはもちろん、ARM デバイス向けのバイナリも提供されています。そしてメインフレーム Linux である s390x アーキテクチャのバイナリも提供されていることが分かります:
2017012001


2017/Jan/20 現在、正式リリースされている中では 1.7.4 が Go 言語の最新バージョンだったので、これをダウンロードして利用することにします:
# cd /tmp
# wget https://storage.googleapis.com/golang/go1.7.4.linux-s390x.tar.gz
# tar -C /usr/local -xzf go1.7.4.linux-s390x.tar.gz

上記のコマンドで /usr/local/go 以下に Go を展開しました。環境変数 GOPATH と合わせて PATH を設定しておきます:
# vi /etc/bashrc

    :
(最後に以下の2行を追加して保存) : export GOPATH=/usr/local/go/ export PATH=$PATH:/usr/local/go/bin

改めてログインし直し(或いは source /etc/bashrc を実行し)、Go 言語のバージョンを確認してみます(青字が出力結果):
# go version
go version go1.7.4 linux/s390x

正しくインストールできたと同時に、s390x 環境で Go 言語を導入できたことが確認できました。

マンホールマップを Google の Search Console に登録して、どんなキーワードで検索された結果としてマンホールマップが使われているのか? を解析してみました。

使ったサービスはこれです:
Google Search Console

2016122700



ここにログインし、「検索アナリティクス」メニューから対象期間を選びます。また「クエリ」を選択して、検索キーワードごとに統計を出せるようにしました:
2016122705


ここで得られる結果はこのままだと取り扱いが難しいので CSV 形式でダウンロードしました:
2016122706



これで UTF-8 で書かれたクエリーごとの検索データを CSV で取得することができました。このファイル名を searchs.csv とします。

CSV のままだと取り扱いが不便なので、MySQL データベースに入れちゃいましょう。適当な(笑)MySQL データベースに、こんなスキーマのテーブルを作りました(CSV が UTF-8 なので、テーブルも UTF-8 指定しています):
mysql> create table searchs( id int primary key auto_increment, query varchar(100), clicks int, shows int, ctr float, rank float ) default character set utf8;

mysql> desc searchs
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| query  | varchar(100) | YES  |     | NULL    |                |←クエリー
| clicks | int(11)      | YES  |     | NULL    |                |←検索結果からクリックされた回数
| shows  | int(11)      | YES  |     | NULL    |                |←検索結果に表示された回数
| ctr    | float        | YES  |     | NULL    |                |←クリック率
| rank   | float        | YES  |     | NULL    |                |←平均掲載順位
+--------+--------------+------+-----+---------+----------------+

先程の CSV をロードします:
mysql> load data local infile 'searchs.csv' into table searchs fields terminated by ',' (query,clicks,shows,ctr,rank);

これでサーチコンソールから取得した情報が MySQL データベースに入りました。こうなると色々楽ちんです。とりあえず phpMyAdmin あたりを使って、項目ごとに上位クエリーを調べてみましょう。

まずは検索表示回数。要は「マンホールマップが検索結果に表示された時、どのキーワードで検索されていたことが多いか?」です:
2016122702


ある意味想定通りですが、圧倒的一位は「マンホール」でした。マンホールマップを知らない人も含めた多くの人が「マンホール」を検索した結果だと思います。2位が「マンホールマップ」、知名度上がってると解釈していいでしょうか。3位は「豊井 スライド」(間にスペース)でした。これは何??ここからクリックされた形跡はなさそうだけど・・・いきなり深い謎に出会ってしまいました。。

面白いですね。では次はクリック回数。つまり検索結果に表示された回数ではなく、「検索結果に表示され、かつクリックしてマンホールマップに移動した回数」順です:
2016122701


これは「マンホールマップ」で検索した結果、マンホールマップに多く誘導できている、という当然の結果でした。そして「マンホール」で検索した人が「マンホールマップ」にたどり着いている、というパターンが2位でした。これも理想的で、いい結果です。その他地名との組み合わせで検索した結果が多くなっています。驚いたのは「さめがめ」で検索してマンホールマップにたどり着いた人がこの3ヶ月で3人いらっしゃったんですね。。。


次はクリック率(CTR=Click Through Ratio)、検索結果として表示されたうちの何%がクリックされたか、という数字です:
2016122703


いくつか 100% の例もありますが、嬉しいのは「マンホールマップ」で検索した人の 80%、「マンホール マップ」で検索した人の 60% が実際にクリックして訪れている、という結果です。マンホールファンはいい人が多いです(笑)。


最後に平均掲載順位。これは「検索結果の何番目にマンホールマップが表示されたか」の数字で小さいほど目立つ位置に表示されていることになります。そして 10 以下であれば検索結果の1ページ目に表示されていることになりますが・・・
2016122704


実はこの見方が僕もまだよく分かってなくて、例えば上記結果だけを見ると「ゆるキャラ」という検索結果に12回登場していて、その平均順位は 4.7 位(つまり最初のページに出ている)と読み取れます。マンホールマップがそんなに高い位置にいていいんだっけ?さすがにちょっと高すぎるような・・・

おそらくなんですが、実は検索時に "site:*****" とかの特殊なパラメータが付与された上での検索結果ではないかと想像しています。ただこの結果にそこまでの情報はないので、まあそのまま判断するしかないのかな、と。


ちなみにマンホールマップ全体としての平均 CTR は 8.07%、平均掲載順位は 14.3 でした。マニア向けのニッチな情報サイトから、より一般的なコミュニティサイトとして認知されるにはもう少し掲載順位を上げたい所ではあります。


こういう話は DeNA が詳しいのかな(苦笑)。

今年もマンホーラー実態調査の結果発表の季節がやってまいりました! 2016/Jan/01 から 2016/Dec/19 までのマンホールマップと連携した Google Analytics とアクセスログ、そして実データを使って、2016 年のマンホーラー(注 マンホールが好きな人)の実態と傾向を浮き彫りにする、というビッグデータ解析企画です。ちなみに昨年と一昨年の結果はこちらから参照ください:
 2014 マンホーラー実態調査
 2015 マンホーラー実態調査


2016 マンホールマップ利用動向

2016122002

1回のセッションでの平均ページ数は 4.69、直帰率は 53.53% 、平均セッション時間は 4 分 43 秒でした。昨年は 4.65 と 56.77%、4分22秒だったので全ての数字が改善の方向で推移しています。昨年と比較して、マンホールマップを訪れたユーザーが、より多くのページに移動して長く楽しんでいただいている、ということになります。直帰率 50% 切りも視野に入ってきました。

なお、アクセス数は非公開ですが、昨年比で倍近いページビュー数があった、ということを報告しておきます。


利用者の国、言語

今年は 62 の国/地域からマンホールマップをご利用いただきました(昨年は 65):
2016122012


国別のアクセス数1位はダントツで日本ですが、2位以下は毎年変化しています。さて 2016 年はというと・・・
2016122003


2位は UK(イギリス)からのアクセスでした。なんでだろう?ポンド安でみんな旅行してた?3位アメリカ、4位ロシアあたりは上位の常連国です。 今年目立って高かったのは8位イラク、11位タイ、14位ミャンマーあたりでしょうか。水道関係者やインフラ整備で派遣されている皆様がこれらの国々で活躍されている姿が目に浮かんできます。。



日本国内の市区町村別アクセスランキング

では日本国内の市区町村別ではどのようなランキングだったかを調べてみました:
2016122004


見やすいように日本語で表にして、昨年からの順位推移を含めてみました:
1大阪市
2横浜市
3加古川市
4港区
5新宿区
6名古屋市
7(取得不可) -
8さいたま市
9札幌市
10市川市
11(東京都)中央区
12京都市
13新潟市
14千葉市
15福岡市
16世田谷区
17渋谷区
18神戸市
19船橋市
20江東区


アクセス記録一位は大阪市の2連覇。関西マンホールサミットの影響なのでしょうか?そしていわゆる「大都市」が軒並みランクを下げる中で加古川市や船橋市、市川市といった衛星都市が順位を挙げています。マンホール界では地方分権が進んでいるようです。


利用環境

利用しているブラウザ環境を同様の表にまとめてみるとこんな感じです:
1Chrome34.26%
2Internet Explorer23.34%
3Safari17.13%
4モバイル Safari11.47%
5Edge6.18%
6FireFox4.20%
7モバイル Chrome2.74%
8(クローラーボット)0.24% -
9Opera 0.17%
10Mozilla 互換0.09%


1位は推奨環境でもある PC の Chrome、非推奨環境と明確に言っているにも関わらず2位が IE、3位は Safari、ここまでは昨年と同順位です。変わったのはその下でモバイル Safari が伸びているのは iPhone 利用者が増えていることを意味しています(逆にモバイル Chrome が落ちているので Android 利用者は減っている)。このあたりはグローバルスタンダードを逆行しています(苦笑)。また昨年は 0.55% だった Edge が FireFox を抜いている点も見逃せません。。

なお、10位の "Mozilla 互換" というのは、ネットテレビだったり、ゲーム機だったりが考えられます。まだまだ少ないのですが、いずれこういう環境も増えていくのでしょうか?テレビだと画面が広くて便利そうではありますよね。



まとめ

以上の内容から 2016 年のマンホーラーの実態は以下のようなものであったと推測されます:
・イギリスが EU から分離して、ポンド安に笑いが止まらない人がいる
・マンホーラーは昨年以上に世界中に広まっている。そして日本では地方分権が進んでいる
・マンホーラーは iPhone 派
・大阪熱い!
・Internet Explorer は不滅



さて、次回のブログでは 2016 年マンホールマップ蓋別アクセスランキングを発表します。2016年の MVM(Most Variable Manhole) の行方は!? やなぽんさん、3連覇なるか!? お楽しみに。


昨年、一部の皆様の熱狂的支持を受けたマンホーラー実態調査、2015 年の今年もやります! 世界最大の位置情報付きマンホール画像サービス「マンホールマップ」の 2015 年分の利用実態を調べました。

以下のデータは Google Analytics を使った 2015/Jan/01 から 2015/Dec/19 までのアクセスデータを元に作成しています。信じられない人がいるかもしれませんが、かなりのビッグデータ解析です。


2015年 マンホールマップ利用概要

マンホールサミットとマンホールナイト、2つの大きなイベントとその直後にアクセス数のスパイクが見られます。ある意味で「想定通り」の利用結果になりました:
2015122001


なお、1回のセッションで平均 4.65 ページが参照されています。直帰率は 56.77% で、平均セッション時間は4分22秒。つまり「1回見に来た人は、その後4分22秒間滞在して、その間に4~5ページ見てくれる」ようなサイトになっています。ウェブサービスページとしてはなかなかの滞在時間と近隣ページへの誘導が実現できている方だと思っています。


利用者の傾向

グーグルのプロフィール予測に基づいたマンホールマップ利用者の推定年齢はこのようになりました:
2015122002


↑順位は昨年と変わっていません。意外と(?)若い層がマンホールマップを使っていると見るべきか、マンホールマップを使っている人は(グーグル的に)「若い!」と推測・分類されるような行動プロフィールなのか、その辺りは謎ですが、マンホールマップおよびマンホーラーの将来は明るいと言えます。

次に利用者の性別です:
2015122003


↑性別に関しても若干男性が多いままで、「合コンが成立するくらいの男女比」になっています。非常にバランスよく推移しています。ただし、出会いの場になっているかどうかは知りません。

既存ユーザーと新規ユーザーとのバランスもいい感じでした:
2015122007


↑既存ユーザー 41.3% に対して、新規ユーザーが 58.7% 。この差は昨年よりも開きました。新しいユーザーの開拓にも成功し続けていることが分かります。

最後に利用者の趣味・興味分野を見てみましょう:
2015122004


↑これは先程の推定年齢にも関係しているかもしれませんが、マンホールマップ利用者の趣味・興味分野が比較的アクティブなものになっています。それもあって、実年齢はともかく若いと判断される人の趣味になっているのかもしれません。加えて、マンホーラーの IT 率は相変わらず高いようです。


利用者の国、言語

マンホールマップのアクセスログに残されたユーザーエージェント情報を元に、この一年間でどのような国から利用されているのかを図示しました。1回でもアクセスが記録されていた国には青っぽい色が付けられています:
2015122005


主要国はほぼ含まれているといっても過言ではありません!

実は日本を含めて65ヶ国からのアクセスが記録されていました。国別アクセス数では日本がダントツですが、では2位以下はどのようになっていたのでしょうか?

2015122006


↑2位はアメリカ(昨年7位)でした。3位は(おそらくクローラーボットなど、ヘッダ情報のないアクセスだったため)国名が取得できないアクセスだったので無視します。昨年2位のロシアは実質3位でした。 なんというか、世界中から参照されていることを実感します。

ということはマンホールマップの国際対応を意識する必要が出てきます。マンホールマップはリリース当初から英語対応されていますが、更なる国際化を急ぐ必要があるのでしょうか? ではどの言語に対応すべきか、という問題をアクセスログに残された言語設定から見てみると、こんな結果になりました。ロケールの設定方法が統一されていないので少し見にくいかもしれませんが、生データだとこんな感じです:

1ja-jp日本・日本語
2ja日本語
3en-us米国・英語
4(取得不可) 
5en英語
6pt-brブラジル・ポルトガル語
7zh-tw台湾・中国語
8ruロシア語
9zh-cn中国・中国語
10cCロケール(英語)
11en-gb英国・英語
12esスペイン語
13de-deドイツ・ドイツ語
14en-au豪・英語
15es-esスペイン・スペイン語
16frフランス語
17fr-frフランス語
18it-itイタリア・イタリア語
19ko-kr韓国・韓国語
20sv-seスウェーデン・スウェーデン語


↑1位と2位は日本語、3位と5位は対応済みの(米)英語、4位は取得できないものだったので無視します。 残りの順位を見ると次はポルトガル語、中国語、ロシア語対応が必要なのでしょうか? ヤバい、知らない言語ばかりだ・・・


日本国内の市区町村別アクセスランキング

次は日本国内の市区町村別アクセスランキングです:

1大阪市
2港区
3新宿区
4横浜市
5名古屋市
6京都市
7(東京都)中央区
8札幌市
9千代田区
10千葉市
11渋谷区
12さいたま市
13(取得不可)
14福岡市
15世田谷区
16川崎市
17神戸市
18新潟市
19加古川市
20相模原市


なんと1位は昨年はベスト10圏外だった大阪市! 関西マンホールサミットの影響なのでしょうか?今回のデータで、これが個人的に一番驚きました。

なお上記表では20位まで載せていますが、21位は私の家がある船橋市でした。家からも結構見ていたつもりだったのですが、20位にも入ってなかったとは・・・ マンホーラーが東京周辺に集中する傾向が少しずつ崩れて、全国的に広まりつつある感触を感じます。


利用環境

次にマンホーラーの利用環境です。まずはブラウザから。実質的に上位6つまでが順位といえる結果でした:

1Chrome30.08%
2Internet Explorer28.01%
3Safari16.08%
4Firefox8.49%
5モバイルSafari7.55%
6モバイルChrome7.14%
7(不明)0.90%
8Opera0.87%
9Edge0.55%
10Amazon Silk0.06%


1位は推奨環境でもある Chrome でした。昨年は(非推奨環境の)Internet Explorer が1位だったのですが、地道な啓蒙活動が実りつつあるとポジティブに解釈させていただきます。とはいえまだ2位。あと Edge も9位に顔を表しています。10位のは知らないな・・・

そして OS 別だとこんな感じです。実質は上4つが順位で、5位以下は1%未満です:

1Windows49.26%
2iOS21.39%
3Android17.61%
4Macintosh9.75%
5(不明)0.96%
6Linux0.90%
7Nintendo Wii0.04%
8Chrome OS0.02%
9NTT DoCoMo0.02%
10BlackBerry0.01%


ある意味想像通りで、上位4つは昨年と変わっていません。ただ Linux デスクトップからのアクセスが思っていたよりも少なかった印象です。あとは Wii やドコモのガラケーから使っている人もいるんですね。ちゃんと見れてるのかな・・・

※BlackBerry のアクセスログはたぶん自分です


まとめ

以上の内容から、2015 年のマンホーラーの実態はこのようなものであったと推測されます:

・相変わらず女性に人気があり、新規ユーザーも増え続けている
・「若いですねぇ」とか「そんな歳に見えませんよぉ」と言われているような人がマンホーラー
・マンホーラーは世界中にいるし、日本国内でも東京一極集中から分散しつつある
・マグロが止まったら死ぬように、InternetExplorer を使ってないと死ぬ人がいる



さて、次回のブログでは 2015 年のマンホール蓋別年間アクセスランキングを発表します! 2015 MVM(Most Variable Manhole) に選ばれるのはあの人気蓋なのか!?それとも昨年のような伏兵が現れるのか!? そして期待の新人賞の行方は!!??  お楽しみに!


(追記 2015/Dec/22)
続きはこちら


WebView は、「ネイティブアプリに内蔵して使うブラウザ」です。

HTML5 をベースにするなどして、ネイティブアプリっぽい見栄えになったウェブアプリケーションであっても、利用するには URL を打ち込むか、ブックマークから選択するなどして(つまり、あくまでウェブページとして)利用することになります。

でも、そのようなウェブアプリは簡単にネイティブ化する方法があります。それが上述の WebView を使う方法です。WebView 自体はネイティブアプリケーションに組み込んで使う部品ですが、例えば「全画面 WebView だけを表示するネイティブアプリ」を作れば、(メニューの表示項目は何にするか、JavaScript を有効にするか無効にするか、最初に表示するページの URL はどうするか・・・などの設定項目はありますが)それはウェブブラウザでウェブページを見ているのと大きく変わりません。モバイルUIに対応したウェブページを比較的簡単にネイティブアプリ化する方法、といえます。

実際に自分も Android アプリ開発の中で使ってみる機会があったのですが、そこで想定外のことに1つ躓きました。それがタイトルにある「何も考えずに Android の WebView を使うと viewport が無視される」ということです。

これがバグ扱いなのか、何らかの理由があっての仕様なのかもよくわかりませんが、ともあれ何故か viewport は無視されてしまいます。

そしてそれが原因で、本来モバイルUIで表示されるべきページが、WebView を使って見た時だけモバイル端末と判断されず、PC 用の UI で表示されてしまう、という現象が起こってしまいます。

で、これを回避するための方法がこちらです。色々設定してますが、今回の肝は青字部分の2つ:
(1) 読み込み時にページ横幅を画面幅に無理やり合わせる
(2) ワイドビューポートへの対応
public class MainActivity extends Activity{
  public WebView webView = null;

  protected void onCreate(Bundle savedInstanceState){
      :
      :
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_main );

    webView = ( WebView )findViewById( R.id.webView1 );

    //. JavaScript 有効
    webView.getSettings().setJavaScriptEnabled( true );

    //. リンクタップ時に標準ブラウザを使わない
    webView.setWebViewClient( new WebViewClient() );

    //. (1) 読み込み時にページ横幅を画面幅に無理やり合わせる
    webView.getSettings().setLoadWithOverviewMode( true );

    //. (2) ワイドビューポートへの対応
    webView.getSettings().setUseWideViewPort( true );

      :
      :
    //. 初期URLを指定してロード
    webView.loadUrl( "http://neppi.co/" );
  }

  :
  :
}

これで viewport を読んでいる時と同様に画面幅を強制的に変更して、本来の(モバイルUIの)ページに対応させることができました。

なお、WebView に関しては Android 4.3 以下の(WebKit ベースの)WebView については Google による脆弱性サポートが提供されなくなる、というニュースがありました(4.4 以上の Chrome ベースの WebView に対してのみサポート継続):
Google No Longer Provides Patches for WebView Jelly Bean and Prior

4.3 以下ってまだ結構多いはず。そして WebView を使ってるアプリってどのくらいあるんだろ?? その意味でも少し気になるニュースではあります。







 

このページのトップヘ