アウトプット記録

いろんなことをアウトプットします

『インプット大全』感想

読みました。

学び効率が最大化するインプット大全

学び効率が最大化するインプット大全

まとめ

自分の興味・関心、インプットの目的や方向性を明確にすることで、膨大な情報から必要な分野を絞り込んだ上で、更にそこからエッセンス(=必要な情報)だけをインプットすることが可能となる。インプットに際してはアウトプットを前提にすることでより高い効果が期待できる。

ポイント

  • 前項で「インプットの質を高めよう」といいましたが、インプットの質を高めることを本書では「インプットの精度を高める」と表現します。ダーツの中心を狙うイメージをしてもらうと、わかりやすいと思います。(中略)そもそも「必要のない情報」は、「見ない」「接触しない」、つまり情報を「捨てる」努力が必須なのです。
  • インプットの目標があいまい。どこに向かっていいかわからない。これでは、インプットの精度が悪く、まったく自己成長が期待できないのです。勉強する場合、本を読む場合、講座を受講する場合。何か学んだり、インプットしたりするときは、必ず「方向性」と「ゴール」を設定してください。たった10秒のワークですが、インプットの精度が飛躍的に高まります。
  • 実は、何度もアウトプットしなくても、一発のインプットで記憶に残す、そんな超裏技のインプット術があります。それは、「アウトプット前提でインプットを行う」ということです。私は、アウトプット前提、略して「AZ」と呼んでいます。
  • アンテナを建てるための4つの方法
    • 興味・関心のあるキーワードを書き出す
    • 目的、テーマを明確にする
    • 自分で自分に質問する
    • アウトプット前提にする
  • 「3つ」に絞り込むことによって、「注意のアンテナ」が立ち、集中力も高まり学びの効率が最大化します。

個人的に気になったところ

  • 生のライブを観に行き、ポジティブで活気あるエネルギーを受け取る。人生を楽しく豊かにすることは、意外と簡単です。
  • 情報工学の世界では「DIKWモデル」というものがあり、「データ」「情報」「知識」「知恵」を、それぞれ下図のように定義しています。
  • 家と会社を往復する限り、会社や仕事関係以外の交友が広がることはまずありません。あなたの交友関係のコンフォートゾーン(快適領域)を出て、まだ会ったことのない人に会いに行かなくてはいけません。
  • 娯楽には2種類あります。フロー概念の提唱者であり集中力研究の世界的権威であるチクセントミハイ教授は、娯楽を「受動的娯楽」と「能動的娯楽」にわけました。

感想

  • インプットはあくまで手段であり、なんのためにインプットをするのか、したいのかを明確にする必要がある。「勉強大全 ひとりひとりにフィットする1からの勉強法 | 伊沢 拓司」でも同じような話があって、勉強法はベクトルである、という表現がすごく印象的だった。目標がある点だとすると、現時点から目標に向かって進むための最短距離がそのインプットなのか?どのようなインプットであれば正しい方向へ進むことができるか?を意識することが不可欠だと感じた。
    • 本を読む(≒なにかインプットする)前には何を身に着けたいか?なぜこれが適していると判断したか、を残しておくことにする
  • 方法論の部分ではテレビや遊びも完全に悪とはせず、使い方によっては良質なインプットになるものだと感じた。これも前項と関連するが、主体性が肝となるのではないか。ただ漫然とやるのではなく、目的のためにテレビを見たり、遊びをしたり、と目的を持ってやることで得られる成果も向上することができる
    • やることなすことに対して、一つ一つ意義を見いだせるか考えて、言語化する。
  • 学びは3つまで、は「アウトプット大全」でも語られていた。適切に3つを得るためには「いちばん大切なところはどこか?」を探す能力が必要だ。この本ではそれをやりやすくするために自分は何を学びたいか、をセミナーの前に考えておくことを推奨している。それによってスコープが定まることで、自分にとっての抽象化が容易となるではないか。
    • アウトプットに際してはもっと重要なポイントはどこか、この本の魅力はどこか、を考えてみる。

