ライティングの哲学で学んだことを実践してみる

僕は普段文章を書く時、構成や伝えたいこと、見る人が知りたそうなことを意識しすぎてしまいます。その結果、何をどう書けばいいか考え続けて全く進みません。

今回はたまたま手に取った、ライティングの哲学という本にそれらの悩みを乗り越える勇気をもらったので、早速実践に移してみようと思います。

哲学と聞くと難しそうに聞こえますし、実際に後半は難しく理解が及ばない点が多かったです。ただし前半の内容はわかりやすく(烏滸がましいですが)とても共感できる内容でした。

本の流れとしては

1(自称)文章を書くのが苦手な人たちが、それぞれの苦悩を打ち明ける座談会の会話ログ

2座談会を経て、文章との向き合い方にどのような変化が生じたかを各々独白する

3再度座談会を開催し、変化について語る

という内容になっています。

こう考えると悩みを打ち明けている1はとっつきやすく、苦悩と向き合ったあとの2,3が難しい内容になるのは当然かもしれません。後半の内容は理解できていない部分も多いですが、いつか共感できる日がくるといいなあ

と思います。

 

書くことの苦悩への具体的な対処法ですが、個人的には以下の内容が刺さりました。

・完璧に書くことは不可能

・雑にメモを残す

・思ったことをそのまま文字にする

・無駄な言葉は入れてもいい(ああ、えーと、うーん、etc...)

・資料にあたることをあきらめる

この辺りの言葉は書くことへのハードルをかなり下げてくれた気がしています。

 

普段は誰かのために頑張ろうと思うことが少ない自分でさえ、文章を書く時は「誰かのためになる文章を書かなきゃ!」と思ってしまう節がありました。

この本を読んでみて一旦は「誰かのために」という部分は置いておいて、思ったことを素直に書くことを決意できました。それを続けていくうちに誰かに刺さる文を偶然生み出すことができればいいなあと思います。

 

「世界標準のデータ戦略完全ガイド」を読んだ感想

以前twitter(X)で見かけて気になった本を読了したので備忘録がてら、感想を書いていこうと思います。

概要

「データ戦略完全ガイド」と書いてあるように、ビジネスでデータを活用する際に必要なことを網羅的に記述している本です。

具体的にどんな内容かというと、まずデータを活用するべき理由の説明から始まり、あらゆるデータ活用は6つの目的に分けられることを事例を用いて解説しています。

次にどんな目的の場合でも必要となる、データ活用の計画策定の手順について説明があり、その後はデータの種類(構造データ、非構造データなど)、主要な分析手法法的倫理的な問題データインフラ組織づくりなどについて解説されています。

 

対象読者

特に記載はない(見逃しているだけかも)ようですが、個人的にはこれから事業を始めようとしている起業家、新事業責任者などを対象としているように感じました。

現在データ分析の仕事をしている僕の目線では業務に直接活かすには抽象的すぎる印象でした。

 

個人的なポイント

この手のジャンルの本はあまり読んだことはないのですが、これ一冊でデータに関するあらゆることを網羅できる点はすごく助かります。

特に、なぜデータを活用するのかという点と分析手法やデータインフラなどデータに関わるテクニカルな観点を同時に扱っている本は珍しい気がしました。

テクニカルな部分を把握せずデータを活用しようとしても無茶な課題解決になってしまいますし、テクニカルな部分だけだとビジネスの目的を見失ってしまいます。

どちらもバランスよく要点をまとめているため、ガイドとしていい役割を果たしてくれそうです。

また、法的・倫理的問題や組織づくりの点は今まで意識してこなかった観点なので、良い気づきにつながりました。

まとめ

総括するとデータに関わるビジネスマンの教養書と言えるような一冊だと思います。

ただし、この本はあくまでガイドであるという点は注意が必要で、分析手法にしてもデータインフラにしても、この本で扱っているテーマはそれぞれで本が一冊書けてしまうほど複雑な分野なため、僕のような現場でデータ分析する人間は必要に応じて専門書で学ぶことが求められそうです

 

