gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

特定のディレクトリ以下のファイルの文字コードをUTF-8に全部変換したい時

いやなんかググって動かしたら割とあちこちコケたので、面倒なんで一回ちゃんと調べて、その辺を備忘録。
ごく大まかには
・findで対象を引っかけて
・xargsつかって
nkfに引き渡す
感じ。

find ./ -type f -name *.php | xargs -pL1 nkf -w -Lu --overwrite

で確認してから

find ./ -type f -name *.php | xargs -L1 nkf -w -Lu --overwrite

で一気。


以下、解説つけつつ。

find ./ -type f -name *.php

ここはまぁ毎度な気がするので省略。

| xargs -pL1

xargs は「コマンドの実行」。基本、標準入力で入ってきた各行に対して有効なんで、パイプ使って。
L1は「1行づつ処理」で、pは「実行するまえに確認」。
なので、実際に動かすときはp抜いて-L1にするほうが楽。

nkf -w -Lu --overwrite

対象ファイルはパイプで入ってくるので。
--overwriteで「ファイル上書き」、-wは「UTF-8に変換」、-Luは「改行コードをLF(UNIX系)に」ってなあたり。
それ以外が必要そうならnkf調べて適当に追加。

保全用

些か興味深いものがあったのですが、ちぃと魚拓の取りにくい感じなつくりになっていたので。
せめて「テキスト文書だけでも」と思い、保全


ここの作り的に「改行が1つだと表示的に改行にならない」ので、改行文字だけちぃと増やしました。
具体的には


s/\n\n/\n\n\n/g


ってな感じのことをしました。
それ以外は一切いじってないです。


元ネタ
プライバシーポリシー
https://talentio.com/m/agreement/privacy

プライバシーポリシー
当社は、人材採用や人事管理など、人材に関する多様な事業を主力事業とする企業として、 個人情報・プライバシーを大切に保護することを当社の重要な社会的使命と認識しております。 役員及び従業者(以下「従業者等」といいます)は, 当社が事業で取り扱う個人情報・プライバシー関連情報及び当社従業者等の個人情報・プライバシー関連情報に関して、 個人情報保護に関する法令及び当社に関連する事業法の個人情報保護規定を遵守します。 また,当社は,常に社会的要請の変化に着目しつつ個人情報・プライバシー保護を徹底した事業運営を行います。
当社の提供する人材採用ツール「Talentio」(以下、「本サービス」といいます。)における個人情報の取扱いについて、 以下のとおりプライバシーポリシー(以下「本ポリシー」といいます。)を定めます。
個人情報の取り扱いについて


個人情報の定義について


個人情報とは、職業安定法(昭和22年法第141号)第4条第9項により定義された個人情報、すなわち、 「個人に関する情報であって、特定の個人を識別することができるもの (他の情報と照合することにより特定の個人を識別することができることとなるものを含む。)」を意味するものとします。
個人情報の利用目的について


当社は以下に掲げる利用目的のために個人情報を収集します。
(1)
本サービスの会員情報の認証、管理、事務連絡及び各種サービス機能を提供するため
(2)
当社と契約した事業者または求人企業に3.(4)の規定に従って情報を提供するため
(3)
当社がオンラインまたはオフラインで開催するセミナー及び各種イベント等の参加状況等,運営管理をするため
(4)
当社サービスに関するメールマガジン、その他告知情報を配信するため
(5)
アンケート、キャンペーン等の依頼、連絡、プレゼント発送等を行うため
(6)
ユーザーからの問い合わせ、質問に対する回答を行うため
(7)
当社及び第三者の商品等の広告・宣伝、販売の勧誘のため
(8)
本サービスに関する当社の規約、ポリシー等(以下「規約等」といいます。)に違反する行為に対する対応のため
(9)
本サービスに関する規約等の変更などを通知するため
(10)
上記の利用目的に付随する利用目的のため
当社が収集する情報


本サービスにおいて当社が収集する個人情報は、以下のようなものとなります。
(1)
個人ユーザー(当社の個人向けサービスに登録したユーザーをいいます。)から直接ご提供いただく情報
当社は個人ユーザーの皆様が本サービスを利用する際に、下記情報をご提供頂きます。
個人ユーザー本人の:
氏名
メールアドレス
生年月日
職歴、スキル、興味関心を含むキャリア情報
写真
その他当社が定める入力フォームにユーザーが入力する情報
(2)
個人ユーザーが本サービスの利用において、自ら,他のサービスと連携を許可することにより、当該他のサービスからご提供いただく情報
個人ユーザーの皆様が、本サービスを利用するにあたり、ソーシャルネットワークサービス等の 外部サービスとの連携を許可した場合には、その許可の際にご同意いただいた内容に基づき、 以下の情報を当該外部サービスから収集します。
当該外部サービスで個人ユーザーが利用するID(パスワードは含みません)
その他当該外部サービスのプライバシー設定により個人ユーザーが連携先に開示を認めた情報
(3)
企業ユーザーの皆様から収集する情報
当社は企業ユーザー(当社の法人等向けサービスに登録したユーザーをいいます。)の皆様が本サービスを利用する際に、 下記情報をご提供頂きます。
企業ユーザー担当者の:
氏名
メールアドレス
その他当社が定める入力フォームにユーザーが入力する情報
(4)
データ収集対象者から当社が収集する公開情報
本サービスではインターネット上で個人情報が公開されている個人(以下「データ収集対象者」といいます。)について、 インターネット上で公開されている情報の中で、下記の情報を収集します。 収集対象のウェブサイトにはソーシャルネットワーキングサイトを含みますが、 ソーシャルネットワーキングサイトでデータ収集対象者が公開対象を限定して公開している情報は収集対象に含みません。 また、当社がデータ収集対象者の公開情報を収集した後に、当該データ収集対象者が公開情報を変更し、または非公開とし、 もしくは公開対象を限定した場合、当社において保有している当該データ収集対象者の情報に反映されますが、 一定のタイムラグが生じます。
氏名
メールアドレス
生年月日
職歴、スキル、興味関心を含むキャリア情報
その他当社がサービスを向上させる目的で必要と判断する公開情報
本サービスに関する第三者提供(オプトアウト)について