余談

  • ちょくちょく自分語りが入るのは好みが分かれそうだ。。
  • 前作でも各種資料のダウンロードが特典としてついてきて、それはそれでありがたいんだが、メールマガジンに登録されてちょっとうーんって感じだったので特典DLは迷う。
    • 今回は登録されないようだ。(解除したメールアドレスを使用したためか?)

『多動力』感想

読みました。

多動力 (NewsPicks Book) (幻冬舎文庫)

多動力 (NewsPicks Book) (幻冬舎文庫)

気になった内容

  • もはや、産業ごとの〝タテの壁〟は崩壊していくのだ。「この肩書きで一生食っていく」などと言っている人は、自分で自分のキャパシティを狭めてしまっているだけだと思う。
  • 「完璧主義者」は、何度もやり直し、一つの仕事にアリ地獄のようにハマってしまう。目指すべきは、完璧ではなく、完了だ。 目の前の仕事をサクサク終わらせ、次に行く。そして前の仕事には戻らない。「完了主義者」こそ、大量のプロジェクトを動かすことができる。
  • 10冊の流行のビジネス書を読むよりも、1冊の骨太の教養書を読もう。
  • メルマガに限らず物事を継続するためには、時間を短縮するよりも、やり方を一工夫しストレスがかからないようにすることが重要だ。
  • 大切なのは、働く時間の長さではなく、「一工夫」をすることで、リズム良く仕事を進めることだ。そして、「原液」となるものを生み出し、自分が動かなくとも、自分の分身にまで働いてもらう。結果、周りから見ると一人の人間がやっているとは思えない量の仕事を動かすことが可能になるのだ。

感想

単なる技術、知識だけではすぐ代用されてしまうため、単純に一つのことだけ詳しいだけでは勝ちはありません。プロ×プロの掛け算で価値を上げていく必要があります。(ここまではこれまで読んだような本でも散々語られていましたね。)

そのためには「多動力」を意識することが必要だ、とこの本では語っています。すなわち、やりたくないこと、自分でなくてもいいことにかける時間を減らして、自分にしかできないこと、自分がやりたいことへの時間をいかに増やすか?を追求する必要がある、と。

ここでいらない時間を減らすためには、やらない選択肢もあります。しかし、脳死的にただやらない・無心でこなす、のではなく、ひと工夫することが重要です。すぐにやめてしまうのではなくどうやったら効率的にできるか?このやり方が最善か?誰かに渡せないか?と考えるのです。そのいらない時間でも他の人には必要だったり、やめることで迷惑がかかってしまう可能性を考慮して、どうするのが自分にとって最善かを判断することが重要だと感じました。

自分を省みると、やりたくないこと、自分でも無駄だと思うものこそ、ついダラダラとやってしまいます。だからこと、代わりになるものはないか?手間を減らすにはどうするか?を常に考えることを意識します。ダラダラとやってしまう背景には「完璧主義」もあると感じました。自分がやらないと、と無意識的に思ってしまうのです。「完了主義」は意識的に実践したいスキルの1つです。

0-80と80-100は同じぐらい大変だと思うが、0-80のほうが間違いなく価値が高い 100をひとつこなすよりも80を複数のほうがいいと最近は思うようになりました。

いい意味でできるだけ楽ができるか?を考え、空いた時間で自分らしく、自分が楽しいと思えることをこなしていきたいです。

あと個人的に、

10冊の流行のビジネス書を読むよりも、1冊の骨太の教養書を読もう。

はすごい刺さりました。Kindle Unlimitedで最近読んでるNewsPicks系の本の内容は正直どれも似たりよったりだと思うんですよね。。いいものをじっくり読むことがもっと必要だなぁと感じています。。

『モチベーション革命』感想

読みました。