あと、以下のスライドも合わせて見ると良さそう。

データ活用が事業貢献していることを示すための取り組み - Speaker Deck

効果検証入門を読んだ感想

結構前に読んだ本ですが、効果検証入門を読んで学んだ内容を実務経験も踏まえて書いていこうと思います。

効果検証入門〜正しい比較のための因果推論/計量経済学の基礎 | 安井 翔太, 株式会社ホクソエム |本 | 通販 | Amazon

 

1.セレクションバイアス

マーケティング分野のデータ分析ではよくある「クーポンを配布したユーザーと配布していないユーザーの売上の差について分析したい」という場合に問題になってくるのがセレクションバイアスです。

極端な例で言うとリピーターにクーポンを配布し新規ユーザーにはクーポンを配布しなかった場合、「クーポンを配布したことによる売り上げ増加」「リピーターと新規ユーザーの売上の差」を区別できなくなってしまいます・

このときの「リピーターと新規ユーザーの売上の差」つまりグループの分け方による差をセレクションバイアスと言います。

セレクションバイアスがある状態で効果検証をしてしまうと、「効果がないものを効果がある」「効果があるものを効果がない」と結論づけてしまう可能性があります。

上記の例のようにわかりやすい例ならいいですが、実務ではわかりにくいパターンも多いです。そのためグループ別に分析する場合は、まず初めにグループの分け方について注意するようにしています。

2.RCT

理想的なグループ分けの方法としてRCT(Randomized Controlled Trial)があります。

RCTとは処置をする人としない人を完全にランダムで選ぶ検証方法のことです。

セレクションバイアスはグループを何らかの法則によって決めることで発生するものなので、グループをランダムに決定すればセレクションバイアスがなくなり、純粋にグループの差を分析することができます。

3.仮説検定との関係

データ分析の仕事をしているとクライアントから「仮説検定をしてほしい」というような相談がたまにきます。

その場合にも問題になってくるのがセレクションバイアスです。そもそも分析対象にセレクションバイアスが存在すると、仮説検定をしても誤った結果が出てしまいます。

(そもそも仮説検定は他にも考えなきゃいけないことがたくさんあって難しいので、個人的にはあまり使いたくない手法ではありますが。。。)

4.なぜ効果検証の知識が必要なのか

RCTが必要ならRCTをすればいい!と言いたいところですが、実際に厳密にRCTをしようとするとお金も時間もかかってしまいます。

また、例えば「ユーザーによって商品の値段を変える」と言うような、法的・倫理的にRCTができない場合もあります。

このように実務ではRCTができない状況が多く存在するため、できるだけRCTの効果検証に近い分析を行うために効果検証の知識が必要となってきます。

 

一旦まとめとしては以上にしておこうと思います。

本書では効果検証の手法として、回帰分析、傾向スコア分析、DIDなどの手法が紹介されていますが、それらについてはより詳しく勉強してから別の機会にまとめようと思います。

E - Subtree K-th Max(ABC 239)解法の備忘録

atcoder.jp

 

自力で解法が分からなかったため、解説を見てざっくりとした方針を把握してから実装した。

木DPなるものは聞いたことがなかったけど以下のように実装

>|python|
import sys
sys.setrecursionlimit(10 ** 8)

n, q = map(int, input().split())
x_list = list(map(int, input().split()))
G = [[] for _ in range(n + 1)]
for _ in range(n - 1):
  a, b = map(int, input().split())
  G[a].append(b)
  G[b].append(a)

list_dict = [[] for _ in range(n + 1)]
flag_list = [False for _ in range(n + 1)]

def dfs(s):
  global list_dict,flag_list
  flag_list[s] = True
  if len(G[s]) == 0:
    list_dict[s].append(x_list[s - 1])
    return
  tmp = [x_list[s - 1]]
  for next_p in G[s]:
    if flag_list[next_p] == True:
      continue
    dfs(next_p)
    tmp.extend(list_dict[next_p])
  tmp.sort()
  tmp = tmp[-max_k:]
  list_dict[s] = tmp