当社は、当社が保有する個人データのうち、データ収集対象者の個人データを、本サービスの、 企業ユーザーのみが閲覧できるように設定したウェブサイト上に掲載する方法により、企業ユーザーの皆様に提供致します。 企業ユーザーの皆様には利用規約上の個人情報に取扱いに関する事項にご同意頂いております。
データ収集対象者の皆様からお申し出頂いた場合には、ただちに提供を停止致します。 個人データの提供の停止を希望される場合は、次の連絡先までご連絡下さい。


【連絡先】
住所:東京都渋谷区神宮前2-33-16
メールアドレス:info@talentio.com
その他の第三者提供について


当社は、個人情報のうち、個人情報については、 上記3.及び個人情報の保護に関する法律(平成15年法律第57号,以下「個人情報保護法」という。) その他の法令に基づき提供が認められる場合を除くほか、あらかじめユーザーの同意を得ないで、第三者に提供しません。
個人情報の委託について


当社は事業運営上、業務委託先に個人情報の取り扱いを委託することがあります。 この場合、当社は、個人情報を適切に保護できる管理体制を敷き実行していることを条件として委託先を厳選したうえで、 契約等において個人情報の適正管理、機密保持などによりユーザーの個人情報の漏えい防止に必要な事項を取決め、 適切な管理を実施させます。
三者による個人情報の取扱いに関する免責事項


以下の場合は、第三者による個人情報の取扱いに関し、当社は何らの責任を負いません。
(1)
ユーザー自らが本サービスの機能または別の手段を用いて事業者、求人企業等の第三者に個人情報を明らかにした場合
(2)
ユーザーの活動情報またはユーザーが本サービスの利用に関して投稿等した情報により、第三者にユーザー本人が特定されるにいたった場合
(3)
本サービスからリンクされる外部サイトにおいて、ユーザーにより個人情報が提供され、またそれが利用された場合
(4)
ユーザー本人以外がユーザー個人を識別できる情報(ID,パスワード等)を入手した場合
ユーザーの追加情報の取得について


当社は、当社の事業の円滑な運営の目的で、当社がユーザーの個人情報を提供した事業者から、 内定の事実、入社予定会社、入社予定日、予定年収その他本サービスの利用に関するユーザーの追加情報を取得することがあります。
統計処理されたデータの利用


当社は、提供を受けた個人情報をもとに、個人を特定できないよう加工した統計データを作成することがあります。 個人を特定できない統計データについては、k-匿名化や適切な一部抽出(サンプリング)等の手法を用いて作製することとし、 公表または第三者提供を行う場合は、個人情報が含まれていないことを確認することと致します。
本人確認について


当社は、ユーザーの会員登録の場合や会員が本サービスを利用する場合、 個人情報の開示、訂正、削除もしくは利用停止の求めに応じる場合など、 個人を識別できる情報(氏名、電話番号、メールアドレス、パスワード等)により、本人であることを確認します。 ただし、本人以外が個人を識別できる情報を入手し使用した場合、当社は責任を負いません。
特定個人を識別しないで用いる属性情報・行動履歴の取得及び利用について


当社は、ユーザーのプライバシーの保護、利便性の向上、広告の配信、及び統計データの取得のため、Cookieを使用します。 また、当社はCookieJavaScript等の技術を利用して、会員登録時等にご提供いただいた情報のうち年齢や性別、職業、 居住地など個人が特定できない属性情報(組み合わせることによっても個人が特定できないものに限られます)や、 サイト内におけるユーザーの行動履歴(アクセスしたURL、コンテンツ、参照順等)を取得することがあります。 これらの属性情報及び行動履歴を個人情報に紐付けることはせず,紐付け可能な形で取得することはありません。 なお、Cookieの受取りは、ブラウザの設定によって拒否することができます。拒否した場合本サービスをご利用頂く上で、 一部機能に制約が生じることがあります。
個人情報の開示


当社は、ユーザーから、個人情報保護法の定めに基づき個人情報の開示を求められたときは、 法令に従って、ユーザーご本人からのご請求であることを確認の上で、ユーザーに対し、遅滞なく開示を行います (当該個人情報が存在しないときにはその旨を通知いたします。)。 なお、個人情報の開示につきましては、手数料(1件あたり1,000円)を頂戴しておりますので、あらかじめ御了承ください。
個人情報の訂正及び利用停止等


(1)
当社は、ユーザーから、 (1)個人情報が真実でないという理由によって個人情報保護法の定めに基づきその内容の訂正を求められた場合、及び (2)あらかじめ公表された利用目的の範囲を超えて取り扱われているという理由 または偽りその他不正の手段により収集されたものであるという理由により、 個人情報保護法の定めに基づきその利用の停止を求められた場合には、法令に基づき、 ユーザーご本人からのご請求であることを確認の上で遅滞なく必要な調査を行い、その結果に基づき、 個人情報の内容の訂正または利用停止を行い、その旨をユーザーに通知します。 なお、合理的な理由に基づいて訂正または利用停止を行わない旨の決定をしたときは、ユーザーに対しその旨を通知いたします。
(2)
当社は、ユーザーから、ユーザーの個人情報について消去を求められた場合、当社が当該請求に応じる必要があると判断した場合は、 法令に基づき、ユーザーご本人からのご請求であることを確認の上で、個人情報の消去を行い、その旨をユーザーに通知します。
プライバシーポリシーの変更手続