気になった内容

  • つまり、1年中会社勤めをするのではなく、まずは自分が生活者として生きることで、世の中の潜在的なニーズを拾ってきなさいという意図が込められているのです。時間をかけて課題を解決することよりも、課題自体を発見したり、新しく課題を定義したりすることに投資するべき時代なのです。
  • 仕事と遊びの境目がなくなる時代だからといって、好き放題やればいいというわけではありません。周囲からの信頼感を得ているからこそ、自分がより得意なことに専念する状況を作るスタートラインに立つ、ということは忘れないでいてくれると嬉しいです。いつの時代も、人は信頼がすべてです。少し話は逸れましたが、これだけはずっと変わらない社会のルールなのです。
  • そんな様子を見ながら、僕はあることを考えました。それは、人は自分にはできないこと、なし得ないことに対して、いくらでもお金を払うのだ、ということです。そして、自分にはできないことをしてくれる相手に対して、人は「ありがとう」という言葉をかけるのだと。
  • 先の見えない、この変化の時代において間違いなく言えること。それは、一見非効率に見える人間の「好き」を突き詰めて、その「好き」に共感する人が「ありがとう」とお金を払ってくれる〝偏愛・嗜好性の循環〟こそが、残っていくということです。
  • よって、自分が依存する先が一ヶ所しかないと、その一ヶ所がつぶれたときに路頭に迷うことになってしまう。変化する時代を自由に、自立して生きていくことは、何にも依存しないことではありません。むしろ依存先を一ヶ所にしぼらず、複数持つことが大事です。
  • 1、「ないものがない」時代から生きる「乾けない世代」は、上の世代に比べ、「達成」や「快楽」よりも「意味合い」「良好な人間関係」「没頭」に意味を置く世代であること。この世代だからこそ作れる「新しい価値」があるということ。 2、その「新しい価値」は、自分だけの「好き」や「歪み」から生まれやすいということ。 3、「自分だけの世界の見方」を発信すると、それが他の人にとって「新しい世界の見方」になったり、既存のモノに新しい意味を与えたりする

感想

「乾けない世代」は産まれたときから揃っているから頑張る必要がない=乾けない、達成や快楽にはあまり興味がない。それよりも自分の好きなことをやることに意味を見いだす。

世の中的にもそうで、単に課題を解決するだけでは仕事にならないし、ほとんどの課題はすでに解決されている、だからこれからは課題を解決するよりも、課題を見つけるほうが必要なスキルとなってくるでしょう。そのために「乾けない世代」の没頭する力は有効に働く、と述べています。没頭できるからこそ新しいことが見つかり、それが周りにも認められるとビジネスにつながる、と。

そして、ビジネスとは人にできないことをすることでお金を生み出すことであり、そのためには人よりもそのことを突き詰めないといけない。そしてその状況(突き詰めるための時間や立場を持つ)にもっていくために仕事での信頼感は大切です。仕事で信頼を得て、好きなことを突き詰めて、ビジネスに繋がりゆく課題や歪みを見つけてそれを仕事にする それが求められてくるのではないでしょうか?

更には一つの環境や立場に依存するのではなく、そうしたコミュニティを複数持つことの重要性も語られています。

以前、尾原さんの本(『どこでも誰とでも働ける』)を読みましたが、こちらでも仕事上の信頼感を語っていた記憶があります。仕事は信頼で成り立っているもので、信頼があるからこそ相手のことを受け入れられるし、その人の好きが確かなものとして受け入れられるのではないでしょうか。

つくづく感じていることですが、技術だけではお金は稼げません。課題を見つけること、そしてその課題に対して解決策を提案できて初めてビジネスとしてなりたっていくものだと思います。

課題を見つけるためにはトップクラスまで上り詰めるか、ミドルクラスだとしても複数の分野に詳しくなって掛け合わせるか、のどちらかが有効なのではと考えています。現状、私が突き詰められるほどの好みや強みがあるかというと即答はできません。そのため最近は複数分野に詳しくなれるよう色々手広くやってみようと画策中です。

余談

ただ、これタイトルもうちょっとどうにかならなかったのですかね。。。どうモチベーションを上げるか、みたいな本かと思ったら世代間のモチベーションの違い=モチベーション革命、ということらしく、わからなくはないけど、うーーんみたいな感じです。

機械学習・ディープラーニングの良書まとめてみた

はじめに

機械学習ディープラーニングには興味があったものの、プログラミングにコンプレックスがあったので、なかなか手が出せずにいました。しかし、去年下半期にPyQを一通りこなし、仕事でも多少プログラミングをするようになったこともあり、そろそろその分野の勉強を始めたいな、と。