v_list = []
k_list = []
for _ in range(q):
  v, k = map(int, input().split())
  v_list.append(v)
  k_list.append(k)
max_k = max(k_list)

dfs(1)
for v, k in zip(v_list, k_list):
  print(list_dict[v][-k])
||<

最初に書いたときは

>|python|
tmp.extend(list_dict[next_p])
||<

ではなく

>|python|
tmp = tmp + list_dict[next_p]
||<

としていたが、これだとTLEだった。

+演算子からextendにするだけで2200msから600msに改善できたので、今後はextendを使うようにする。

わたしがブログを書く(書きたくなった)理由

特別お題「わたしがブログを書く理由

 

はてなブログでは初めての投稿になるので、ブログを書く理由ではなく「書きたいと思った理由」になってしまいますが、自分の考えをまとめるのにちょうどいいテーマだと思ったので書いていこうと思います!

 

理由①:アウトプットするまでが読書

近頃は個人ゲーム開発に手をつけているのですが、ふと過去に読んだストーリーについて書かれた本を思い出しました。

ただ、本のタイトルや具体的な内容までは覚えておらず、朧げに覚えているのは

などを引用していたような気がするということだけ。

「せっかく本を読んでも全く身についてない!」とかなり落ち込みました・・・

最近では「メモの魔力」などに影響され、Notionに一言読書感想を残すようにしたところ、かなり改善され理解が深まっているような気がしています。

さらに深く記憶に刻むためにアウトプットしようかと思った次第です!

 

理由②:アウトプットは複利が効く

アウトプットは主に2つのメリットがあると思っています!

  • 自分の思考を整理するため
  • 見た人に自分を理解してもらうため

どちらも一度や二度のアウトプットでは効果は小さいですが、積み重ねれば指数関数的に効果が増えていくように思います。

このあたりは

  • 岡田斗司夫さん著「頭の回転が速い人の話し方」
  • 赤羽雄二さん著「0秒思考」
  • ふろむださん著「人生は、運よりも実力よりも『勘違いさせる力』で決まっている」

などの受け売りに近いですが、騙されたと思ってアウトプットしていこうと思い至りました!

 

理由③:できることがないから文章を書く

以前に自分のブログで読書感想をいくつか残したことがあったのですが文章を書くのって難しくて、書いたとしても読んでもらえないと今でも思っているところがあります・・・

それだけでなく、自分には特別なスキル・経験もないためコンテンツとしても面白くないんじゃないかと思うとさらに書く理由がなくなってしまいます・・・

そんなときに読んだのが、

  • ふろむださん著「人生は、運よりも実力よりも『勘違いさせる力』で決まっている」
  • フミコ・フミオさん著「神・文章術」

なのですが、この2冊のおかげで「自分でもできそう」「なにもないからこそ色々と挑戦するべき」と思うようになり、できない理由を探すのではなくとりあえずやってみてから考えようという気になれました!

 

理由④:お気持ち表明をする

「お気持ち表明」というとX(元twitter)などでは悪いイメージを持たれがちですが、個人的には表明すること自体は悪いことではないと思いますし、むしろ自分の思考過程を残した方がいいと思います。(大体の場合、表明だけでなく押し付けるような物言いになっていることが悪いイメージの原因な気がしています)

この辺りの考えは落合陽一さんが以下の動画で話していた、ChatGPTのようなものを活用すれば自分と同じ思考をするAIを作れるという話に感化されています。

落合さんに関しては日頃からかなりのアウトプットをしているので自分AIを作るのは可能だと思いますが、日頃から全くアウトプットしていない人は不可能です。

僕のAIを作ったところで価値があるかは微妙ですが、面白そうだし自分AIを作りたいと思ってからでは手遅れの可能性が高いので、可能な限りお気持ちを表明していければと思います!

www.youtube.com