当社は、ユーザーに関する情報の取扱いに関する運用状況を適宜見直し、継続的な改善に努めるものとし、 必要に応じて、任意で本ポリシーを変更できるものとします。この際、重要な変更が含まれる場合には、ユーザーに個別に通知を行います。 又、本ポリシーの変更履歴は、変更部分が分かる形で公開します。
お問い合わせ窓口


ご意見、ご質問、苦情のお申出その他ユーザー情報の取扱いに関するお問い合わせは、下記の窓口までお願い致します。


住所:〒150-0001 東京都渋谷区神宮前2-33-16
ハッチ株式会社
E-mail:info@talentio.com
(C) Copyright 2015 Hatch Inc All Rights Reserved.

redmineインストール殴り書き

備忘録としてですら怪しいような殴り書きなので、適当に見て下さいませ。

rubyは、1.9系にすると楽」って話が。yumで普通に入れると1.8系でした。
もしかすると、下記がとても楽になる、かも、なので、一応念のため。

試行錯誤しながらかなり「雑に」やってるので、手順が色々と滅茶苦茶なのは気にせずにw


yum install mysql
yum install mysql-devel
yum install mysql-server
yum install nginx
yum install ruby


su - gallu
sudo yum install rdoc
wget http://production.cf.rubygems.org/rubygems/rubygems-2.2.2.tgz
tar zvxf rubygems-2.2.2.tgz
sudo ruby ./setup.rb


# rootに戻って
gem uninstall -v 2.2.2 rubygems-update
gem install -v 1.8.17 rubygems-update
update_rubygems
gem -v


yum install ruby-devel


# なんかバージョンが駄目ぽいのでソースからinstall
su - gallu
wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz
./configure
make
sudo make install


gem install rails -v 3.2.3


# 気づいたのでバージョン上げておく
gem install -v 1.8.29 rubygems-update
update_rubygems


# redmine用各種
gem install bundler
exit


# 以下、galluアカウント
cd
mkdir redmine
cd redmine
wget http://www.redmine.org/releases/redmine-2.5.1.tar.gz
tar zvxf redmine-2.5.1.tar.gz
cd redmine-2.5.1


#
sudo vi /etc/my.cnf
(default-character-set=utf8)
sudo /etc/rc.d/init.d/mysqld start


SQL発行
mysql -u root -p

create database redmine default character set utf8;
grant ALTER, CREATE, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE on redmine.* to redmine@localhost identified by 'ぱすわぁど';
flush privileges ;


# redmineのinstallカレントディレクトリにて
cp -p config/database.yml.example config/database.yml
vi config/database.yml
# 3箇所ほど接続情報があるぽいので、書き換える


sudo gem install mysql2
bundle install --without development test postgresql rmagick


# ----
sudo RAILS_ENV=production bundle exec rake db:migrate

めも

rake aborted!
cannot load such file -- bundler/setup

って出てきた時、コマンドにsudo付けてなかったので。
なんか、rootがいるのかもしれない…よぉわからん。
めも終わり


sudo RAILS_ENV=production bundle exec rake redmine:load_default_data
sudo bundle exec rake generate_secret_token


# テスト用。http://IPアドレス:3000/ でアクセス確認
sudo ruby script/rails server webrick -e production


#----------------------------
sudo gem install unicorn

vi config/unicorn.rb
# あちこち未検証。あとで修正する可能性

worker_processes 2
#working_directory /home/www/rails/charag

listen File.expand_path("tmp/unicorn.sock", ENV['RAILS_ROOT'])
pid File.expand_path("tmp/unicorn.pid", ENV['RAILS_ROOT'])

timeout 60

preload_app true # ダウンタイムをなくす

stdout_path File.expand_path("log/unicorn.stdout.log", ENV['RAILS_ROOT'])
stderr_path File.expand_path("log/unicorn.stderr.log", ENV['RAILS_ROOT'])

GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true

before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!

old_pid = "#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end

sleep 1
end

after_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end


vi Gemfile

# add
gem "unicorn"


# 起動&テスト
sudo bundle exec unicorn_rails -c config/unicorn.rb -E production -D -p 5001


#
sudo vi /etc/nginx/nginx.conf