勉強手段には色々ありますが、書籍は最低限のクオリティは保証されており、体系的に知識を得ることができるため、有用なものといえるでしょう。とはいえ本の中でもクオリティには差があると思います。そのクオリティを確かめるために、レビューを参考にする方は多いと思いますが、一体誰を信じればいいのでしょうか。この人とは価値観が合う、この人みたいになりたい、というものがあればその人のおすすめを参考にすればいいと思いますが、知識がない状況ではどの人を信用していいかもわからないと思います。

そこで考えました、多くの記事で紹介されているものならばある程度の質は担保されているのではないかと。多くの人に読まれている、はそれだけで意味があると思っています。多くの人が読んでいるからこそ共通言語として扱われているようなものもあると思いますし、疑問点も解決する可能性が高い。

ということで「おすすめ」「入門」「良書」とかで検索したいくつかの記事の中で、複数の記事に紹介されているものをまとめました。

余談

ここまで書いてまとめてから思ったのですが、こういう本を読むことはあくまで目的を達成するための「手段」です。なんとなく機械学習やってみたいなーと思ってなんの本読もうかなーぐらいの軽いモチベーションで始めてしまいましたが、本来はやりたいこと(=「目的」)に最短距離で到達できる可能性が高い手段、がその人にとっての「良い本」であるはずです。

そもそも、機械学習そのものも手段です。何らかのデータ(数値、自然言語、画像、、、etc)に対して分析や解析をするためのイチ手法でしかないと思います。

そのため自分がやっていることは、志望校も受ける教科も決まっていないのに、おすすめの参考書をまとめてみたようなものです。

ただ、お蔵入りしても仕方ないですし、その本自体の評価を検討する上ではある程度意味があることだとは思うので、まとめてみました。

注意事項

  • 機械学習の活用分野については考慮していません。 大まかな「機械学習」というくくりでやっているため、自然言語処理がやりたい!Kaggleで勝ちたい!と目的が明確な人はその目的に合わせて必要なところだけピックアップしてもらえればと思います
  • 実際の内容については考慮していません。 合う、合わないは個人によるものが大きいと思いますので、立ち読み等で確認することを勧めます。
  • カテゴリの判断基準はありません。 こちらの記事に従っていますが、含まれないものは私の独断と偏見でいれています。
  • 並び順に意味はありません。 カテゴリ内で言及記事数が多いものは先に書いてあります。
  • 参考記事の選定理由に深い意図はありません。 他におすすめなものがあれば教えていただけると幸いです。
  • 抜け漏れ・確認不足あるかもしれません。 あったらすみません。

参考記事一覧

投票(投票_1~3で表記)

  1. ディープラーニング関連オススメ書籍TOP20&テーマ別38冊を紹介! | AI専門ニュースメディア AINOW
  2. 『Qiitaユーザーが選ぶ、2019年に読んで良かった技術書』アンケート結果発表 - Qiita Zine
  3. ITエンジニア本大賞 2020年2019年2018年

個人(個人_1~6で表記)

  1. 自然言語処理を学ぶ推薦書籍 - 首都大学東京 自然言語処理研究室(小町研)
  2. 実務の専門家として機械学習や統計分析を手掛けたい人にオススメの書籍初級5冊&中級8冊+テーマ別11冊(2020年2月版) - 渋谷駅前で働くデータサイエンティストのブログ
  3. Pythonを学ぶときに読むべき本2020年版 - 初心者からプロになるために - Lean Baseball
  4. 一から始める機械学習(機械学習概要) - Qiita
  5. 【保存版・初心者向け】僕が本気でオススメするPythonと機械学習の良書12選 - Qiita
  6. 数学に強いエンジニアむけの機械学習勉強法 - 飯田勇人 - Medium

企業(企業_1~3で表記)

  1. 初心者向け!機械学習を学ぶのにおすすめの本10選 | TechAcademyマガジン
  2. 機械学習本おすすめ6選【入門者〜上級者までレベル別に紹介】 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
  3. 【2020年版】AI(人工知能)プログラミングを初心者から学ぶためのおすすめ本12選|Kredo Blog

