UXエンジニアになりたい人のブログ

エッチだってしたのにふざけんなよ!

日本未発売(?)のスマート体組成計Withings Body CardioをApple Storeでゲット!

f:id:uxlayman:20160807123345j:plain

iPhoneで体重が記録できるWithingsの体重計を使っていたのですが、今年1月くらいから体脂肪が測れなくなってしまって、どうしようかと思っていたのです。

そんな中、今年(2016年)6月に、体脂肪に加えて、体⽔分率、⾻量、筋⾁量、⼼拍が測定できる新型が発売されて、こいつが日本で発売されたら速攻で買おうと決めて日々を過ごしていました。

 

しかし、ひょんなことから実はApple Storeですでに発売が開始されていたことが判明!!「限定」ってあるから日本ではApple Store限定発売なのかな?

というわけで公約通り速攻で購入しましたのでレビューしていきます。(文末に詳しく書きましたが、Apple Store経由で買って、保証関係がどうなるかだけはちょっと気になります)

 

 

箱とか

f:id:uxlayman:20160807121202j:plain

はこどーん。この箱とほぼ同サイズの配送用ダンボール箱に入ってきました。

 

 

f:id:uxlayman:20160807121239j:plain

箱裏の注意書き一部。あらゆる表記が英語、中国語、日本語の3ヶ国語表示。

 

 

f:id:uxlayman:20160807121449j:plain

 箱の中にもう一個内箱が入っていて、これが上に開くようになっている

 

 

f:id:uxlayman:20160807121510j:plain

こんな感じ

 

 

f:id:uxlayman:20160807121528j:plain

取り出すと裏に薄いマニュアル。上の方に見えるロゴ入りのちっちゃい箱の中に充電用USBケーブル(ただし充電済みなのでしばらくは使わない)

 

続きを読む

【ポケモンGO】画面を見ずにポケモンをゲットする方法

7/31のアップデートでできなくなったようです。

ボールが投げられずに消費した音だけ聞こえるか、投げられるけど先制攻撃っぽくない普通の軌道で投げるだけ、となってしまうようです。残念!

 

ポケモンGO、やってますか。

このゲーム、モンスターボールの操作が割とシビアなので、ポケモンを捕まえるときはちゃんと立ち止まって画面を見ざるをえないと思っている人が大半でしょう*1

が、実は画面を見ずにポケモンをゲットする方法が発見されたのでそれを紹介します。

 

*1:ていうか立ち止まらないで画面を凝視しながら歩くのやめれ

続きを読む

【改良版】コピペで簡単!はてなブログで「文中にアドセンス広告を入れる」を自動化する方法

2017/1/26追記
さらに楽をしたい方は以下の記事をご覧ください

uxlayman.hatenablog.com





uxlayman.hatenablog.com
上記記事は当ブログの密かな人気記事なのですが、どうも最近問題が発見されたようです。



http://www.toma-g.net/entry/kijinaka_yasuiwww.toma-g.net
okanewofuyaso.hateblo.jp

要は

記事上下の広告を移動するスクリプト使う
→(2重、もしくは多重カウントされて)アクティブビュー視認可能率が下がる
→(みんなが見ない場所に貼られた広告だと判断されて)広告単価が下がる

という話であるようです。
ということで改良版をつくりました。
今回も、コピペで簡単やで!(けど、ちょっとだけ注意点があるので気をつけてや!あと、いつでも元の状態に戻せるようにメモ帳にでもなんにでもバックアップはとっとっきましょう^^)



設定方法

ダッシュボード→デザイン→カスタマイズ→記事上下のカスタマイズ→「記事ページのプレビュー」を設定→「記事下」または「記事上」

<script>
var adsenseCode = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    var $target = $('.entry-content h3,h4,h5');
    $target.eq(Math.floor($target.size() / 2)).before($('.insentense-adsense'));

    $('.insentense-adsense').html(adsenseCode);
}, false);
</script>
<div class="insentense-adsense"></div>