http {
+ upstream redmine{
+ server 127.0.0.1:5001;
+ }

sudo vi /etc/nginx/conf.d/virtual.conf

server {
listen 80;
server_name redmine.m-fr.net;

access_log /var/log/nginx/redmine.access.log;
error_log /var/log/nginx/redmine.error.log;

location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

### Reverse Proxy for Redmine on Unicorn
location / {
rewrite ^/(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:5001;
}
}

# サーバ起動
sudo /etc/rc.d/init.d/nginx start


# mail関連の設定を変更:内容は公式サイトあたりを確認して
cp config/configuration.yml.example config/configuration.yml
vi config/configuration.yml


感想:
うん…バージョン依存がしんどい orz
Rubyistな人達が「バージョン管理は自動でtoolで」って言っている気持ちがよくわかる…けど、それって「まず"シンプルに疎結合で作る"っていう第一歩でしくじってる」ような気もするんだけどどうなんだろう?
「新しいのだと困らない」って話もあるので、カイゼンされていると信じたい…
あと、redmine、最新に対応していただけるとありがたいんだが。
ruby2.1系とかで動くのかしらん?

RubyGemsの2.2.2入れた時、railsが上手いこと入らないような感じがしたのだけど…なんかあるのかしらん?
現状さほど興味ないので、ざっくりと疑問だけ書いてみる B-p


この辺が落ち着いて「スムーズに動く」ようになってから試すかなぁ…現状だと、なんか「環境に対するTips」が結構なコストかけてしまいそうで、若干、躊躇(苦笑

相関関係と因果関係の違い

わかっちゃえば後はなんてことない話ではあるのですが。
ここが分からない、或いは「分かっていて欺そうとしているクラスタ」あたりが、比較的あちこち…具体的には、マーケティング(分析)とかコンサルティングとかビッグデータとかグロースハックとかその他諸々…で見受けられるので。
ちょうど面白い記事も見つけたことだしってんで、ちょいと言及してみようか、と。


相関関係も因果関係も、基本的には2つ(以上)の変数が関わり合います。
例えば…
・夏場における「外気温」と「アイスコーヒーの売れ行き」
・お正月における「来客数」と「お年玉総取得合計金額」
・ゲームサイトにおける「会員登録数」と「売り上げ」
・登録フォームにおける「入力項目数」と「drop率(或いは登録率)」
・解約ページにおける「解約のしにくさ」と「解約率(から予想される売り上げ)」
など。
これらは、多くの場合に、計測すると「一方が増加すると、他方が増加または減少する、二つの変数の増減の具合が、とても似通っている、つまり"相"互に"関"係している、つまり相関している」かもしれないっていうかそんな気がする直感的に。なんかそんな感じ。


夏場は、クソ熱ければ、そうでもない時よりも、アイスコーヒーはたくさん売れるかもしれません(ここでアイスティーとかアイスとかシャーベットとかジェラートとか連想しちゃいけません。ここには、冷たい飲食物はアイスコーヒーしかないんです!)。
お正月。大体「一人頭くれる金額」が似たようなものだとすると、「何人のお客様がいらっしゃいやがるか」は、get出来るお年玉金額にきっと多大なる影響を及ぼすでしょう。
ゲームサイトで、ユーザ登録数が増えればユーザが増えるので、きっと「サイトの売り上げ」だって上がるに違いありません。


なんとなく「それっぽい」感じで例をいくつか挙げてみました。
上述いずれも「相関関係がある」、正確には「相関関係があるっぽい」もの、になります。
「っぽい」ってのは簡単で。実測しているわけではないので、断定は出来ないわけです。あくまでも「っぽい」ってだけ。


さて…「証明されている、相関関係のある」変数に、以下のような物、があるそうです。
1999年〜2009年までの…
・「アメリカの科学・宇宙・テクノロジーに関する支出」と「首つり自殺数」の上昇傾向
・「水泳プールでの溺死数」と「ニコラス・ケイジの映画出演数」
・「アメリカ人1人あたりのチーズ消費量」と「ベッドシーツに絡まって死亡する数」
・「アメリカ・メイン州の離婚率」と「アメリカ人1人あたりのマーガリン消費量」
・「ミス・アメリカの年齢」と「蒸気・熱蒸気・その他熱いものによる殺人数」
・「ノルウェーからアメリカへの原油輸入量」と相関する「列車衝突による自動車運転手の死亡数」
・「アメリカ人1人あたりのモッツァレラチーズ消費量」と「米国の土木工学博士号授与数」
・「アメリカ人1人あたりのチキン消費量」と相関する「米国の原油輸入総量」
・「蜂の巣から生産されるハチミツの量」と「バーモント州における婚姻率」
・「政治活動委員会(PAC)の合計数」と「車椅子からの落下による死亡者数」


ネタ元はこちら。
http://gigazine.net/news/20140512-spurious-correlations/
厳密には、こちらは「相関関係があるっぽい」ではなくて「相関関係がある」、です。
実測値からちゃんと計算しているので、「っぽい」という曖昧なものが入らない分、より確実に「相関関係にある2つの変数」です。


さて。
では、この相関関係から、色々と状況分析と状況改善を図っていきます…ってあたりは、マーケティングとかPDCAとかグロースハックとか、その辺の文脈でおなじみの流れに乗っけていきましょう。
イメージしやすくてぶっちゃけると「欺しやすい」ところで話を進めていきます*1


・お正月における「来客数」と「お年玉総取得合計金額」
・ゲームサイトにおける「会員登録数」と「売り上げ」


お正月の来客数が増えるとお年玉が増えます。これはもぉ、両親やらなにやらにお願いして、部下同僚上司から近い親戚遠い親戚まで総動員して「来て頂くように」お願いをすれば、きっと正月の臨時収入は、うはうはです! 懇願から泣き落とし、場合によっては「軽い脅迫」まで含めて、なんとしてでも来客数が増えるように手段を尽くしてみましょう!
ゲームサイトで「売り上げを上げたい」なら、広告などをうって「会員登録数」を増やす事が有効です! 友達紹介から登録無料特典などなど、とにかく「会員登録数を増やす」為に、万策を試してみましょう!


さて。
同じ論調で、以下のことが言えます。


ニコラスケイジが映画にたくさん出演すると、水泳プールでの溺死数が増えます。溺死数を減らすために、ニコラスケイジの映画出演を食い止める必要があるでしょう。
アメリカ人1人あたりのチーズ消費量が増えると、ベッドシーツに絡まって死亡する数が増えるようです。チーズの流通を制限して、「ベッドシーツに絡まって死亡する数」が減るようにしましょう。
蜂の巣から生産されるハチミツの量が増えると、バーモント州における婚姻率が上がるようです。ミツバチを過労死寸前まで働かせることで、バーモント州における婚姻率を高めることもできますし、ミツバチを全滅させれば「リア充滅べ!」ってのが出来るわけです。
アメリカ人1人あたりのモッツァレラチーズ消費量を増やすと、米国の土木工学博士号授与数が増えます。博士をふやしたければ、モッツァレラチーズをもっと食べましょう!


…馬鹿じゃないかと正直思うわけなんですが。
「ゲームサイトで「売り上げを上げたい」なら、広告などをうって「会員登録数」を増やす事が有効です」ってのは、せいぜい「同じ程度のレイヤーの会話」でしか無いわけですね。
少なくともここの時点までは。
先に答えを書いてしまうと「2つの変数は、現時点においては少なくとも"相関関係である"ってだけでしかない」ので。「相関関係がある」程度で「改善策」にまで話を進めてしまうと、話が歪んでしまうんですね。


以下、少し詳細に。


似非マケ屋とか(似非なのかホンモンなのか知らないけど)グロースハック屋さんとかは「相関関係にあるから、片方を動かせばもう片方も動くんだ!」とかってのを割と平然とぬかしやがってますが、聞くたびに、むしろ困ります。
………突っ込み待ちなのかしらん? とかね。
当人たち、割と至って「まじめに」話をしているだけに、なおのこと困る。


ここで出てくるのが「因果関係」です。
端的には「原"因"と結"果"の関係」です。
相関関係は、前述した通り「"相"互に"関"係する関係」です。ここで「偶然」とか「無関係」ってのも「関係性の1つ」ってあたりが、色々とポイント。


・お正月における「来客数」と「お年玉総取得合計金額」
なんてのは恐らく因果関係がある可能性が高くて。なんでかっていうと「来客者が大体全員お年玉をくれると仮定すると、来客数が増えるってことはお年玉袋の数が増える事に直結。お年玉袋が内包する日本銀行券の額が大体一緒だと仮定すると、お年玉袋が増えるってことは得られる合計金額が増えることに直結する」ので、多分、因果関係があります。あくまでも多分。


一方で
・「蜂の巣から生産されるハチミツの量」と「バーモント州における婚姻率」
なんてのは九分九厘「偶然だよねぇ」で片付くわけです。
いやもちろんバタフライ効果なんてのもありますし、ちゃんと研究をして追いかけるともしかしたら「大風で土埃が立つことで目を患う人が増えて盲目になる人が増えて彼ら三味線を買うからそのためにネコがたくさん狩られるから鼠が増えてその増えた鼠が桶を囓り出すから桶を新調する必要があるから桶屋が儲かる」なんていうような感じの因果関係が見つかるかもしれませんが(これが本当に因果関係かどうかはあえて突っ込まないよ。この辺は、厳密には「前後関係の誤謬」なので。"Aが起きたからBが起きる"の因果関係で嘘付いてるから)。
ん………物凄く頑張ると「蜂蜜の生産量が増えると蜂蜜の流通量が増えると蜂蜜酒の生産量が増えると蜂蜜酒を売るためのCMとして"ハネムーン"が増えるとそのCMに引っかかる連中が洗脳されて婚姻率が増える」とか。…これも大概、前後関係の誤謬が山盛りではありますが、まぁそんな感じ的な。


で…ここから本丸に突っ込んでみる。
「ゲームサイトで「売り上げを上げたい」なら、広告などをうって「会員登録数」を増やす事が有効です」は端的に突っ込みやすいんだけど。これって必ずしも因果関係にはならないんだよね。
もちろん「一定の割合の人数が課金する」っていうのが確定な事象なら、trueなんだろうけどさ。
「広告つかってかき集めたユーザ」って、課金率が極端に低かったり、もうちょっというと「登録はしたけど翌日にはdropしてたり」する事も、通常のルートよりは多い事がおおいので。例えば「友人に"友達紹介の特典が欲しいから登録だけしてよ"」って頼まれたユーザが移行ヤリ込んでくれるとか、どれくらいの確率なんだろう? とかね。
そうすると、彼らが「課金をする」事は、あんまり期待できない。
なのに「むやみやたらに、会員数を増やすことだけに血道を上げる」と、割と燦々たる状況が待ち受ける…ってのは、経験者もそれなりにいるんじゃないかなぁ? っと。


「登録フォームにおける「入力項目数」と「drop率(或いは登録率)」」ってのも大分と頭の悪い発想で。
「じゃぁ入力項目0にすりゃいいじゃん」って極論が出てくる。勿論「煩雑なのがまずい」ってのはあるんだけど、それを単純に「入力項目数」ってところに落とし込むと、色々と間違える。


「解約ページにおける「解約のしにくさ」と「解約率(から予想される売り上げ)」」辺りになると「歴史に学ぼうよ」とか思う*2
まず「解約しにくい」と、ここで計測している以外の変数、具体的には「そのサービスの風評」とそこから予測される「入会数の鈍化」に繋がる可能性があって、そっちのほうがよっぽど怖い。
その上で「解約したいけど解約が煩雑で解約できなかった」の場合。それが「個別課金」なら以降そのユーザが何か課金行為をするかって考えるととても怪しいし。一方で「月額課金」のものであれば「唯々諾々と料金を支払うのか」というと、どちらかといえば「窓口に問い合わせてクレームぶちこんででも解約」って方向になる可能性が十分に想起されるし、そうすると「窓口」のコストが増大するか、そこを削るとそれこそ「炎上して」いらん風評が発生して以下略、って事になる可能性が高い。
ねぇHuluさん?*3


この辺の「相関関係と因果関係の違い」について、wikiに面白い記述があるので引用。
http://ja.wikipedia.org/wiki/%E7%9B%B8%E9%96%A2%E9%96%A2%E4%BF%82%E3%81%A8%E5%9B%A0%E6%9E%9C%E9%96%A2%E4%BF%82

広く研究された例として、ホルモン補充療法 (HRT) を行っている女性での冠状動脈性心臓病 (CHD) の発生率が低いことから、HRT が CHD 予防に効果があるという提案がなされたことがある。しかし対照試験を行ってみると、HRTによってCHDのリスクが若干ではあるが明らかに有意な増加を示した。データを再検討してみると、HRTを受けていた女性は上流階級の婦人が多く、ダイエットやエクササイズをよく行っていたことがわかった。つまり、HRTを受けることとCHD発症率が低いことは共通の原因の結果であり、両者に提案されたような原因と結果の関係は存在しない[4]。

つまり、当初
・「ホルモン補充療法 (HRT) を行っている女性」は「冠状動脈性心臓病 (CHD) の発生率が低い」
から、この2つの変数には因果関係がある、と勘違い(相関関係はある)。
そこから実験をして、つまり
・ホルモン補充療法をすることで冠状動脈性心臓病の発生率を下げよう
と試みてみるも、今ひとつ優位な結果が出ない………あれ?


ここで「ホルモン補充療法を試した。」「冠状動脈性心臓病の発生率低下かくにん!」とかやってはいけません*4

データを再検討してみると、HRTを受けていた女性は上流階級の婦人が多く、ダイエットやエクササイズをよく行っていたことがわかった。つまり、HRTを受けることとCHD発症率が低いことは共通の原因の結果であり、両者に提案されたような原因と結果の関係は存在しない

とあるんで。恐らく
・「ホルモン補充療法 (HRT) を行っている女性」は上流階級の婦人が多い(多分、高価なんでしょう)
・上流階級の婦人(または「ホルモン補充療法を行う、程度に、健康に対する意識の高いご婦人」)はダイエットやエクササイズをよく行っている
・「ダイエットやエクササイズをよく行っている」と「冠状動脈性心臓病 (CHD) の発生率が低い」
とかって感じなのではないかなぁ? と。文章の並び的に。予想だけど。


あぁ。
相関関係で、もう一つ面白いのがあった。
・「DHMO(Dihydrogen Monoxide)という液体を摂取したことがある人」と「死亡率」
には、極めて高い相関性があります。
…っていうネタの中身を知りたい人は、 http://ja.wikipedia.org/wiki/DHMO こちらを参照のこと。


微妙に散らかしてきたんだけど、緩やかにまとめ。


「因果関係」の場合で、因の側の変数をいじると、当然ですが果のほうの変数も変わります。
なので。マケとかグロハックとかで「その2つの変数には因果関係があり、かつ、変数Aが因で変数Bが果である事までが証明出来ている」というのであれば、それはもぉ、がっつりと「変数Aをいじって」変数Bをどうにかすればよいのです。


でも。
相関関係ってのは「なんか同じように数字が動いているよねぇ」なんだけど、それが「理由があってのこと」なのか「偶然」なのかが、まず不明です。
故に、「相関関係ってだけ」だとどうなるかわからないし、因果関係にしても「果のほうの変数をいじる」と、無意味な訳です。
そんな状態で。「変数Aと変数Bに相関関係がある」ってだけで、それが「因果関係なのかどうか」の確認すらせずに「マーケティング分析だPDCAだグロースハックだ」とか騒がれても、正直、失笑レベルなのです。


勿論。
相関関係であることは割と簡単に計算ができるのですが( http://d.hatena.ne.jp/gallu/20081216/p2 )。
一方で、2つの変数が「因果関係にあること」を突き止めるのは、とても難しいんですね。手間もかかるし。
でも「手間がかかるから面倒だからいいや相関関係だけ見れば」ってのは、根本的にナニカチガウんじゃないかなぁ? とか思うわけなのです。
ましてや「いんがかんけいってなに? 相関と一緒でしょ?」とか言われると、ちょっと「不勉強に過ぎるんでないかい?」とか思うわけなのです。


分析をすること、自体は、とても有益かつ有効だと思うのですが。
「数字は嘘をつかない」ってのは事実なのですが、この言葉には「事象を数値に変換する部分」と「数値を言語化したり事象化したりする部分」を含んでいないので。
前後でいくらでも「恣意的に」動かせるんですね。


「数字を扱う」お仕事であれば。その辺、もうちょっと「真摯かつ誠実に」扱って欲しいなぁ、とか割と切実に思うのですが、どんなもんでしょうかね?

*1:欺すとか言い切った

*2:ガラケーの公式サイトあたり

*3: http://growthhack.vasily.jp/2014/02/hulu-growthhacker-2/ この辺参照。"解約ページ"の項を見た瞬間、おいちゃんは「間違ってもHuluは使うまいまい」と思ったものである

*4:ジャブ程度の小ネタな時事ネタ

微悩みw

おおっぴらにblogに書くときっと誰かが突っ込んでくれるであろう的ソーシャルライフハック

MacBook を買うか否か

お仕事のメインは、普通に据え置きのWindowsで、これを変えるつもりはとりあえず今のところないのですが。
あちこちで移動用に持ち運ぶPCを、現在は「以前のメインPC(Windows)」なのですが、こいつを MacBook にするかどうか、思案中。


とりあえず使用用途として確定なのが
・人前でしゃべるとき用にパワポを表示する
・お仕事用にsshターミナルを使う
の2つ…くらい。


ほんのりと考えてるのが「iPhoneアプリの開発出来るしなぁ」というのがあるんだけど「iPhoneアプリの開発、やるの?」という正面から唐竹割りのように身もふたもない疑問が首を掲げてくるので、色々と悩ましいげ。
多分「これから、新たにPCの操作を覚える」っていうのが一つ大きなハードルで。「そのハードルを乗り越えてまでも得られる旨みがあるかどうか」が、一つの焦点。


あと、ぶっちゃけ「Appleの思想、とても肌に合わなくて嫌い」なので(笑
なんていうか…唯我独尊というかなんというか、そんな感じの雰囲気が。
なので、下手に MacBook に慣れると、それはそれで「Appleに税金を払い続ける必要があるんじゃないか」っていう辺りの懸念が無くもない。
まぁMicrosoftだって似たようなものなので、その辺は微妙なのですが。


…かくして「やっぱりノートもLinux デスクトップにするか?」とかいう、昔からの「第三の選択肢」が相変わらず飛び交い、誠に悩ましい限りw

Android

いやまぁ「TORQUE G01」の発表に起因するのですが。
iPhoneやめてAndroidにしようかしらん?」という悩みが、ちょろりと。


元々iPhoneは「アプリを作るお仕事が入ってくるので」買ったのですが、そのお仕事は…今思い出しても「その会社と発注してきやがった個人にディスインテグレートの呪文を、魔晶石使い潰して最大の魔力で呪文投影したい」感じではございます…閑話休題


おいといて。


まぁ現在「何となく」使ってはおりますが、さりとて「何が何でもiPhone」って感じでもないわけです。
iTunesに楽曲大量に入ってますが…「STOREで購入した楽曲、お金は取られたけど聞けない状態」とか色々とアレがナニな状態もありますし、正直、色々と「粗製濫造にもほどがあろうもん」な状態なので。
色々と信用ならないので、そろそろ完全に「切り捨てたほうがいいんじゃないか」とかいうのもありまして。
…ちなみに「WindowsiTunesは危ないからMacBookに」というのもまた、前項のお悩みの一端ではございます。
また、ぶっちゃけ「iPhoneアプリのstoreへの登録」とか、面倒ですしねぇ。


そこを考えると、完全にAndroidに移行しつつ「Androidアプリを作る」ってのも面白いかなぁ、とか、思うのですよ。


現在iPhoneで使ってるのって「ゲームとgmail」くらいなので、多分、乗り換えにはなんの差し障りもない状態。
AUというキャリアに対する不信感」は山盛りであるのですが、ンなこと言ったらsoftbankにだって同じくらいの妖気アンテナバリサン度合いはあるわけで、DoCoMoに至ってはもはやなにをか況んや。
なので、現状、考慮変数に「したいけど出来ない」ので、キャリアへの不信感はオミット。


ただなぁ…根本的に「アプリのお仕事って、他のと比較しても、結構お下品な依頼が多い」なぁ、っていう個人的雑感があるので。
そもそも「やるのかどうか」微妙(まぁ現在1つ受けてますが)。
…ただその一方で「スキルとして所持しておく」ってのはまた上述とは「別問題だよねぇ」って考え方もあって、その場合「MacBook買ってiPhoneはそのままにAndoridも買って」っていうのも、選択肢の一つとしてなくはない。…あんまりないけど。

                                  • -

どちらも、今ひとつ決め手に欠けるので、色々と悩ましい限りなのですが。
ど〜したもんかねぇ? と思ってるので、一端文章にしてみましたw

あぁ「顔の見えない集団戦闘」かどうか、なのか

うちの愛弟子との話から、ふと考えて思ったことを、備忘録。


とあるケースで、おいちゃんが出したメールが割と「キツい」って話になって。
一応弁明すると「まだ温い」メールではあったんだけど、まぁ「あの手のが苦手な人にはキツい」だろうなぁ、ってのはあるので、その辺の加減は置いといて。


そのときに出てきたのが「囲師は周することなかれって知ってます??」という話をされて。
そこから、まぁ以前から「モワモワと考えていたこと」を考える良いきっかけになり、改めて考えてみた。
結論からいうと「ビジネスの文脈で、おいちゃんが"囲師は周することなかれ"に従って逃げ道を作るようなやり方をすることは、多分ないんだろうなぁ」と。
そこに至るまでの流れを、つらつらと。


まず、元の言葉の語源のあたりから。
孫子の兵法の「九変」ってのがあって、そのうちの、大体この3つ。
http://www.geocities.jp/team_abe/words_f_28.htm

帰師勿遏 (帰師は遏(とど)むることなかれ)
圍師必闕 (囲師は周することなかれ)
窮寇勿迫 (窮寇は追ることなかれ)

簡単な解説はこちら。
http://www.geocities.jp/team_abe/words_f_28.htm

(7)帰還しようとしている敵を引き止めてはならない。
(8)包囲している敵には、逃げ道を設けておかなければならない。
(9)窮鼠と化した敵を追い詰めてはならない。

丸数字はお好まないので、そこだけ修正。


さて。
簡単に言うと「逃げ道を作り、かつ、逃げ出したら逃がしてやれ」ってのがこの辺の趣旨だと思う。
実際、上述の引用したサイトにも

何故攻撃してはならない敵があるのか。
それは、攻撃することによる利益の裏に必ず損失が潜んでいるからである。
物事には必ず両面があり、利益の裏には損失が、損失の裏には利益がある。

ってな考えだと思う。


…うん一見わかるんだけど、ちなみに、真逆の考え方があちこちに存在する。
ちといきなり「引用できる」レベルでは思い出せないんだけど、内容的にはこんな感じ。


「中途半端に攻撃をすると恨んできて反撃があって…っていう風に泥沼になるから。やる時は"相手が二度と、逆らおうと思う事すらないように"徹底的に殲滅し壊滅し倒し尽くせ」


こっちはこっちで、非常に理解できるっていうか体感している。
内容的には真逆なので…軽く、思案。


考えると、これって文脈が違うんだよなぁ、と。
圍師必闕ってのは「相手の顔が見えない集団戦」で、一方上述の文脈って大抵「サシ、ないし、確実に顔が見える小数戦」なんだよね。
ここに気づいた瞬間に、なんか腑に落ちた。


圍師必闕のあたりは「相手の顔が見えない集団戦」だと、とてもYesで。
場合によっては「徴兵すればこっちの戦力」にもなり得るし、もしかして「農民を徴兵していた」ら、生産力云々とかいう話にも直結する。
戦闘すれば、いずれにしても「こちらの兵力も目減りする」しね。
だとすると「こっちの兵力の温存」の意味合いを兼ねて、基本的には「逃げるんなら逃がした」ほうが、とりあえず短視野的には「兵力の目減りが防げる」と思う。


中長期的にどうなんだろう? と、ちょっとだけ思うんだけど。
んと…例えば「敵3万、味方5万。戦闘して敵1.5万、味方4.8万で敵逃亡」を放置。敵が本隊と合流して「敵5.5万 vs 味方4.8万」になると。殲滅しときゃ、目減りがないと仮定すると(この仮定自体が若干怪しいんだけど)「敵4万 vs 味方4.8万」になるので、敵兵力を「削いでおく」のも大切な気がせんでもないんだけど。
一方でふと「とはいえ、1.5万の兵って"逃げれば逃げられる"って気づいてるから、危なくなったらとっとと逃げるから敵の陣って瓦解しやすそうだなぁ」とか色々と考えると、なんかもうちょっと色々、単純計算では難しい考察ができるんじゃないか、って気がする。


なので、とりあえず「戦争(顔の見えない集団戦)」という文脈においては、圍師必闕ってのはなんとなく「あるんじゃないかなぁ」って思う。


ただ一方で。
おいちゃんが、相応に「丁重なmail」をたたき込むケース、なんかの場合。
とりあえず「当面は相手との関係性が続く」可能性、ってのが前提にあって。そういう場合…まず
・それなりに、こちらが激怒るに足る状況
ってのが、あるわけです。
大抵、状況としては「おいちゃんに明らかに実害のあるレベルで、相手が大きくミステイクな手を打ってきた」ってのがパターンです。
ちなみに「言い訳」をしてもよいフェーズではあるのですが、おいちゃんが激怒って「丁寧なmail」という剣戟を実際に繰り出した場合、その手前で「結構な分量のシミュレーションをしてある」ので*1
「言い逃れ」とか「開き直り」とかその類いが有効な状態である、というような温い状況は、多分作っていません。


…まぁつまり「9割方問題があるんだけど残り1割が微妙」なんてケースで剣を抜かないので、その分ストレスが溜まるわけなのですが。
おいといて。


んで。
ここで「圍師必闕」とかをふと考えてみるわけなのですが…もうちょっと正確には「帰還しようとしている敵は引き留めず、包囲している敵には逃げ道を設け、窮鼠と化した敵は追い詰めない」事を考えてみるわけなのですが。
逃げたり逃がしたりするとまた「同じこと」を繰り返し、追い詰めなければ反省をしないわけで(追い詰めたら反省するのか?ってのはあるけど)。
そうすると「再度、おいちゃんに明らかに実害のあるレベルで、相手が大きくミステイクな手を打ってくる」事が、容易に予見できるわけですね。


つまり「後顧に憂いを残す」結果しか、想定できないわけですね。
逃がすと「あぁまた言い逃れできるんだ」って方向に学習をするし。
逃げ道を作ってそっちに逃がすと、やっぱり「逃げられる」って学習をするか、下手をすると「そっち側に誘導したお前が悪い、そんな姑息な誘導がなければ自分はもっと改善できた」とか他人に転嫁をするし。
窮鼠を放置すると「あぁ激怒れば逃げられるんだ」って方向に学習をします。


…あぁちなみに、簡単な逃げ道は一個あって、ですな。
「10割アウト」って思ってるのは「実害がある上でそれが改善されない」まで、で10割なので。
「問題点に気づき、謝罪して反省して改善策を考えている」場合、「実害はあ"った"けど、改善される可能性がある」ので、10割ではなくなるので。おいちゃんの場合は、高確率で「一端、矛を収めます」。
ポイントは「あぁ、改善する可能性があるなぁ」と思えるかどうか。なので「謝罪の台詞」よりは「本人が反省しているか」ってあたりの印象値がでかいですな。
故に「とりあえず"ごめんなさいと言ってみた"」は、どちらかというと「火に油を注ぐ」程度の結果にしかならないので、あんまりお勧めしません。
一方で「怒らせてしまったけど理由がわからないんだけど話をちゃんと聞いてそれが改善すべき内容ならちゃんと改善したいからまず話を聞かせて下さい」ってのを"真摯且つ誠実に"言ってくるなら、多分、感情はいったん置いといて、話はすると思う。「解らない」については、片側では「それもどうよ」とか思うんだけど、もう片側で「言わなきゃ解らない」ってのが理解出来なくもないので。


まぁそんなこんなを考えると。
「囲師は周することなかれ」ってのは、単語としては理解できるし、コンテキストによっては「重要」だと思うのだけど。
おいちゃんの主戦場である「ビジネス」の場では、「会社 vs 会社」のおおざっぱなやりとりならともかく、現場の「個人 vs 個人」のやりとりだと、あんまりおいちゃん的にはしっくりこないなぁ、ってのが、改めて考察で理解できたです。


勿論、もう一つの主戦場である「TRPG」の、陰謀もののセッションの場合は縦横無尽に使うのですがw
ただ…「逃げ道にさらに罠を仕掛けて確実に仕留める」のって、見方を変えると「周してる」ような気がするので、本当の意味で「囲師は周することなかれ」になっているのか? ってのはとても疑問なのですが(笑


以上、前から「もわもわと」考えてはいたのだけど、あんまりちゃんと形にしてなかった系の内容なので。
せっかくのタイミングなので、memoり。

*1:手前で「質問をする」事も多く、これによって「誤解や勘違い」を確実に潰してたりもするので