結果

3記事以上で言及されていたものをまとめました。書籍のあとの()内は言及した記事です。

【入門編】

機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

  • 作者:大関真之
  • 出版社/メーカー: オーム社
  • 発売日: 2016/12/01
  • メディア: 単行本(ソフトカバー)
投票_1,投票_3,企業_1

見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑

見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑

投票_3,個人_2,個人_3,個人_6

投票_1,個人_5,企業_2

投票_1,個人_5,企業_2

【実装・実践編】

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

投票_1,投票_2,個人_4,個人_5,企業_3

投票_1,投票_2,個人_5,企業_1,企業_3

投票_1,個人_1,個人_5,企業_2,企業_3

PythonとKerasによるディープラーニング

PythonとKerasによるディープラーニング

投票_1,個人_5,企業_3

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

投票_1,個人_2,個人_5

Kaggleで勝つデータ分析の技術

Kaggleで勝つデータ分析の技術

投票_3,個人_2,個人_3

【プログラミング編】

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

投票_1,投票_2,投票_3,個人_3,企業_3

【数学・理論編】

投票_1,投票_3,企業_1,企業_3

パターン認識と機械学習 上

パターン認識と機械学習 上

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

投票_1,企業_1,企業_2

ITエンジニアのための機械学習理論入門

ITエンジニアのための機械学習理論入門

投票_1,企業_1,個人_1,)

【ビジネス利用編】

仕事ではじめる機械学習

仕事ではじめる機械学習

投票_1,個人_2,個人_3,企業_1

終わりに

だいたいこういう記事は読んで満足感でちゃうので、買ってやっていこうと思います。

そもそもKaggle本を買おうとして、他にどんなのがいいかなーと思って調べ始めたので、うまく網羅できるように買っていこうかなと。。

あたりかなぁ。。

『日本再興戦略』感想

読みました。読んだのは数日前ですが、バタバタしていたら遅くなってしまいました。。。

日本再興戦略 (NewsPicks Book)

日本再興戦略 (NewsPicks Book)

記録しておきたい箇所

  • これからの日本に大事なのは、いろんなコミュニティがあって、複数のコミュニティに所属しつつ、そのコミュニティを自由に変えられること(中略) ひとつのコミュニティに依存するのではなく、いろんなコミュニティに依存すればいい。
  • その中で世界のあらゆるところに多様性が生まれます。あらゆるデータの表現系は二分法からグラデーションになっていき、人間の知性は個と全体の垣根を飛び越え、近代的人間性から超克される、と考えています。(中略)この考え方のポイントは、「リアル/バーチャル」や「フィジカル/バーチャル」など二分法や二項対立で分けたがる世界を突破するために、人間という考え方も含めて、すべてをミックスしてしまうということです。自然そのものも更新されうるということということです。
  • では、新しい時代に磨くべき能力とは何でしょうか。 それは、ポートフォリオマネジメントと金融的投資能力です。
  • ただし、むやみに横展開すればいいわけではありません。横との交流は、トップ・オブ・トップに会えるようにならないとあまり意味がないですから、まずは一個の専門性を掘り下げて名を上げたほうがいいのです。ニッチな分野でも構いませんので、とにかくまずは専門性を掘るべきです。せめてひとつは、トップ・オブ・トップの人と話すに足る何かを探さなくてはいけません。
  • 「手を動かせ。モノを作れ。批評家になるな。ポジションを取った後に批評しろ」 僕は研究室の学生によくそう言っています。悩んでばかりでは意味がない。とにかくまずやってみる。その繰り返しの末にオリジナリティが生まれ、世の中を変えることができる。それが僕の伝えたいメッセージです。

感想

本書を通して感じたポイントは

  • 「マス」から「多様性」への変化
  • 非中央集権

の2点です。

これまではマス的な思考で社会が進んでいたため、一つの企業で定年まで勤めるライフスタイルでも問題ありませんでした。しかし、これからはマスの中の一個人ではなく、グラデーションの中で、独自の色を持つ個人として生きていく必要があります。