諸注意など
  • 超重要:上にも書きましたが、アドセンスコードをコピペしたあと、2箇所ある「/script」を「/scrip」に修正してください!これをしないと広告そのものが表示されなかったり、画面がおかしなことになると思います。変えるのは2箇所だけで、4箇所ではないです。ちゃんと出来てない場合ははてなブログのダッシュボードで設定した時点で「緑色の領域」が下の画像のようになってないはずのなので、うまくいかない場合はまずこれを確認してください。

f:id:uxlayman:20160728225540p:plain

  • 本文中で大見出し、中見出し、小見出しの数を数えていって、真ん中に当たる部分の見出しの前に挿入します。

  • 大見出し、中見出し、小見出しのどれもない場合は何もしません(そのまま記事下に表示される)

  • 挿入対象は以下の3〜7行目の部分なので、アドセンスコードの周りのスタイル等適宜調整してください。上記例では、コードの上に「広告」という文字、下に空行を入れています。
<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

  • 「もっと読む」の下に広告入れている例が多いようなのですが、はてなブログは「もっと読む」の位置がソース的に記載されていないようなのでできませんでした。



挿入位置のカスタマイズ

基本的には

    var $target = $('.entry-content  h3,h4,h5');
    $target.eq(Math.floor($target.size() / 2)).before($('.insentense-adsense'));

このコードがカスタマイズ位置を特定しているので、ここの部分を変えることになります。


応用例1:「真ん中」の大見出しの直後に広告を入れる

対象を大見出し(h3)だけに絞り、「直後」を表すafterに変える

<script>
var adsenseCode = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    var $target = $('.entry-content h3');
    $target.eq(Math.floor($target.size() / 2)).after($('.insentense-adsense'));

    $('.insentense-adsense').html(adsenseCode);
}, false);
</script>
<div class="insentense-adsense"></div>

応用例2:最初の大見出しの直後に広告を入れる

応用例1に加え、追加対象見出しの条件を「最初」を表すeq(0)にする。eq(0)の部分をeq(1)とかeq(10)とかにすれば、「n番目の」という意味になる

<script>
var adsenseCode = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    var $target = $('.entry-content h3');
    $target.eq(0).after($('.insentense-adsense'));

    $('.insentense-adsense').html(adsenseCode);
}, false);
</script>
<div class="insentense-adsense"></div>

応用例3:2つのアドセンスコードを別の位置に入れる

ポイントはそれぞれのアドセンスコードの名前を変える(下記insentence-adsenseとinsentence-adsense2)ことと、変数名を変える(下記adsenseCodeとadsenseCode2)ことと、挿入位置を変える(「$target.eq(Math.floor($target.size() *1/ 3))」のところ)です。
下記例は、上から1/3にある見出しの上と、上から2/3にある見出しの上にコードを入れる例。
最初と最後であれば、$target.eq(0)と$target.eq($target.size()-1)でokです。

<script>
var adsenseCode = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    var $target = $('.entry-content  h3,h4,h5');
    $target.eq(Math.floor($target.size() * 1 / 3)).before($('.insentense-adsense'));

    $('.insentense-adsense').html(adsenseCode);
}, false);
</script>
<div class="insentense-adsense"></div>
<script>
var adsenseCode2 = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコード(2つ目)の2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    var $target = $('.entry-content  h3,h4,h5');
    $target.eq(Math.floor($target.size() * 2 / 3)).before($('.insentense-adsense2'));

    $('.insentense-adsense2').html(adsenseCode2);
}, false);
</script>
<div class="insentense-adsense2"></div>

応用例4:フッターの先頭(ブログパーツの前)に入れる

2016/8/6追記
通常、フッタに指定したアドセンスやその他ブログパーツは、はてなが提供するブログパーツの後ろになりますが、これを前(本文の直後)に持ってくるコードです。
フッター部分はPC、スマホとも共通でentry-footerなので、ここの先頭にコードを入れる"prepend"を利用します。