「デジタルネイチャー」と呼ぶ、コンピュータと非コンピュータが融合する環境においてはすべてのものが地続きであり連続することになります。そんな世界で、「自分は〜だから」「あの人は〜だから」と語るよりもまずはやってみてから判断することが重要となってきます。

グラデーションをつけるにあたってはまずは自分の濃い色を持った上で他からのエッセンスを吸収できるよう、トップになることも重要だと語られています。”みんなと一緒”ではだめで、”自分はこれ”を見つけた上で、他の人・ものとコラボレーションする。そういった生き方が求められてきているのだと感じました。

「非中央集権」もその一つだと思います。強力なトップがいる組織ではなく、みんなでイノベーションを起こしていく。自分の苦手なものは他の人の得意なことでカバーしてもらう。代わりに自分の得意なことで活躍していく、そんな組織が望ましいのかもしれません。

振り返ってみて、自分の強みはなんだっけな、と考えてしまいますが、即断できない時点でまだまだだなと思います。これまでやってきたことにとらわれず、いろんなことをやってみて、得意なこと人よりも苦手意識が少ないものを見つけていきたいと思いました。

『メモの魔力 The Magic of Memos』感想

読みました。

メモの魔力 -The Magic of Memos- (NewsPicks Book)

メモの魔力 -The Magic of Memos- (NewsPicks Book)

読むきっかけ

  • 会社で話題になっていた
  • ITエンジニア本大賞にもノミネートされていたため気になった
  • kindle unlimitedにあったので

内容

  1. まず何より大切な理由が、この残酷なまでに時間が限られている人生という旅の中で、「より本質的なことに少しでも多くの時間を割くため」です。 本質とは何かというと、コピーではなく創造、代替可能物ではなく代替不可能物、ということ。つまり、クリエイティブで新たな知的生産につながる思考や、自分にしか思いつかないような代替不可能性の高い思考。これら価値のある本質的思考に1秒でも多く時間を割くために、メモをしているのです。
  2. 左側のページに書くのは、「ファクト」。つまり、どこかで見聞きした、客観的な事実を書きます。何か自分の琴線に触れたものがあれば、その現象自体が「ファクト」なので、左側のページにまず書き記しておきます。 左側は、「抽象化」した要素を書きます。左ページの「ファクト」を見つめて、そこで書かれている具体的な内容を「抽象化」します。左ページに書いた内容から、抽象化すべき要素を見つけたら、そこから適宜右ページに矢印を引っぱって、対応する抽象命題を書いていきます。 次に、抽象化した気づきを別の何かに適用して実際に行動を変えるため、右ページの右側には、「転用」の要素を書いていくのです。「〇〇という真理・命題を受けて、これをこう変えてみよう」という、実際のアクションにつながる粒度まで落として書くことが重要です。
  3. メモをとる上では、現象を言語化する「What型」と、特徴を抽出する「How型」、抽象化して物事の本質を知る「Why型」があり、すべて便利ではあるが、知的創造においては、「How型」と「Why型」、特に最後の「Why型」が大きな価値を生み出すことが多い、とだけ、覚えておいてください。
  4. 最終的には「自分は何をやりたいのか?」という問いに行き着きます。自分を知り、自分の望みを知らないまま、どんなビジネス書を読んでも、どんなセミナーに行っても、まず何も変わらないでしょう。まず「自分を知る」ことがなによりも重要です。
  5. SMARTというゴール設定のフレームワークを「夢」に応用する際に特に大切なのは、「S」と「M」と「T」です。具体的で、測定可能で、時間の制約をちゃんと設ける。これによって、夢がかなう確率が大幅に上がります。

感想

まとめる重要性(「ファクト(具体)」→「抽象」→「転用(示唆)」)を痛感するとともに、その流れが世の中的にも望まれていることを思いました。要約サービスが流行ったり、YouTubeでビジネス書や古典の解説が話題になったり、と可処分時間の奪い合いとともに、エッセンスだけが段々と求められてきているように感じます。

一方でそのエッセンスの抽出やそこから得られる行動や示唆は人によって異なるはずです。その人にしか出せない抽象化やアイディアが差別化になってくるのではないでしょうか。本の要約サービスでエッセンスを掴むことは可能でしょうが、読んで自分の想いを乗せることによってようやく自分のものになる、そんなことを思いました。

あとは質は量から出るものだと思うので、本の感想まとめは続けていこうかと思います。

エクスポートしたはてなブックマークのフィードをCSVファイルに変換する

はじめに

はてなブックマークにおいて、特定の1年にブックマークした自分のブックマークを確認したかったのですが、マイページからはわかりにくかったため、Pythonの練習がてらブックマーク一覧をCSV形式に変換しました。

はてなブックマークの [マイページ > 設定 > データ管理] からブックマークのデータがエクスポートできます。出力可能な形式は

の3パターンです。中身を見てみたところ、Atomフィード形式が扱いやすそうだったので、そちらを利用することにしました。

入力データ

はてなブックマークからエクスポートできるAtomフィード形式のファイルは以下の形式です。どうやらxml形式として扱えそうです。(値は適宜置き換えています)

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
  <title>(はてなID)のブックマーク</title>
  <link type="text/html" rel="alternate" href="https://b.hatena.ne.jp/(はてなID)/bookmark"/>
  <link type="application/x.atom+xml" rel="service.post" title="(はてなID)のブックマーク" href="https://b.hatena.ne.jp/atom/post"/>
  <entry>
    <id>tag:hatena.ne.jp,2005:bookmark-(はてなID)-(数字列)</id>
    <title>(ページタイトル)</title>
    <link type="text/html" rel="related" href="(ページURL)"/>
    <link type="text/html" rel="alternate" href="(ブックマークURL)"/>
    <link type="application/x.atom+xml" rel="service.edit" title="(ページタイトル)" href="https://b.hatena.ne.jp/atom/edit/(数字列)"/>
    <summary>(コメント)</summary>
    <issued>(日時)</issued>
    <author>
      <name>(はてなID)</name>
    </author>
    <dc:subject>(タグ1)</dc:subject>
    <dc:subject>(タグ2)</dc:subject>
  </entry>
  <entry>
    ...
  </entry>
  ...
</feed>

方針

日付でブックマークをフィルタして確認することが目標です。出力結果には以下のものが含まれることにしました。

  • 通し番号
  • ブックマークしたページタイトル
  • ページのURL
  • 自分のコメント
  • ブックマークした日時
  • タグ

作成したコード

import bs4
import csv
from datetime import datetime


soup = bs4.BeautifulSoup(open('(bookmarks.atom)'), 'xml')
entry_list = []

header = ['index', 'title', 'URL', 'comment', 'time', 'tags']
entry_list.append(header)

entries = soup.find_all('entry')

for idx, entry in enumerate(entries):
    data = []
    index = str(idx)
    title = entry.find('title').text
    link = entry.find('link').get('href')
    summary = entry.find('summary').text
    issued = entry.find('issued').text

    time = datetime.strptime(issued, '%Y-%m-%dT%H:%M:%S%z')
    time = "{0:%Y-%m-%d %H:%M:%S}".format(time)

    tags = entry.find_all('dc:subject')
    tag_list = []
    for tag in tags:
        tag_list.append(tag.text)
    tag_data = ','.join(tag_list)

    data.append(index)
    data.append(title)
    data.append(link)
    data.append(summary)
    data.append(time)
    data.append(tag_data)

    entry_list.append(data)

with open('data.csv', 'w', encoding="utf_8_sig") as file:
    writer = csv.writer(file, lineterminator='\n')
    writer.writerows(entry_list)

出力結果

以下の出力結果が得られます。

index,title,URL,comment,time,tags
0,(ページタイトル),(ページURL),(コメント),(日時),"(タグ1),(タグ2)"
1,...
...

自分が欲しい情報のみを出力しているので、コードを変更すれば他の値も出力可能です。

感想

これまでコードを書いてこなかったので、意図する動きをするプログラムが書けて良かったです。 本当はもう少し解説?してqiitaに投稿しようと思っていましたが、力尽きたのでひとまずここで供養することにします。