<script>
var adsenseCodeF = (function () {/*

<p>広告</p>
<!-- 自分のフッタ用アドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    $('.entry-footer').prepend($('.footer-adsense'));

    $('.footer-adsense').html(adsenseCodeF);
}, false);
</script>
<div class="footer-adsense"></div>

応用例5:場所が見つからなかったらともかく文中に入れる

2016/8/6追記
このコードは挿入場所が見つからなかったら、記事上または記事下にそのまま表示します。ただし、特にスマホの場合、フッタ用のアドセンスと文中用のアドセンスを両方「記事下」に設定して、文中用アドセンスが挿入できないと、アドセンスが2つ並ぶことになり、ポリシー違反になる可能性があります。
これを防ぐため、「見つからなかったらともかく真ん中に」を実現するコードが以下です。$target.size() > 0が挿入場所が見つかったことをさします。

実行例は以下の記事などをご覧ください。この記事は見出しが1つもありませんが、レクタングル(大)がちょうど真ん中に挿入されています。
uxlayman.hatenablog.com

<script>
var adsenseCode = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {
    var $target = $('.entry-content h3,h4');  // 大見出しと中見出し
    if ($target.size() > 0) {
        // 「真ん中」の大見出しと中見出しの直後に入れる
        $target.eq(Math.floor($target.size() / 2)).after($('.insentense-adsense'));
    } else {
        // 大見出しと中見出しがなかったら、ともかく真ん中の段落に入れる
        $target = $('.entry-content p, .entry-content div');
        $target.eq(Math.floor($target.size() / 2)).before($('.insentense-adsense'));
    }

    $('.insentense-adsense').html(adsenseCode);
}, false);
</script>
<div class="insentense-adsense"></div>

応用例6:特定のカテゴリーが付与されている記事だけ、Adsenseを貼り付けないようにする

2017/1/21追記

Adsenseは成人向けコンテンツなどを含むページに貼り付けると規約違反になってしまうので、そういうページにだけカテゴリーをつけておいて、広告そのものを表示しないようにするコードです。

<script>
var adsenseCode = (function () {/*

<p>広告</p>
<!-- 自分のアドセンスコードの2箇所の「/script」を「/scrip」に修正してここにコピペ -->
<p> </p>

*/}).toString().match(/\/\*([^]*)\*\//)[1].replace(/scrip>/g, 'script>');

addEventListener("DOMContentLoaded", function() {

    if ($('meta[property="article:tag"][content="広告禁止"]').size() > 0) {
        return;
    }

    var $target = $('.entry-content h3,h4,h5');
    $target.eq(Math.floor($target.size() / 2)).before($('.insentense-adsense'));

    $('.insentense-adsense').html(adsenseCode);
}, false);
</script>
<div class="insentense-adsense"></div>

追加されたのは

    if ($('meta[property="article:tag"][content="広告禁止"]').size() > 0) {
        return;
    }

のところだけで、これが「『広告禁止』というタグがついていたら、なにも処理をしない」という意味になります。
これを冒頭に追加しさえすれば、挿入位置のカスタマイズやその他応用例と併存させることもできます。

技術的なお話

基本的にはadsenseコードをjavascriptの文字列として持っておいて、文中に直接書き出す、という流れになります。前回のコードと違い、移動させていないので、多重カウントされません。


コピペを簡単にするための仕掛けとして、以下のjavascript版ヒアドキュメントの仕組みを使っています。
qiita.com


これがないと延々アドセンスコードのタグをjsの文字列に書きなおさなければならなくなります。
ただ、これを使ってもなお、</script>がスクリプトの終わりだとブラウザに判定されてしまうため、苦肉の策で</scrip>に置換するようにしています。


おわりに

さて、大事なことですが、本スクリプトは自己責任でご利用ください。
スクリプトが突然動作しなくなったり、今回のように単価減の状態になったり、またポリシー違反状態になった場合等も、当ブログならびにブログ主は責任を負いません。

一応、ポリシーに違反したという話は聞きませんし、Adsenseコードをほとんどそのまま利用(ただscriptをscripに変換してるので、厳密にいえば改変は改変なのですが…)しているので、あまり問題にはならないかと思います。javascriptコメントを利用する方法は別記事「はてなブログで特定のキーワードを含む記事にはAdsenseが貼られないようにする方法 - UXエンジニアになりたい人のブログ」で紹介して、実際に運用されている方もいるようなので、ある程度枯れてきているとは思います。

とはいえ今回の話もありましたので、とりあえずしばらくは自分でも運用してみようと思います(機会損失してしまった方々ごめんなさい)*1
この記事にも、真ん中の大見出しの直後にレクダングル大が表示されてると思いますので、見た目を確認してみてくださいませ。
問題があった場合はコメントなり引用なりをしていただければ幸いです。

*1:自分で運用してればすぐ気づいて改良版を出せたんですけどね

「支持政党なし」が犯した2つの戦略ミス

支持政党なし、結局議席取れるんですかね。比例票は特に遅くまで確定しないので、なかなか大変かと思います。

ともあれ、今回の選挙で支持政党なし党は大きな戦略ミスを犯したと思っているので、それについて書いていきます。

 

非拘束名簿式比例代表に立候補した

まあ、これやね。

http://xn--68jubz91pp0oypc1c.com/top/menu-1s.jpg

via 支持政党なし

このバナー見てちょっと勘違いしちゃったんだけど。 

 

こんな事言ったけども、これ言った時は投票用紙のところが

f:id:uxlayman:20160710203936p:plain

だと思ってたんですね。これは行けるだろ、と。普通に「新しい"公的な棄権"的な選択肢」ができたと勘違いするひと出てくるだろ、と。

 

で、実際に選挙いって、投票用紙のところ見たら

f:id:uxlayman:20160710203948p:plain

こうなってた。

 

オワタ\(^o^)/

 

まあ参議院比例代表は非拘束名簿(政党名でも候補者個人名どちらを書いても良い)だから、こうなるのは最初からわかってたとは思うんですが、でもこう書いてあったら、よっぽど勘が悪くない限り「支持政党なし」が「棄権の別名」ではなくて、政党の名前だってわかっちゃうよね。

 

当人たちはもちろん否定するだろうけど、この政党が「勘違い票」も狙ってることは明らかで、その戦略は非拘束名簿方式と相性がとても悪い。

 

続きを読む

iPhoneは4Sまでは裸で使いやすかった

スティーブ・ジョブズがiPodやiPadにケースをつけることに否定的だったことはよく知られている。「傷がついたステンレスは美しい」という名言もあり、ケースを付けずに「裸」で使うべきという考えを持っていたことは明らかだろう。

そして、こちらは俗説ではあるが、iPhone 4Sの"4S"は、開発当時闘病中で4S発売の翌日に亡くなったスティーブ・ジョブズに向けた"for Steve"の略であるとの話もある。これを持ってして、真にジョブズが手がけたiPhoneは4Sまでで、それ以降は別であるという論調も根強い。

 

だからというわけではないのでだが、iPhoneは4Sまでは裸で使いやすくて、5以降急激に裸で使いにくくなったという話をしたい。

ちなみに、3・3GS・4S・5s・SEのユーザーです。

続きを読む

書籍「キャズム」が想像より遥かに良い内容だった件

キャズム Ver.2 増補改訂版 新商品をブレイクさせる「超」マーケティング理論

キャズム。本を読むまでもなく、わりと一般的な用語になっており、ご存知の方も多いのではないかと思います。

 

http://image.itmedia.co.jp/im/articles/0706/01/chasm.gif

via 情報システム用語事典:キャズム(きゃずむ) - ITmedia エンタープライズ

多くのひとが思い浮かべるのが上の図でしょう。

顧客層をイノベーター・アーリーアダプター・アーリーマジョリティ・レイトマジョリティ・ラガードに分けた時の比率と、アーリーアダプターに受け入れられてからアーリーマジョリティに受け入れられるまでにあるギャップのことだよね。キャズムって溝って意味で、そこを渡るのが大変っていう比喩なんだよね。

うん、たしかにこういう区分けって実体験からしても納得できるし、多数派にアピールするためにはマスに向けたマーケティングとか、戦略を転換する必要があるのもイメージつきやすいな。わかりやすいセグメントだね。

と、こんな感じでしょうか。わたしもそんな感じの認識でした。こういう認識だった人は、この本、読んだほうがいいです。そういう話じゃないんです。

 

キャズムを体現する本当の図

f:id:uxlayman:20160610004525p:plain

キャズムを体現しているのは上の4元図であると思っています。

縦軸は成熟度を表しています。横軸は2つのカテゴリを表していて、左半分が製品で、右半分が市場です。

ここで成熟度が下から上に洗練される様は一般的な「よくある話」であり、かなりイメージしやすいでしょう。

 

左半分の「製品」カテゴリにおける成熟は、イノベーターに技術をアピールしていたような状態、つまり"今までにない"ことはわかるけどなにに使えるのかはっきりしない(今でいうとブロックチェーン技術とかそういうのですかね)そういう状態から、特定分野におけるユースケースが見つかって、「製品」としてのパッケージングが成熟していく過程です。

ブロックチェーンで言うなら、独自の技術を持つベンダーが、例えばオークションとかコンテンツプロバイダーのようなオンライン事業者の目に止まって、彼らビジョナリー(アーリーアダプター)の厳しい実務要求に応えることによって、"個人間商取引向けパッケージ"が成熟していって、次々と同業他社に採用される事実上のデファクトスタンダード製品になる、というような状態がゴールですね。

 

右半分の「市場」でも同様で、またブロックチェーンで例えると、取引手数料の安さを武器に企業間電子商取引市場に参入した企業が、実利主義者(アーリーアダプター)の支持を得て徐々に市場における信頼を獲得し、ブランドを武器にして保守層(レイトマジョリティ)の利益を獲得する、市場に深く浸透した状態がゴールです。

 

そして、特定分野で圧倒的な機能性をもった「製品」が、巨大な「市場」に参入して地位を獲得するまでの、深い深い溝がキャズムであるわけです。

え?何いってんの?特定市場で成功した素晴らしい製品を足がかりに巨大市場で地盤を作るんでしょ?「個人間商取引を変えた革新的技術を基にした全く新しい商取引パッケージ」みたいな売り文句で。普通の連続的な変化じゃない?と思いました?

いやもう、二回目ですがそう思ってる人こそ、ほんと読んだほうがいいと思います

 

続きを読む

俺が欲しい細身でホリゾンタルでロゴが少なめの自転車

世は自転車ブームですが、わたし、ザ・レーシング!って感じの派手な自転車よりも、細身で、クラシカルで、ロゴとかが悪目立ちしない感じの自転車が好きなんですよ。

鉄と部品で職人が必要最小限に組み立てた、名前の無い一品みたいな。そんな雰囲気のやつが。

そんなわけで"それっぽい"のを並べていこうと思います。自分用備忘録ですが、何かの参考になれば。

なお、ホリゾンタルとはトップチューブ(またぐところ、逆三角形▽の上辺部分)が地面と水平(ホリゾンタル)になっている形の自転車のことです。なだぎ武のディランネタみたいなやつって言うな。

 

 

FUJI

http://www.fujibikes.jp/2016/products/ballad_r/img/item/2.jpg

FUJI BALLAD R ¥95000 クロモリ 10kg

"これ系"というとまず思い浮かぶのがFUJI。トップチューブ(逆三角形の上側)とシートチューブ(逆三角形の左下辺)に薄いロゴがあるのみで、シルバーパーツとブラウンを多用したお手本のような構成です。

リア8速しかないところがちょっと物足りないけど、見た目は好き。構成的にも値段的にも「基準」足りえるのではないでしょうか。

 

続きを読む