akiyoko blog

akiyoko の IT技術系ブログです

4/22 の「技術書典4」で「現場で使える 基礎 Django」を頒布します

akiyoko です。

このたび、4/22 の「技術書典4」で人生初の技術系同人誌『現場で使える 基礎 Django』を頒布する ことになりました。


techbookfest.org


f:id:akiyoko:20180416235202p:plain:w300
(表紙はこんな感じになりそうです。*1



「技術書典」って何?

技術書典」は、春と秋の年二回ずつ開催される、技術者による技術者のための技術系同人誌の販売イベントです。今回が4回目の開催になりますが、毎回どんどん認知度と熱量が上がっているようで、今回天気が良ければ 3,000〜4,000人ほどの来場者で溢れ返りそうな勢いのホットなイベントなのです(行ったことないけど)。

私は初のサークル参加でもあり、初のイベント参加にもなります。

techbookfest.org

前々から何か本が書きたいなと思っていたところで「当選したら書いてみようかな」という軽いノリでこのイベントのサークル参加に申し込みをしたら、見事に抽選に当たっ(ってしまっ)たのが二月初旬。そこからちまちまと目次を作り始め、本格的に書き始めたのは二月下旬あたり。そこから泣きそうになりながら毎日明け方まで執筆することを繰り返し、ようやく脱稿できそうな目処がついて安堵感を感じ始めています。これまでに要した総時間はおそらく 300時間を超えると思います。



こちらは昨日 Twitter で聞いたアンケート。
半数が入稿済みだった。皆さん早い!!



「基礎 Django」はどんな内容?

全148ページ(表紙や奥付を除けば本文 142ページ)まるまる Django 本です。執筆はほぼ完了し、現在絶賛校正中です。


本書の読者としては、

  • Python の文法はある程度分かるけど Django は初めてという初心者の方
  • Django を始めてみたけど今いちコツが掴めないという初級者の方
  • ベストプラクティスを学びたいと考えている中級者の方

を想定しています。

私自身 Django 歴がまだまだ浅い(仕事で6年ほど)ので上級者向けの本は書けませんが、Django の動作原理から実戦的な書き方まで、初級者向けの基礎知識として押さえるべき内容は全て網羅したつもりです。読者の皆さんに「Django って意外と簡単だな」と感じていただけることを目指して、基礎から詳しく丁寧に解説しています。

特に、

  • Django の日本語書籍が無くて困っている方
  • Django で一度挫折したことがある方

にオススメです。


目次

気になる目次は、



f:id:akiyoko:20180416234902p:plain:w190

f:id:akiyoko:20180416234958p:plain:w190

f:id:akiyoko:20180416235011p:plain:w190


となる予定です。
もう動かない・・・はず。


「基礎 Django」を書いた理由は?

今回 Django 本を書いた理由はズバリ、「Django の日本語の書籍が少ない」からです。 私自身、Django をずっと仕事で使っているのですが、日本語で書かれた良書が見つからず、結局「Two Scoops of Django」シリーズという海外の書籍(個人的に「ベスト・オブ・Django本」に認定)に辿り着いたわけですが、それだと初心者向けに薦める本としてはハードルが高過ぎるのではないかとモヤモヤを感じていたのです。Django の人気が今ひとつ上がらないのも、日本語の書籍が不足していることが大きな要因になっているのではないか、と思い立ったのがきっかけです。


akiyoko.hatenablog.jp


この状況を打破すべく、「無いのなら 自分で書こう Django本」ということでまず私から書いてみることにしてみました。この本が版を重ね、将来「ベスト・オブ・Django本」と呼ばれるようになればという願いを込めて。




頒布本情報

B5サイズ、148ページ(1円玉より少し小さい 9.3 mm の厚さです!)。

技術書典での価格は 1,000円。
お釣りの煩雑さを考えての特別価格です(他のサークルさんもだいたい 1,000円にしているようです)。

部数は未定。

頒布場所は「く33」の「あきよこブログ」です。
見本誌を置いてますので、立ち読みだけでもお気軽にどうぞ。

f:id:akiyoko:20180415000417p:plain


秋葉原UDX、4/22(日) 11時オープンですが、午前中はどえらい混雑すると思いますのでご注意を。

お品書きも作りました。

f:id:akiyoko:20180421021919p:plain:w400


今悩んでいること

来週月曜(4/16)が入稿の〆切で、そこで何部刷るかを決めなくてはいけません。

これまでの技術書典の売れ行きから考えて、200部くらい刷れば十分余るかな?と考えていたのですが、「万万が一早々に売り切れてしまって、欲しいという人が買えなかったら嫌だなぁ」という邪念がムクムクと出てきてしまっている状態がまさに今なのです。


後日、BOOTH で当日売り切れなかった紙の本(電子版はもし対応可能であれば)の販売をしようと考えているので、結構余ってもいいとは考えています。


もし反響があれば少し多めに刷ろうかなとも目論んでいたりしますが、どうなることやら。


何はともあれ、技術書典の当日(4/22)、秋葉原 UDX アキバ・スクエア まで遊びに来ていただければありがたいです!

ぜひ冷やかしにきてくださいませ。

*1:黄色の丸は「Django(ダンゴ)三兄弟」です。だいぶ古いな。。

仮想通貨税金計算サービス「BITCOINTAX」をリリースしました

アカウント登録不要、完全無料で利用できる税金計算サービス「BITCOINTAX」をリリースしました


もっと手軽に仮想通貨取引の税金計算を!
ドラッグ&ドロップだけで使える税金計算サービスが登場


f:id:akiyoko:20180213212659p:plain



【 サービスURL 】
 BITCOINTAX : https://bitcointax.jp/


 

背景

「ビットコイン」「NEM」「仮想通貨」などといったキーワードが連日のようにニュースを賑わせるようになり、ビットコインを始めとする仮想通貨が国内で広く認知されるようになってきました。仮想通貨を売買できる取引所も金融庁に仮想通貨交換業者として登録された業者を中心に競い合うように次々と設立され、スマホで手軽に仮想通貨の取引ができるようになった一方で、仮想通貨取引にかかる税金計算は複雑で、専門知識のない人にとっては非常にストレスフルな作業になってしまいがちです。


昨年12月に国税庁から「仮想通貨に関する所得の計算方法等について」という資料が公表されましたが、特に仮想通貨同士の売買については取引当時の時価を計算する必要があるなど計算は煩雑です。国内の取引所ならまだしも、国外の取引所で売買した場合の日本円での時価は容易には算出できず、国税庁の方針に従って税金計算をするには困難を極めます。


2月16日より平成29年分の所得税等の確定申告受付が開始されるにあたり、これから仮想通貨の税金計算をしようとする人がその煩わしさに途方もない時間を奪われてしまう人が多く出てしてしまうことが懸念されます。最近になって仮想通貨の税金計算サービスがいくつかリリースされ始めてきましたが、いずれのサービスもアカウント登録が必要であったりと手軽に使えるものがありませんでした。


そこで「BITCOINTAX」は、

  • アカウント登録不要
  • 取引所の取引履歴ファイルをドラッグ&ドロップするだけ
  • 無料で全ての機能が利用可能

という特徴を備え、誰でも簡単に使える税金計算サービスとしてリリースいたしました。

なお、現在の対応取引所は、bitFlyer*1)、CoincheckZaif*2)、bitbankBITPointPoloniexBittrexBinanceHitBTCCryptoBridge の計10種類となっておりますが、要望次第で随時対応を予定しています。


【お知らせ】
  • Bittrex 対応済み(2018年2月15日更新)
  • ご指摘を受けて一部計算の誤りを修正しました。お手数ですが、16日以前に利用された方は再度計算し直してください(2018年2月16日更新)
  • BITPoint 対応済み(2018年2月17日更新)
  • Zaif 対応済み(2018年2月18日更新)
  • Binance 対応済み(2018年2月18日更新)
  • CryptoBridge 対応済み(2018年2月19日更新)
  • HitBTC 対応済み(2018年2月21日更新)
  • bitbank 対応済み(2018年2月23日更新)


なお、他の取引所への対応やバグの修正依頼は、admin@bitcointax.jp 宛にご連絡ください(取引履歴ファイルを添付していただけると助かります)。




日本における仮想通貨のさらなる発展と、仮想通貨に携わる方々のストレスが少しでも解消されることを願っています。




【 サービスURL 】
 BITCOINTAX : https://bitcointax.jp/


 

使い方

BITCOINTAX にアクセスし、各取引所でダウンロードした CSV形式(取引所によっては Excel形式)の取引履歴のファイルをドラッグ&ドロップするだけで利用可能です。


f:id:akiyoko:20180213214829g:plain


アカウント登録などの面倒な作業無しに、すぐに使うことができます。



【 サービスURL 】
 BITCOINTAX : https://bitcointax.jp/


 

その他の特徴

  • 複数ファイルをまとめてドラッグ&ドロップすることも可能です(最大5ファイル・1MBまで)
  • 計算結果が表示された後に、続けて別の取引所のファイルをアップロードできます(計算が全てやり直されます)
  • 計算結果が表示された後に、計算結果を CSV形式でダウンロードできます(ダウンロードした CSVファイルを再びアップロードすることもできます)
  • アップロードされたファイルはサーバで保持していません

 

計算方法

  • 時価計算方法は移動平均法による *3
  • 時価計算には以下のデータを使用
    • bitFlyer の各通貨の時価については、Cryptowatch API が提供している1〜6時間足データを使用
    • Coincheck の各通貨の時価については、Coincheck が提供している日足データを使用
    • Zaif の各通貨の時価については、Zaif が提供している日足データを使用
    • bitbank のビットコインの時価については、bitbank.cc API が提供している時間足データを使用
    • Binance の各通貨の時価については、Binance API が提供している日足データを使用
    • CryptoBridge の各通貨の時価については、CoinMarketCap が提供している日足データを使用(ただし、120通貨中 63通貨のみ。2018年2月19日現在)
    • 上記以外の海外取引所の各通貨の時価については、Kraken(BTC/USD) Poloniex API が提供している時間足データを使用(2018年2月20日更新)
    • 海外取引所の場合の USD/JPY については、ドル円為替の日足データを使用
    • 2016年1月以降のデータを使用しているため、2015年12月以前の取引がある場合には対応できない場合があります

 

免責

  • 本サービスは予告なく停止、終了、仕様が変更されることがあります
  • 本サービスの利用によって生じたいかなる損失または損害については一切の責任を負いません

 


【 サービスURL 】
 BITCOINTAX : https://bitcointax.jp/


 

問い合わせ先

パブリックな問い合わせは GitHub Issue、プライベートな問い合わせは admin@bitcointax.jp または Twitter にお願いします

*1:現物取引のみ。bitFlyer Lightning(ビットコイン現物・FX・先物取引、イーサリアム現物の取引)には未対応です。

*2:現物取引のみ。信用取引・AirFX取引・先物取引には未対応です。

*3:参考:「移動平均法(棚卸資産の評価方法)の仕訳・会計処理 | 仕訳NET

2017年に読んだ本のリスト

akiyoko です。

2017年の読書歴を振り返ってみたのですが、技術系の本や雑誌を除いて38冊読んでいました。つまり、約10日に1冊以上読んだことになります。昨年は「多読」を心掛けていたのですが、私自身としては十分過ぎる結果だったと感じています(ちなみに一昨年は11冊)。


《過去記事》
akiyoko.hatenablog.jp


なお私の読書スタイルは、気になった本はポチポチと買っておいて、ヒマが出来たときにそのときの気分に合わせて読むというのが基本です。それ以外にも、学習したいテーマに沿って次々と連鎖的に読んでいくパターンや本の中で紹介されていたものを読んでいくパターンもあります。


今回は、昨年読んだ38冊のうち19冊を紹介します。


上記以外にも、ビットコイン・仮想通貨・ブロックチェーンの勉強のために読んだ本が11冊、投資やチャートの勉強のために読んだ本が8冊ありますが、後者はまた別途紹介するかもしれません。


《過去記事》
akiyoko.hatenablog.jp


来年も自分のペースを守りながら、できるだけ多くの本を読んでいきたいと考えています。


 

マネジメント系

一昨年の年末から年頭にかけて、自身のマネジメント力の欠如が顕になってきたとひしひしと実感したので、新たに知識を投入した上で実践していきたいと考えていました。

 

1.新1分間マネジャー

オススメ度:★★★☆☆


「新1分間マネジャー」はケン・ブランチャードとスペンサー・ジョンソンの共著で古典的なベストセラー「1分間マネジャー」の新版ですが、現代風にアレンジが施されているそうです。なおスペンサー・ジョンソンは「チーズはどこへ消えた?」の著者としても有名です。


「1分間」シリーズを全部読んだという shiba_yu36 さんのブログ記事を読んで、まずはこの本を読んでみようと思い立ちました。

「1分間顧客サービス」を読んだ - $shibayu36->blog;


本自体は薄く、ストーリー形式で描かれているので、すぐに読み終えられます。

この本の核となる 1分間マネジメントの「3つの秘訣」は、「新1分間マネジャーのゲームプラン」という図で完結にまとめられています。

  • 「1分間目標」
    • (共同で)明確な目標を立てる
    • 正しい行動とはどのようなものか見せる
    • 目標を1ページに1項目ずつ書き出す
    • 素早く頻繁に目標を読み返す
    • 自分の行動を振り返り、目標と一致しているかを確認するよう奨励する
    • 一致しない場合、行動を切り替えて成功を達成できるよう促す
  • (目標または一部の目標を達成したら)「1分間賞賛」
    • 行動をほめる
    • すぐほめる。具体的にほめる
    • どれほどうれしく感じているかを伝える
    • 少し間を置いて、部下にも満足感を味わわせる
    • さらによい仕事を続けるように励ます
  • (目標を達成できなければ)「1分間修正」
    • 協力して目標を明確化する
    • 事実関係を確認する
    • ミスをすぐに検証する
    • どれほど懸念しているかを伝える
    • 少し間を置いて、部下にも不安を味わわせる
    • ミスは取り返せること、人間として評価していることを伝える
    • いつまでも引きずらない


少し前にバズった記事「GEとAdobe、人事評価制度やめたってよ。目的のためには手段はどんどん変えていく」では、今までの人事評価ではフィードバックまでのサイクルが長すぎるという問題に対して、年次評価制度を撤廃して「頻繁にフィードバックを与える」という新しい仕組みを導入したと書かれていますが、新1分マネジャーで説明されている3つの秘訣「1分間目標」「1分間賞賛」「1分間修正」も目的は同じなのではないかと感じます。短く端的なフィードバックを頻繁に与えていくことで、社員や組織を変化の激しい現代に対応できるように変えていく、そんな新しいタイプのマネジャーが望まれているということなのでしょう。


 

2.1分間マネジャーの時間管理

オススメ度:★★★★☆


ケン・ブランチャードの「1分間」シリーズは数多く出版されていますが、著者自らが管理職の参考書として薦める五作として、

を挙げています。本作「1分間マネジャーの時間管理」は、サルの世話に追われて本職のマネジメントに掛ける時間が無いと悩む中間管理職に向けて贈られた「救いの書」となっています。なお、1分間シリーズには〈1分間マネジャー〉がメンターとしてストーリー中に登場するようなので、「新1分間マネジャー」は真っ先に読んでおいた方がよさそうです。


さて、本書の核として登場する「サル」は部下の肩から飛び乗ってくる「プロジェクトやトラブルに伴う『次の対応』」を指していますが、単に「次の対応」と書かずに「サル」に見立てて書くことで、インパクト絶大で忘れられない「アイコン」になっています。

ついつい部下の肩から飛び乗ったサルの世話をしてしまうと、余計な世話を焼くダメマネジャーになってしまうというのがストーリー仕立てで語られています。そしてサルを管理するには、何を、誰が、いつまでに、どのように実行するのかを確定することが重要と説きます。また、「何のためにこれをやっているのか」を自問し、はっきりした答えが出ない場合は、サルを抹殺した方が良いとも指南しています。


いつもながらストーリー仕立てになっているのがややダラダラした感じもしますが、本自体が薄くてすぐに読み終えられるので、半日ほど空き時間があるときに一気に読んでしまうのがよいかと思います。




 

3.人を動かす

オススメ度:★★★★★


人を動かすって本当に難しいですよね。「動かす」というより「動いてもらう」にはどうすればよいか? と悩むことが多いです。そんなときの薬になる、古典中の古典。これまで読んだことが無かったので、一念発起。なお、後で紹介する「SOFT SKILLS ソフトウェア開発者の人生マニュアル」の著者ジョン・ソンメズも最も推薦する必読書として挙げています(ただし、自助・自己啓発の本として)。

内容が分かりやすくて腹落ちすることも多く、各章のラストに簡潔なまとめが書かれているのも有難いです。ということで各章のまとめを列挙してみました(多少アレンジしていますが)。

  • 人を動かす3原則
    • 批判も避難もしない。苦情も言わない
    • 素直で、誠実な評価を与える
    • 強い欲求を起こさせる


上記の「人を動かす原則だけ」でなく、「人に好かれる原則」「人を説得する原則」「人を変える原則」についても書かれていますが、いずれにしても、まずは相手を立て、誠意を持って相手の身になり、相手に重要感を与えるようにすることが大事であると説いています。つまり、尊厳欲求・承認欲求などの高次の欲求に訴えかけることが重要であるということでしょう。

  • 人に好かれる6原則
    • 誠実な関心を寄せる
    • 笑顔で接する
    • 名前を覚える
    • 聞き手に回る
    • 相手の関心を見抜いて話題にする
    • 心からほめる(重要感を与える、誠意を込めて)
  • 人を説得する12原則
    • 議論を避ける
    • 相手の意見に経緯を払い、誤りを指摘しない
    • 自分の誤りを直ちに快く認める
    • 穏やかに話す
    • 相手が即座に「イエス」と答える問題を選ぶ
    • 相手にしゃべらせる
    • 相手に思いつかせる
    • 人の身になる
    • 相手の考えや希望に対して同上を寄せる
    • 人の美しい心情に呼びかける
    • 演出を考える
    • 対抗意識を刺激する
  • 人を変える9原則
    • まずほめる
    • 遠回しに注意を与える
    • まず自分の誤りを話したあと相手に注意する
    • 命令をせず、意見を求める
    • 顔を立てる
    • わずかなことでも惜しみなく心からほめる
    • 期待をかける
    • 激励して、能力に自信を持たせる
    • 喜んで協力させる


これらは部下や組織のマネジメントとは別枠ではありますが、「心掛け」として普段から実践しやすいのは嬉しいところです。



 

4.韓非子 ― 強者の人間学

オススメ度:★★★★☆


教養系(?)なのかもしれませんが、以前から読んでみたいと思っていた韓非子です。韓非子の解説本は何冊かありますが、以前受講していた「gacco」の「中国古典に見る指導者の条件」の講義をしていた SBI大学院大学の守谷 洋教授の本をチョイスしました。


韓非子は中国戦国時代末期の法家である韓非の書で、乱世を生き抜くために君主の権力を法によって強固にすることで国を統治しようと訴える組織管理論であるとも言えます。

韓非の統治理論は、「法」(法律)、「術」(部下をコントロールするためにリーダーが身に着けるべき操縦術)、「勢」(権限)の三つを中核としています。「術」については、

  • 1.臣下の言い分を互いに照合して事実を確かめること
  • 2.法を犯した者は必ず罰して威信を確立すること
  • 3.功績を立てた者には必ず賞を与えて、やる気を起こさせること
  • 4.臣下のことばに注意し、発言に責任をもたせること
  • 5.わざと疑わしい命令を出し、思いもよらぬことをたずねてみること
  • 6.知っているのに知らないふりをしてたずねてみること
  • 7.白を黒と言い、無いことをあったことにして相手を試してみること

の7つを挙げており、トップは権力の要(賞罰の権限)を押さえ、黙って睨みを利かすのが最良だと説いています。

『韓非子』全篇を貫いているのは、徹底した人間不信の哲学である。人間を動かしている動機は、何か。愛情でもない、思いやりでもない、義理でも人情でもない、ただひとつ利益である。人間は利益によって動く動物である、というのが『韓非子』の認識であった。

といったようなフレーズが書中に何度も出てきますが、「利用者が利己的な行動をしてもそれがシステム全体としての利益に繋がる」というブロックチェーンの設計思想にも繋がる最新の考え方なのでは?と思ってしまいます。勝手な妄想ですが。。

全般的に面白い本なのですが、構成にやや疑問が残る(章の前後の関連性・繋がりに違和感がある)ので ★マイナス1としました。



 

5.これからのマネジャーの教科書

オススメ度:★☆☆☆☆


「ミドルマネジャーのための本」という触れ込みで、なかなか良さげな出だしの本だったのですが、買って損したとは言いませんが全く腹落ちしなかった本です。

グロービス経営大学院の院生へのインタビューからの実例分析なのでしょうが、主観的な分析に終始しているような印象を受けました。どこかで聞いたことのあるようなノウハウを言い回しを変えて並べただけの焼き回し本というイメージです。残念ながら私には響きませんでした。



 

教養・教育系

6.あらためて教養とは

オススメ度:★★★★☆


一昨年、教養とは何か?というのをふと考えて二冊ほど本を読んでみたのですが、釈然とせずに残っていたモヤモヤがこの本を読んで霧消しました。


当時読んだのは以下の二冊です。
① 「おとなの教養」(池上 彰)
② 「ビジネスに効く最強の「読書」 本当の教養が身につく108冊」(出口 治明)

①では、教養とは「進歩の速い世の中にあっても陳腐化しないスキル」であり、「すぐに役に立つことは、世の中に出て、すぐ役に立たなくなる。すぐには役に立たないことが、実は長い目で見ると、役に立つ」と書かれています。つまり、「長い人生を生きていく上で、自分を支える基盤になるもの」というのが教養、という理論です。

②では、教養については「人間が賢くなる方法は、人に会い、本を読み、世界を旅すること以外にない」と書かれていて、読書については「読書は知識を得るためではなく、自分の頭で考える材料を得るためにある」と書かれています。読書で考え方の幅を広げる訓練をすることで教養が磨かれるということでしょうか。

「学問、知識などによって養われた品位」という国語辞典的な意味をなぞっているだけで、何だかモヤモヤが残りますよね。


そして「あらためて教養とは」では、「自らを立てるために必要なのが教養」と書かれており、「自らを立てる」とは「揺るがない自分を創り上げる。自分に対して則(規矩)を課し、その則の下で行動できるだけの力をつける」と説明しています。なお「規矩」については、「自分独りに課したものでありながら、自分の生きる社会との関係の中で、自らと社会の協調関係の中で、見出し、自分に課していくべきもの」としています。また教養は、ドイツ語での「Buildung」が意味的に近いとし、がっちりとした基礎の上に自分という人間をきちんと創り上げていくことだと述べています。

また、「分別」というキーワードが本書に何度も登場しますが、以下の説明が分かりやすかったです。

分別(ふんべつ)のある人というのは具体的にどんな人のことをいうので... - Yahoo!知恵袋


ここで、私の「教養」に対する理解を図式化したものが以下になります。

f:id:akiyoko:20180104040316p:plain


ハイ、全然分かりませんよね(笑)。少し説明すると、本書にも書かれている通り、教養の最低限のベースは「人間としてのモラル」です。自分をきちんと律した上で、そこに幅広い知識や経験を乗せ、それを自分なりに咀嚼・吸収して分別を育てていき、いずれ揺るがない自分を自立させていくといった構図になっています。知識や経験は「栄養」、育てていくべき分別が「幹」というイメージです。自分の中では非常にスッキリしたのですが、全然スッキリしないという方は是非本書を読んでみてください。



 

7.自分を成長させる 最強の学び方

オススメ度:★☆☆☆☆


表紙だけ見ると脳科学者の茂木健一郎さんの本に見えますが(笑)違います。オンライン学習サービス「gacco」の前社長の本です。

学びの真の目的は「自分のアイデンティティを確立すること」であり、学び続けるためには、

  • 費用負担が軽くて
  • 距離・時間の自由が効き
  • モチベーションが維持できる

という学び方を選択するのがよいとの前置きがあり、それら全てを満たしている「gacco」(「モチベーションの維持」はディスカッションボード上の「学び合い教え合う」コミュニティ)で学びましょう、という宣伝本です。


学びとは「社会を知り、自分を知って、社会に自分の力がどう活かせるかを見つけ出すこと」という意見には同意ですが、結局、タイトルの「最強の学び方」って一体何?という疑問符が残ります。個人的には、学びには3つ目の「モチベーションの維持」が非常に重要だと考えていますが、「学び合い教え合う」だけでモチベーションが湧いてくるようなそんな簡単なものではないんじゃないかなと思います。勉強そのものが「楽しい」と思える人は少ないと思いますし、だからこそ、「学びの先に何があるか?(学ぶことで何が得られるのか?)」が想像できないとモチベーションの維持は難しいと考えています。「学習とは、入力(感覚)と出力(行動)が結びつくこと」というのは、まさにそういう意味だと思います。


あと細かい感想としては、

  • 目新しいことが書いていない(どこかで聞いたことがあるような話が多い)
  • データが示されてないので信憑性、根拠が乏しい

という感じでした。




 

データ分析系

データ分析系としては、昨年は「PythonユーザのためのJupyter実践入門」などの技術系の本も読みましたが、一般の読み物としては以下の一冊のみです。

 

8.「原因と結果」の経済学 ――― データから真実を見抜く思考法

オススメ度:★★★★★


因果推論の入門の入門書。ビッグデータ時代を生き抜くためのスキルとして、データ分析だけでなく、「データ分析の結果を解釈するスキル」を身に付ける必要があるとし、その一つとして、因果関係と相関関係の違いを理解し、原因と結果に本当に因果関係があるかを考えるトレーニングをすることで、思い込みや通説にとらわれない正しい判断が出来るようになると説いています。


共著者の中室牧子氏は二年前に読んだ「「学力」の経済学」を執筆していますが、その本が面白かったということもあってこの本を読み始めました。

akiyoko.hatenablog.jp


前著と同じく読みやすく、取り扱っているテーマも非常に面白いです。
経済学者で「とくダネ!」にも出演している安田洋祐氏のブログの書評でも、

データ分析に欠かせないこの因果推論を驚くほど分かりやすく解説・紹介した、現代の新教養の画期的な入門書


『「原因と結果」の経済学』が分かりやすい3つの理由 : ECONO斬り!!

と書かれている通り、取っ付きにくい因果推論に特化した本でありながら、読者が挫折しないようにいわゆる教科書的な込み入った説明や小難しい数式を使わずに、データ分析の現場での最先端の手法を紹介しています。

経済学では特に、因果関係を示唆する根拠のことを「エビデンス(科学的根拠)」と言い、「回帰分析」や「自然実験」「疑似実験」よりもエビデンスレベルが高い因果推論の理想形として「ランダム化比較実験(RCT:Randomized Controlled Trial)」が存在し、複数のランダム化比較実験を統合した「メタアナリシス」がエビデンス・ピラミッドの頂点に位置しているという構図は、日本ではまだ馴染みがないでしょう。


最後に、因果関係を読み解くための因果推論の5つのステップは以下のようになっています。

  • 1.「原因」は何か?
  • 2.「結果」は何か?
  • 3.3つのチェックポイントを確認
    • まったくの偶然ではないか
    • 交絡因子(第三の変数)が存在しないか
    • 逆の因果関係は存在しないか
  • 4.反事実を作り出す(「もっともらしい値」で置き換える)
  • 5.比較可能になるように調整



 

自己啓発系

自己啓発本は最近はあまり読まないようにしていたのですが、タイトルが気になったりしてついつい読んでしまいます。

 

9.SOFT SKILLS ソフトウェア開発者の人生マニュアル

オススメ度:★★★★☆


この本は、「ソフトウェア開発者の人生マニュアル」という副題の通り、ソフトウェア開発者の生活を豊かにするための指南書です。

「キャリア」「自分自身のマーケティング」「学び方」「生産性を上げる方法」「お金(に働かせるという考え方)」「健康をハックする方法」といった幅広い分野について具体的な実践方法を紹介しています。ソフトウェア開発者のために特化した本というよりは、著者のキャリアがソフトウェア開発者だったということで、著者自身の経験から「これは人に勧められる」と考えた方法を惜しみなく紹介しています。実践方法が具体的なので今すぐ始めようという気持ちになれますし、実際すぐに始められることが多いです。私もスクワットから始めてみました(笑)。

前半は他のソフトウェア開発本にもよくある感じであまり響かなかったのですが、後半のお金の話や健康ハックの章はグイグイ引き込まれました。開発者向けの本としてはあまり出てこない新鮮なテーマだったからでしょうか。

意識高い系のおっさんが読んでも面白いですが、学生や20代のプログラマ、SEが読むと非常に有益かと思います。



 

10.やりたいことをやれ

オススメ度:★★★☆☆


本田技研工業(ホンダ)の創業者、本田宗一郎氏の本。家の近くに工場があったのと、タイトルに釣られて何となく手に取りました。パナソニック創業者の松下幸之助氏の「道をひらく」が好きで何度も読み返していて、それと同じように人生の教訓が読めるのかと勝手に想像していたのですが、全く違いました(笑)。この本はエッセイ集で、タイトルもその中の特徴的なものを単にチョイスしただけのようで、本全体を貫くテーマでは無かったようです。うーん、紛らわしい。。

ところで本田宗一郎氏は、「頭に閃いたアイデアを実証せずにはいられない」という根っからの技術者のようです。物作りに対しては、創意、工夫、失敗を恐れない勇気が必要で、中でも特に重要なのが弾力性のある見方、物の考え方であり、アイデアであると説く一方、人間関係については、「礼儀は人間の基本」「結局は人柄」「他の人の立場、気持ちを考える」など人間愛に溢れる考え方を持っています。

また、

人を動かすことのできる人は、他人の気持ちになれる人である。そのかわり、他人の気持ちになれる人というのは自分が悩む。自分が悩んだことのない人は、まず人を動かすことはできない。

こちらが望んでいること、こうやりたいと欲していることをスムーズに受け入れてもらうためには、まず、先方の心を知らねばならない。相手の気持ちを知って、相手が理解しやすいようにもっていかなければ、心からの協力は求められないからである。

人間にとって大事なことは、学歴とかそんなものではない。やはり他人から愛され、喜んで協力してもらえるような、徳を積むことである。そしてそういう人間を育てようとする精神なのではないだろうか。

いうまでもなく、人間関係を支えるものは相互の愛であり、信頼であり、尊敬である。私はこれをひっくるめて一言でいえば、秘密を守ることだと思う。なぜかといえば、(中略)秘密を守るという行為の中に、その人の人格の要素となっているさまざまな精神的なものがにじみ出ていると思うからである。お互いに秘密を持ち、守りあう量で、人間関係の質が判断できると思う。

などといった一節は、デール・カーネギーの「人を動かす」にも通ずるものがあって面白いなと感じました。



 

11.エッセンシャル思考 最少の時間で成果を最大にする

オススメ度:★★★☆☆


エッセンシャル志向とは何か?を簡潔に表した模式図が以下になります。「より少なく、しかしより良く」を追求するために、努力の方向を絞ったのが右側の図です。

f:id:akiyoko:20180104113356p:plain:w500

「全部手に入れよう」「全部やろう」とすると本質を見失ってしまう、自分で選べない人は他人の言いなりになる、だから自分で優先順位を決めなければいけない、というのは耳の痛い言葉です。

中途半端なイエスをやめて、「絶対やりたい!」か「やらない」かの二択にしよう

は、大胆ですが本質を突いた究極の判断基準になるでしょう。

全体的に分かりやすく書かれていて、内容に特に違和感は無いのですが、もっと手短に書かれていてもいいかな(冗長すぎる)と感じたので、★をマイナス1しました。



 

投資系

SOFT SKILLS ソフトウェア開発者の人生マニュアル」で投資について書かれていたのを機に人生で初めて手を伸ばしてみた分野です。全然分からない分野なので、気になった本を手当たり次第読んでみたというのが実情です。

 

12.株で富を築くバフェットの法則 ――― 不透明なマーケットで40年以上勝ち続ける投資法

オススメ度:★★★★☆


株式投資で巨万の富を築いた伝説の投資家、ウォーレン・バフェットの半生を描いた一冊。投資の神様と言えば「バフェット」というのは聞いたことがあったので、投資の勉強をするならバフェットの本を何か一冊読んでみようと考えて辿り着いた本です。

バフェットの投資哲学は一貫していて、「簡単に理解できる事業を行っており、5年・10年・20年先にきっと今より大きな利益を上げていると思われる企業の株式を納得できる価格で買うことが投資家の目標」と本人がレポートに書いた通り長期投資をメインとし、景気や企業業績が不調のときに買うことを最良としています。ちなみにバフェットが経営するバークシャー・ハサウェイの業績は、過去50年間(1965~2014年)の平均年利(複利)で約20%という驚異的な数字を上げているとのこと。初年度に100ドル投資していれば、50年後に7万5000ドルを超えるリターンが得られる計算になります。
ウォーレン・バフェットの驚くべき収益成果 | 先進国インデックス投資が最強だと証明する岩崎ブログ


バフェットの投資手法と言えば「バリュー投資」(実際の価値よりも割安に放置されている株を購入して本来の価値で売却する)で有名ですが、その手法に大きく影響を与えたのが、「安全なマージン」という銘柄選別法を提唱したベンジャミン・グレアム、「収益性と優れた経営者が大事」とし「理解できるものに絞り込んで投資する」というフィリップ・フィッシャー、割安でなくても良質な企業を買うチャーリー・マンガーだといいます。それについて、

グレアム、フィッシャー、マンガーへのバフェットの思い入れはよく理解できる。グレアムがバフェットに「安全なマージン」という投資の基礎を与え、感情のコントロールを教えた。フィッシャーによって、バフェットの手法は洗練され、長期投資のよい対象を見極めて集中的に投資する方法が与えられた。マンガーは、優れた事業を保有することで大きな利益がもたらされることや、投資判断で陥りがちな心理的な失敗について教えてくれた。バフェットの投資判断について、その意図をどう解釈するかでしばしば混乱が起きるが、3人の教えの組み合わせがバフェットだと考えると、その誤解は解けるだろう。

と著者は書いています。


そのほか、バフェットの考え方や人となりを知る上で非常によくまとまった本になっていると思います。バリュー投資、長期投資を戦略にしている人であれば鉄板本ではないでしょうか。なお、よく耳にするバフェット語録をまとめて読みたければ、下に挙げた「1分間バフェット」などがオススメです。



 

13.1分間バフェット お金の本質を解き明かす88の原則

オススメ度:★★★★☆


投資の神様とも称されるウォーレン・バフェットのいわゆる金言集。
「価格とは、買う時に支払うもの。価値とは、買う時に手に入れるもの」
「投資で重要なのは、自分でルールを考えることと、それを破らないこと」
「リスクとは、自分が何をやっているかよくわからない時に起こるもの」
「他人が貪欲になっている時は恐る恐る、まわりが怖がっている時は貪欲に」
などなど、シンプルでありながら深いフレーズを88個集めた一冊です。

バフェットがどんな人でどんな投資手法を取ってきたかを知った上で読むと有益と思われますので、先に紹介した「株で富を築くバフェットの法則」を合わせて読むことをオススメします。合わせて読む前提で ★★★ からプラス1で。



 

14.生涯投資家

オススメ度:★★★★☆


ニッポン放送株のインサイダー取引(村上ファンド事件)で世間を騒がせた、いわゆる「もの言う株主」村上世彰氏の波瀾万丈な半生を描いた自叙伝です。阪神電鉄の買収劇や 2006年の逮捕は一体何だったのか? が語られています。

その他、子供の頃のエピソードや氏の投資信念なども書かれていて、それだけでも読む価値があります。

企業とその経営者にとって、上場には二つのメリットがある。ひとつは、株式の流動性が上がること。すなわち、株式が換金しやすくなることだ。もうひとつは、資金調達がしやすくなることだ。逆に言えば、この二つが必要ない場合には上場する必要もない、と私は考えている。

私の投資は徹底したバリュー投資であり、保有している資産に比して時価総額が低い企業に投資する、という極めてシンプルなものだ。

投資家として大事なことは、失敗したと気が付いた時いかに素早く思い切った損切りができるか。下がり始めたら売る決断をいかに速やかにできるか、ということだ。それによって、失敗による損失を最小限に止めることができる。

期待値一・〇を超えないと、金銭的には投資する意味がない。この「期待値」を的確に判断できることが、投資家に重要な資質だと私は考えている。

「期待値」のほか、私が投資判断を行なうにあたって重要視している指標がIRR(内部収益率、InternalRateofReturn)だ。手堅く見積もっても、IRRの数字が一五%以上であることが基準となる。

投資につきものであるリスクを査定する際には、定量的な分析よりも定性的な分析が重要なポイントとなる。数字や指標の判断よりも、経営者やビジネスパートナーの性格や特徴を摑むことだ。


事件の真相については、この自伝があくまで村上氏側の主張になっているので果たして真実が何だったのかは私には判断できませんが、当時のメディアから受けたイメージは一変しました。しかしながら、全ては「コーポレート・ガバナンスとその浸透による資金循環の促進こそが経済成長を促す」という想いから、というのはあまりにも良く書かれ過ぎているんじゃないか感も否めません。氏の締め括りのフレーズをどう感じるかは、読者次第です。

私は多くの批判を受けてきた。その原因として、自分の信念を信じ、その信念に自信を持ちすぎて、早急に物事を進めすぎた場面があったことも、今になって振り返ると否定できない。しかし、その方法論や私の言動に賛否はあっても、私が目指してきたことは常に「コーポレート・ガバナンスの浸透と徹底」であり、それによる日本経済の継続的な発展である。


現在は半リタイアしてシンガポールに在住しているという村上氏ですが、Yahoo!ニュースの特集記事に氏の近影が載っていました。あの頃からだいぶ老けたなぁ、という印象です。

「日本郵政は外資が買えばいい」―― 再始動の村上世彰氏が語る - Yahoo!ニュース



 

15.お金の流れでわかる世界の歴史 富、経済、権力・・・はこう「動いた」

オススメ度:★★★★☆


意外というか(笑)予想以上に面白かった一冊。一気に読み終えました。
知っている人からすれば当り前のことなのかもしれませんが、歴史に疎い私としてはいつかもう一度読み直したい本です。


お金が歴史を大きく動かしていた、そして歴史は繰り返す、というのは示唆的で興味深いです。

国の盛衰というものには、一定のパターンがある。強い国は、財政システム、徴税システムなどが、しっかりと整っている。そして国が傾くのは、富裕層が特権をつくって税金を逃れ、中間層以下にそのしわ寄せがいくときなのである。だから国を長く栄えさせようと思えば、税金を逃れる「特権階級をつくらないこと」だといえる。
現在、タックスヘイブンなどにより、世界的規模で特権階級が生じている。ということは、世界的な規模での「国家崩壊」が近づいているのかもしれない。


 

その他

 

16.予想どおりに不合理: 行動経済学が明かす「あなたがそれを選ぶわけ」

オススメ度:★★★★★


この本は昨年読んだ本の中で一番面白かったです。
一昨年読んだ「フリー」の中にも登場していましたし、経済学者で東大名誉教授の伊藤元重先生の「ビジネスエコノミクス」の反転授業に参加したときにも話題に上っていたので結構有名な本なのかなと思ったら、ニューヨーク・タイムズのベストセラーリストに載ったほどの本だとか。著者のダン・アリエリーは現在デューク大学で心理学と行動経済学の教授職を務めており、過去には TED で何度かプレゼンテーションをしたこともあるようです。 *1


ひと言でこの本を説明すると、

わたしたち人間は、従来の経済学の見方からすると、ちっとも合理的でない行動ばかりとっているらしい。本書でも、人間の行動や決断がいかに不合理かを示す興味深い実験がいくつも紹介されている。けれども、著者がこの本全体を通じて主張しているのは、その不合理さには規則性があって予想することができ、だから解決策もある、ということだ。

という訳者あとがきの通りなのですが、行動経済学の入門書として、自ら行った実験結果や多彩なエピソードを交えて、楽しく分かりやすく解説してくれています。またその解決策としては、著者の言うように、我々の行動に規則性のある予想できる形で影響を及ぼす力(感情、相対性、社会規範など)を過小評価したり無視したりせず、我々の脳がそれらに何らかの影響を受けていると認識することで失敗を回避できるとしています。

「本当に求めているものではないのに『無料!』となると不合理に飛びつきたくなるのはなぜ?」など、日常生活でよく見かけるテーマが散りばめられていて面白く、「へえ」と頷くことしきりの一冊です。




 

17.1日ひとつだけ、強くなる。世界一プロ・ゲーマーの勝ち続ける64の流儀

オススメ度:★★★★☆


面白かったです。5年ほど前に「勝ち続ける意思力」を昔読んだのですが、より一層密度が増したように感じました。

「勝ち続ける意思力」を読んだ - akiyoko blog


まずは、「排水の逆転劇」と呼ばれる Evolution 2004 決勝戦の動画を見てください。

この派手な逆転劇に、日々の弛まぬ努力、追い詰められても焦らず判断力を乱されない心の鍛錬、卓越した大局観が凝縮されています。


たかが格闘ゲームと言えどトップの世界で勝ち続ける人の言葉は、ビジネスや人生にも通じる教訓として捉えることもできますが、世の中全体の競争が一段と激しくなりつつある中でこれらの言葉がさらに輝きを増しているようにも感じます。梅原氏も格闘ゲームのプロは真面目にさえやっていれば生きていける世界ではない、自ら積極的に成長していける人だけが勝ち残れると語っていますが、我々のビジネスにもこういった思考力や精神力がますます必要になってくるのでしょう。

もし勝ちたいのであれば、自分ではどうにもならないことに感情を動かされないよう努力したほうがいい。

勝負において自分の戦い方を崩してしまうのは、最も避けるべきことのひとつだ。僕が大切にしているのは、同じ負けにしても感情的にならずに、自分の戦い方のまま負けるということ。感情に呑まれず、自分のやるべきことをしっかりやることが最優先だ。勝ち負けはその結果でしかない。自分の戦い方を保ってさえいれば、ミスがミスを呼ぶことがない。逆転につながる可能性も出てくる。


また、リスクや投資についても鋭い考え方も持っています。リスクを恐れず前に進むには、大局観が必要とのこと。

弱い人というのは目先の損が我慢できない。状況を考えず感情で前に出てしまい、自分のリズムを崩すきっかけを作ってしまう。当然、結果も出ない。

行動力のない人には、共通点がある。特徴のひとつは、「リスク」と捉えるものが多すぎること。「あれも損」「これも損」と考えている。目先の少し損、他人の目、ちょっとした手間なんかが気になって、行動に移せないのだ。

どういうコンセプトで臨むかによって、思考の流れは変わってくる。大局観を持っていれば、ここまでは失敗できる、という線がだいたい見えてくる。大きな目で見れば、少しの失敗がリスクでもなんでもないことが分かってくる。自然と、行動力が出るようになるものだ。

大局観があれば、大きく行動できるようになる。別に正しい視点を持とうとしなくて構わない。大切なのは「仮にこういう視点はどうだろう」と考えて、その視点に沿って行動すること。自分の自由を広げることだ。

投資として、動くことのポジティブな面を考えるのが強いプレイヤー。リスクとして、動くことをネガティブに考えるのが弱いプレイヤー。


「大局観」と言えば、最近、国民栄誉賞の受賞が決定した羽生善治竜王の本「大局観 自分と闘って負けない心」を4年ほど前に読んだことを思い出しました。(現在は47歳ですが)40歳を過ぎてもさらに積極的にリスクに向き合えるようになったという変化は、大局観の賜物ということになるのでしょうか。勝負の世界に生きる最前線の人たちが同じような境地に辿り着いているというのは大変興味深いです。

《過去記事》
akiyoko.hatenablog.jp


私も大局観を意識して持つようにし、日々の変化をチャンスと思えるようにしていきたいです。




 

18.キャッチコピー力の基本 ひと言で気持ちをとらえて、離さない77のテクニック

オススメ度:★★☆☆☆


どこかで見たことのあるようなキャッチコピーのノウハウをまとめたもの。すぐに使えるようなテクニックもあり、まとめてあるので読みやすいのですが、薄いカルピスを飲んでいる感じが否めません。

コピーやライティングに関する本であれば、以前に読んだ「究極のセールスレター」の方が面白かったです。




19.雑談のトリセツ: 会話が楽しくなる!

オススメ度:★★☆☆☆


雑談がとにかく下手なので、読んでみた一冊。
ちょっとした時間に気軽に読み終えられるくらいに薄い本です。

内容については、一瞬「こんなの当り前」と思ってしまうのですが、こういう当り前が出来ていないから雑談が下手なのでしょうね。

以下、気になったところを抜粋。

  • 原則1:「話す内容を思いつきやすい」内容を喋る
  • 原則2:「思いついた内容を話しやすい」環境を作る
    • 相槌を打ち、質問をする
    • 相手が話し手のときは自分は聞き手に回る
    • 話の中に自分のことを交える
    • お互いによく知っている話題を選ぶ
    • 適度に感情が動いた話題を探す(楽しかったこと、ほっとしたこと、恥ずかしかったこと、嬉しかったこと)
    • 相手を不安な気持ちにさせない(落ち着いた態度、相手の話に興味を持っているような態度)
    • 相手に好かれるようにする(挨拶、話を聞くときには目を見る、相手の名前を会話に混ぜる、ねぎらいや感謝の言葉を掛ける、相手の話した内容を覚えておく)

2017年の akiyoko blog 振り返り

明けましておめでとうございます。
勝手に恒例にしていますが、昨年(2017年)の akiyoko blog を振り返っておきたいと思います。

f:id:akiyoko:20180102031254p:plain


ちなみに 2016年の振り返りはこんな感じでした。

<過去記事>
akiyoko.hatenablog.jp



2017年の akiyoko blog 振り返り

昨年一年間にアップした記事の本数は 37本でした。約10日に一本のペースです。

2014年をピークに 77本(2014年)→ 59本(2015年) → 44本(2016年) → 37本(2017年)と記事数が少しずつ減っていますが、アウトプットをサボっている訳ではなく、年々忙しくなっているというのもありますし(面倒なので正確な数字は測っていませんが)一記事あたりのボリュームが増えてきているようにも感じています。


全 37本中、Python 関連の記事が 14本で全体の約4割というのは前回とほぼ変わらず。しかしながら、13本と多かった Django 関連の記事は 2本に減り、代わりに pandasScrapyJupyter などのデータ分析関連の記事が増えました。


大きな変化と言えば、ブロックチェーン仮想通貨 関連の記事が増えたことでしょうか。昨年は社外の勉強会に20回参加し、その内 18本(*1)を記事としてアップしたのですが、その半数ほどがブロックチェーン、仮想通貨関連の勉強会でした。「fin-py もくもく会」には4回、「ビットコインとか勉強会」には5回も参加していました。特に fin-py は自分のやりたいことをいろいろ試せるので、来年も積極的に出ていきたいです。


ブログ記事ごとのアクセス数ランキング(akiyoko blog 2017年)

記事ごとのアクセス数ランキングです。2017年内のアクセス数(*2)ランキング上位 30本をリストアップしています。

なお昨年中に書いた記事 37本中、30位以内に入ったのは 9本でした。 *3


# 昨年比 タイトル 作成日 ポイント
1 まだ CSV の文字化けで消耗してるの?(Excel で直接開いても文字化けしない CSVファイルを Python3 で作成するスマートな方法) - akiyoko blog 2017/12/09 507.2
2 「プロジェクトマネージャ試験」に一発合格するための三か条 - akiyoko blog 2014/10/26 152.0
3 Git で コミットを無かったことにする方法 (git revert の使い方) - akiyoko blog 2014/08/21 71.9
4 IPA「情報セキュリティマネジメント試験」に一夜漬けで合格するためのたった二つの勉強法 - akiyoko blog 2016/11/17 66.6
5 あなたのパンダ(pandas)止まってませんか? 〜 Bokeh と ipywidgets でインタラクティブ Jupyter のススメ - akiyoko blog 2017/12/22 63.8
6 Python でリストのソートまとめ - akiyoko blog 2014/09/26 59.7
7 AppStore 登録前の iOSアプリを Ad-Hoc で配布してインストールする方法 - akiyoko blog 2014/08/23 48.8
8 Video.js を使って HLS形式の動画をストリーミング再生する - akiyoko blog 2015/08/11 46.4
9 pandas.DataFrame の列の抽出(射影)および行の抽出(選択)方法まとめ - akiyoko blog 2017/04/03 44.1
10 「一対一」「一対多」「多対多」のリレーションを分かりやすく説明する - akiyoko blog 2016/07/31 40.7
11 Open BroadCaster Software (OBS) で YouTube ライブストリーミングを使った動画配信をする方法 - akiyoko blog 2016/01/26 38.3
12 PyCharm のオレオレ最強設定 - akiyoko blog 2017/03/10 30.4
13 Python で Selenium WebDriver を使ったブラウザテストをする方法 - akiyoko blog 2014/04/29 25.9
14 iMovie の設定あれこれ - akiyoko blog 2016/02/01 24.5
15 Windows で R(統計解析ツール)を使う - akiyoko blog 2014/11/07 18.9
16 「Python 3 エンジニア認定基礎試験」に合格しました! - akiyoko blog 2016/12/21 18.1
17 Apple Developer Program の有効期限が切れてしまったときの対処方法 - akiyoko blog 2015/11/13 17.6
18 Mac の MySQL クライアントに「Sequel Pro」を使っているなら PostgreSQL クライアントは「PSequel」がオススメ - akiyoko blog 2016/07/29 14.6
19 Pythonのself - akiyoko blog 2012/06/27 14.1
20 見よ!これが Python製の WordPress風フルスタックCMSフレームワーク「Mezzanine(メザニン)」だ! - akiyoko blog 2015/12/23 14.0
21 初心者がプルリクまでに覚えるべきたった 9つの厳選 Gitコマンド - akiyoko blog 2014/12/02 13.7
22 まだ Moodle で消耗してるの? オープンソースの Python製 LMS「RELATE」が圧倒的にカスタマイズしやくてヤバイぞ! - akiyoko blog 2017/12/19 13.1
23 jQuery で Ajax を使ってみる - akiyoko blog 2014/07/21 12.7
24 ビットコイン・仮想通貨・ブロックチェーンの本を合計10冊読んだのでオススメ本を紹介 - akiyoko blog 2017/12/18 12.6
25 Python, Django 界隈の単体テスト事情(unittest / nose / django-nose) - akiyoko blog 2015/01/01 12.3
26 Open BroadCaster Software (OBS) の設定あれこれ - akiyoko blog 2016/01/23 12.2
27 matplotlib のグラフに日本語を表示する方法(文字化け対応) - akiyoko blog 2017/04/11 12.1
28 Pythonで単回帰直線 - akiyoko blog 2013/06/16 12.0
29 Pandas の DataFrame の基本的な使い方 - akiyoko blog 2017/03/27 11.9
30 pandas.DataFrame で時系列データの手習い - akiyoko blog 2017/04/10 11.5



#1 の「まだ CSV の文字化けで消耗してるの?(Excel で直接開いても文字化けしない CSVファイルを Python3 で作成するスマートな方法) - akiyoko blog」は、「python Advent Calendar 2017 - Qiita」の一記事として書いたものですが、公開して丸一日以上経ってから はてなのホットエントリー(テクノロジー) に出始め、そこからアクセスが瞬間的に伸びたのが要因です。結局、400 以上ブックマークされました。「文字化け」がプログラマを悩ま続ける共通のテーマだったからというよりも、「悪循環画像ジェネレータ」で作った図がウケたんじゃないかなと勘繰っています。


f:id:akiyoko:20180101182840p:plain:w400



全体的に Python 系の記事がアップしているのは、機械学習やデータ分析を扱うための中心的言語になっているなど、Python への注目度が上がっている表れなのかもしれません。特に、30位までに4記事がランクインした「pandas」、12位にランクインした「PyCharm」など、こんなニッチな記事が本人の予想を大きく超えて読まれていることに驚きを隠せません。


akiyoko.hatenablog.jp




浮かばれなかった記事

前回も書きましたが、頑張って書いたのにアクセスが全然だった「浮かばれなかった記事」は以下になります。


オープンソースのブロックチェーン「Hyperledger Sawtooth」の調査記事。ほぼ 3万字の超大作ですが、何のインパクトも残せませんでした。。

akiyoko.hatenablog.jp


お手軽データ分析シリーズの三部作。3記事で 1万5000字超えです。
ちなみに個人的には Scrapy は結構使えるなと感じています。うまくデータが抜き出せた時の楽チン度は半端ないです。

akiyoko.hatenablog.jp
akiyoko.hatenablog.jp
akiyoko.hatenablog.jp




今年の目標

記事数の目標は特にありません。

今年は何かプロダクトを作っていこうと考えていますので、それに沿った記事をメモ代わりにアウトプットできればと考えています。

*1:某ECサイトの勉強会と FinTech LT大会&忘年会 については記事を書いていません。

*2:純粋な PV数ではなく、作成日からの日数で割ったポイントで算出しています。

*3:作成日のところを黄色く塗っています。

あなたのパンダ(pandas)止まってませんか? 〜 Bokeh と ipywidgets でインタラクティブ Jupyter のススメ

この投稿は 「Jupyter Advent Calendar 2017 - Qiita」 の 22日目の記事です。


こんにちは、パンダ好きの akiyoko です。

f:id:akiyoko:20171222151740p:plain:w250

上野動物園の赤ちゃんパンダ、シャンシャン可愛いですよね〜。
Ueno Panda Live.jp というサイトで、開園日なら毎日(ただし開園時間のみ)パンダのライブ映像が見れる(オススメは3カメ!)のは皆さんもうご存知ですよね。しかしながら、たまに小一時間ほどパンタ達がじーーーっと動かないことがあるんですね。ただ寝てるだけという。こっちはあのモフモフが愛くるしく動く姿が見たいのに!! 見たいだけなのにぃ!!!!

f:id:akiyoko:20171222124515p:plain:w400
(親子水入らずで全く動かない様子。キャプチャ元:Ueno Panda Live.jp


ハァハァ。少々取り乱してしまいましたが、ところで、あなたのパンダ(pandas)も止まってしまっていませんか? というのが今回のテーマです。 *1


最近、この本を少しずつ読んでいます。

Python 界隈で大注目のデータ分析ツール「Jupyter Notebook」を中心に、1次元・2次元データを便利に扱うための「pandas」、2次元データからグラフを描画するための「Matplotlib」、インタラクティブなグラフを描画するための「Bokeh」などについて 400ページを超える大容量ボリュームで書かれており、動的・対話的なグラフを Jupyter Notebook 上に描くことが一つのゴールとなっています。


また、fin-py にも何度か参加させていただいているのですが、LT でたまに見かける、Jupyter Notebook 上でグリングリン動かせるインタラクティブなチャートに憧れを抱いていたのは私ではないはず。


いろいろ調べたり聞いたりしたところ、動的にチャートを動かす部分は Bokeh、ウィジェットの部分は ipywidgets がよさげということが分かりました。 *2

上記 Jupyter本の共著者で fin-py 主催の driller さんも昨年の「jupyter notebook Advent Calendar 2016 - Qiita」で「ipywidgetsとBokeh使ってインタラクティブな可視化をする - Qiita」というズバリそのままの記事をアップしていたりします。



一周遅れになった感はありますが、今回は「Bokeh と ipywidgets でインタラクティブ Jupyter のススメ」と称して、Bokeh と ipywidgets を使って Jupyter Notebook 上の pandas のチャートをグリングリン動かしてみたい と思います。

チャートに使うデータは、CoinMarketCap から取得した今年1月からの仮想通貨の価格、および米 Yahoo Finance から取得したドル円為替を使います。



 

Bokeh, ipywidgets のインストール

現在のローカル環境は以下の通りです。

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G1114

$ python -V
Python 3.5.2 :: Anaconda custom (64-bit)

 

Bokeh

Anaconda をインストールしていれば、Bokeh は標準で入っていると思います。

(参考)Anaconda package lists | Anaconda: Documentation


 

ipywidgets

一方の ipywidgets のインストール方法は、「Jupyter 本」の付録「A-1 ipywidgets の使い方」に詳しく書かれているのですが、私の環境ではそのままではうまく動きませんでした。

$ conda install -conda-forge ipywidgets

として、

from ipywidgets import interact

@interact(n=5)
def f(n):
    return n

を実行してもウィジェットが起動せず。実行するたびに、Jupyter Notebook のログに

[IPKernelApp] WARNING | Widget Javascript not detected.  It may not be installed or enabled properly.

というワーニングが出ている状態。
結局、ipywidgets が利用している widgetsnbextension のバージョンが「3.0.0」だとダメっぽいと判断。一旦、2系に戻しました。

$ conda install 'widgetsnbextension<3'

とし、

$ jupyter notebook

を止めて、再度立ち上げ直せば動くようになりました。

f:id:akiyoko:20171222140001p:plain

$ pip list | grep bokeh
bokeh (0.12.2)

$ pip list | grep widgets
ipywidgets (6.0.0)
widgetsnbextension (2.0.0)

 

データ収集

仮想通貨の日足チャート

Scrapy という Python 製のクローリング・スクレイピングツールを使って CoinMarketCap から 1月からの日足チャートを取得し、ローカルに CSVファイルとして保存しました。


《過去記事》
akiyoko.hatenablog.jp


なお、Scrapy を使った今回のスクレイピング実行コードは
github.com
に置いてあります。
実行環境は Python 3.5 です。


取得したデータはこのような形式で保存されています。


BTC.csv

symbol,date,open,high,low,close,volume,market_cap
BTC,"Dec 20, 2017",17760.30,17934.70,16077.70,16624.60,"22,149,700,000","297,526,000,000"
BTC,"Dec 19, 2017",19118.30,19177.80,17275.40,17776.70,"16,894,500,000","320,242,000,000"
BTC,"Dec 18, 2017",19106.40,19371.00,18355.90,19114.20,"14,839,500,000","320,000,000,000"
  ...
BTC,"Jan 03, 2017",1021.60,1044.08,1021.60,1043.84,"185,168,000","16,426,600,000"
BTC,"Jan 02, 2017",998.62,1031.39,996.70,1021.75,"222,185,000","16,055,100,000"
BTC,"Jan 01, 2017",963.66,1003.08,958.70,998.33,"147,775,000","15,491,200,000"

ETH.csv

symbol,date,open,high,low,close,volume,market_cap
ETH,"Dec 20, 2017",827.52,845.06,756.00,819.09,"3,969,940,000","79,810,600,000"
ETH,"Dec 19, 2017",793.90,881.94,785.34,826.82,"4,096,550,000","76,552,200,000"
ETH,"Dec 18, 2017",721.73,803.93,689.23,794.64,"3,249,230,000","69,578,400,000"
  ...
ETH,"Jan 03, 2017",8.37,10.00,8.32,9.73,"33,625,200","732,988,000"
ETH,"Jan 02, 2017",8.17,8.44,8.05,8.38,"14,579,600","714,900,000"
ETH,"Jan 01, 2017",7.98,8.47,7.98,8.17,"14,731,700","698,149,000"



ローカルに保存した仮想通貨の日足チャートの CSVファイルを全て読み込みます。1ファイルごとに 1通貨のチャートが入っているので、とりあえず行方向に連結しておきます。

import glob
import pandas as pd

pd.options.display.max_rows = 10

df_all = pd.DataFrame()
paths = glob.glob('/Users/akiyoko/PycharmProjects/ccspider/downloads/*.csv')
for path in paths:
    df = pd.read_csv(path, index_col='date', parse_dates=True)
    df = df.sort_index()
    df_all = df_all.append(df)

df_all

f:id:akiyoko:20171222141316p:plain:w400


例えば、BTC のチャートを取り出すときは以下のようにすればよいでしょう。

df_all[df_all.symbol == 'BTC']

f:id:akiyoko:20171222144226p:plain:w400


pandas.DataFrame の条件による切り出しについては、過去記事に詳しい説明があります。

《過去記事》
akiyoko.hatenablog.jp


 

ドル円為替の日足チャート

ドル円為替は、pandas-datareader というライブラリを使って、米 Yahoo Finance から日足チャートデータを取得しました。

import pandas_datareader.data as DataReader

df_usdjpy = DataReader.get_data_yahoo('JPY=X', start='2017-01-01', end='2017-12-31')
df_usdjpy

f:id:akiyoko:20171222143621p:plain:w400


pandasで為替データUSD/JPYの取得 - はしくれエンジニアもどきのメモ」を参考にさせていただきました。


それにしても、pandas-datareader スゴイ!
たった一行で為替チャートが取ってこれるのですね。他にも株価や世界人口、GDP のデータも簡単に取れるようです。

(参考)pandas-datareaderで株価や人口のデータを取得 | Python / note.nkmk.me


 

実践

移動平均線

まず、n日移動平均のチャートをハンドルで動かせるようにしてみます。ここまではほぼ「Jupyter 本」のパクリです。

from bokeh.io import output_notebook, push_notebook, show
from bokeh.plotting import figure
from ipywidgets import interact

output_notebook()
plot = figure(plot_width=600, plot_height=300, x_axis_type='datetime')
df = df_all[df_all.symbol == 'BTC']
close = plot.line(df.index, df['close'])
ma = plot.line(df.index, df['close'].rolling(10).mean(), color='red')
handle = show(plot, notebook_handle=True)

@interact(n=(0, 30))
def redraw(n=10):
    ma.data_source.data = {'x': df.index, 'y': df['close'].rolling(n).mean()}
    push_notebook(handle=handle)

f:id:akiyoko:20171223171743g:plain:w500


ハンドルを動かすと、赤色の移動平均線がグリグリ動きます。気持ちいいです。


 

ドロップダウンで通貨を入れ替え

次に、pandas.DataFrame の条件による切り出しを使って、ドロップダウンの条件によって通貨を入れ替えられるようにしてみました。

from bokeh.io import output_notebook, push_notebook, show
from bokeh.plotting import figure
from ipywidgets import interact

output_notebook()
plot = figure(plot_width=600, plot_height=300, x_axis_type='datetime')
df = df_all[df_all.symbol == 'BTC']
close = plot.line(df.index, df['close'])
ma = plot.line(df.index, df['close'].rolling(10).mean(), color='red')
handle = show(plot, notebook_handle=True)

@interact(symbol=['BTC', 'ETH', 'BCH', 'XRP', 'LTC', 'MIOTA', 'ADA', 'DASH', 'XEM', 'BTG'], n=(0, 30))
def redraw(symbol='BTC', n=10):
    df = df_all[df_all.symbol == symbol]
    close.data_source.data = {'x': df.index, 'y': df['close']}
    ma.data_source.data = {'x': df.index, 'y': df['close'].rolling(n).mean()}
    push_notebook(handle=handle)

f:id:akiyoko:20171223174020g:plain:w500


Market Cap の上位10通貨を切り替えられるようにしてみましたが、なかなか面白いです。



 

USD ⇔ JPY の切り替え

最後に、USD と JPY の価格表示が切り替えられるようなチェックボックスを付けてみました。

df に「close_jpy」列を追加し、通貨の終値(USD)とドル円為替の終値(1USD あたりの JPY)を掛けた値を入れています。なお、為替は相場が休みの日はデータが取れない(N/Aになる)ため、「fillna(method='ffill')」を使って前日のデータで補完しています。

from bokeh.io import output_notebook, push_notebook, show
from bokeh.plotting import figure
from ipywidgets import interact

output_notebook()
plot = figure(plot_width=600, plot_height=300, x_axis_type='datetime')
df = df_all[df_all.symbol == 'BTC']
close = plot.line(df.index, df['close'])
ma = plot.line(df.index, df['close'].rolling(10).mean(), color='red')
handle = show(plot, notebook_handle=True)

@interact(symbol=['BTC', 'ETH', 'BCH', 'XRP', 'LTC', 'MIOTA', 'ADA', 'DASH', 'XEM', 'BTG'], n=(0, 30), jpy=False)
def redraw(symbol='BTC', n=10, jpy=False):
    df = df_all[df_all.symbol == symbol]
    # interpolate() causes ValueError: Out of range float values are not JSON compliant... why?
    #df = df.assign(close_jpy=(df['close'] * df_usdjpy['Close']).interpolate())
    df = df.assign(close_jpy=(df['close'] * df_usdjpy['Close']).fillna(method='ffill'))
    y = df['close_jpy'] if jpy else df['close']
    close.data_source.data = {'x': df.index, 'y': y}
    ma.data_source.data = {'x': df.index, 'y': y.rolling(n).mean()}
    push_notebook(handle=handle)

f:id:akiyoko:20171223173442g:plain:w500


全体的に 5月、12月に何があったの??という感じのチャートになっています。


 

まとめ

pandas.DataFrame は時系列データを保持したりチャートを描いたりするのに非常に便利に使えますが、Bokeh と ipywidgets でインタラクティブにチャートを描画できるようにすれば、見栄えもよくもっと強力なツールになります。


そんな Bokeh や ipywidgets についてもしっかり書かれている「Jupyter 本」はスゲエなってことを今回再認識しました。つまり、買えってことです(笑)。


ちなみに今回の Advent Calendar では当初、pandas.DataFrame の resample を使ってインタラクティブに5分足 ⇔ 1時間足 ⇔ 日足といったようにチャートを書き換えられるようにしたかったのですが、うまく動かすことができませんでした。figure の X軸を書き換えるのは難しいのかもしれませんね。。


明日は、u1and0 さんの「Jupyter Advent Calendar 2017 - Qiita」 23日目の記事です。よろしくお願いします。




 

おまけ

今回の件とは直接関係ありませんが、notebook 保存時に以下のエラーが出てファイルを保存できなくなって困ってしまいました。

f:id:akiyoko:20171222150328p:plain

結局、
python - plotly plots in jupyter notebooks: Validation fails when saving - Stack Overflow
に書かれているように、

$ conda update nbformat

を更新してから、

$ jupyter notebook

を止めて再度立ち上げ直せば、保存できるようになりました。

原因は不明ですが、急に動かなくなると焦りますよね。

*1:なお、pandas の名前の由来は「panel data」らしいです。 pandasで使われるデータ構造 ~1次元、2次元、3次元のデータの扱い方~ - 今日も窓辺でプログラム

*2:ipywidgets については「Jupyter 本」にも説明があります。

まだ Moodle で消耗してるの? オープンソースの Python製 LMS「RELATE」が圧倒的にカスタマイズしやくてヤバイぞ!

この投稿は 「Django Advent Calendar 2017 - Qiita」 の 19日目の記事です。


こんにちは、akiyoko です。

「Django Advent Calendar」は 2年連続 4度目の参加になります。昨年は最後まで枠が空いていたので、調子に乗って3日分も担当してしまいました。 *1, *2, *3


あと、2年前に Python製 CMS「Mezzanine」を紹介したときの流れで、煽りタイトルを付けてしまいました。重ね重ね申し訳ございません。

《過去記事》
akiyoko.hatenablog.jp



 

はじめに

オープンソースの LMS(学習管理システム)と言えば、

などがまず真っ先に挙げられますが、今回紹介するのは、Python 製で Webフレームワークの代表格「Django」をベースに開発されたオープンソースの LMS、その名も「RELATE」です。 *4


例えば、Pythonista なあなたが LMS を開発することになったとしましょう。
良さげな候補が Moodle しか見つからず、「仕方ない、Moodle をカスタマイズするか。はぁ、PHP か・・」というのは精神衛生上よろしくないですよね?(すいません、個人の意見です。)

そんなとき、Moodle じゃない Python製の LMS があればワクワクしてきませんか? ・・しませんか、そうですか。


あとよく聞くのは、Moodle は要らない機能が多すぎるという問題。ちょっとしたテキストと動画、小テスト(クイズ)が受講できる講座をオンラインで実施したいだけなら、もっとシンプルなものが求められるケースもありますよね。


しかも、Moodle は GPLライセンス のため、Moodle をカスタマイズしてオンライン学習サービスをリリースした場合にはソースコードの公開が求められることになります。

Moodleはコピー・利用・修正してかまいませんが,条件として,ソースコードを公開し,元のライセンスや著作権表示を修正したり削除したりせず,同じライセンスをMoodleから派生したソフトにも与えなければなりません。


Moodleとは - MoodleDocs


そのため、BtoB 向けに Moodle をカスタマイズして提供するというのはライセンス上どうしても困難な面があるかと思います。その点、RELATE は MITライセンス なのでソースコードの公開義務はありません。機能追加し放題、思う存分カスタマイズすることができます。



 

RELATE の特徴

まず、RELATE には、

  • Python 製、Django ベース
  • コースコンテンツを Markdown 形式で記述(プログラマ向け!)
  • コースコンテンツは1講座ごとに Git 管理(管理画面でバージョンの切り替えも可能)
  • VideoJS による動画埋め込みを標準サポート
  • 日本語にも翻訳可能 *5

といった特徴があります。中でも、コースコンテンツを Markdown で書くという特徴はオンリーワンじゃないでしょうか(私の知る限りで)。


画面はトップ画面、テキスト(動画)画面、クイズ画面、成績画面、管理側画面などで構成され、LMS としてひと通りの機能が揃っています。機能はさほど多くないですが、実用的でしっかりと作り込まれており、Moodle や Canvas の2000オーバーには及びませんが、GitHub スターは現時点で120ほど付いています。また、Python 3、Django 1.11 にも対応しています。


ところで Django 1.11 なら、この「Two Scoops of Django」シリーズの最新版が絶対オススメです。英語ですが(と言っても難しい感じの本ではないです)、現場で役立つこと間違いなしのナンバーワン Django本です。


GitHub の履歴を覗いてみると、2014年5月から inducer がコツコツとプロトタイプを作り始め、dzhuang が途中で加わり、現在は主に二人で開発を続けていますが、最近も頻繁にコミットがされています(今日も何件かコミットされていました)。

inducler(Andreas Klöckner)はプロフィールを公開していて、ドイツ出身で現在はイリノイ州立大学のコンピュータサイエンスの助教授をしているとのこと。自身(?)の オンラインクラス にこの RELATE を使っているようです。なので、ちゃんと Python や Django のバージョンアップに追随しているのですね。

全部を一個人が作ったのではなく(一応)複数人が開発していて、Issue や PR をオープンに受け入れているのでサポートもある程度期待できそうです。何よりも、ベースが Django なのでコードが理解しやすくカスタマイズしやすいのが嬉しいところです。


これで SPA だったら最高なのになぁ、と思ったあなた。・・そんなあなたのために、「Web Expedition」(webexp)という「Django + Angular」なイケてる LMS を見つけておきました(*6)。一応オープンソースなのですが開発者が最新版のソースコードを push してないのか、昔触ったときにうまく動かなかった記憶がありますのでご注意を。





 

Ubuntu 16.04 on Docker for Mac で構築してみる

Ubuntu 16.04 on Docker for Mac 上に RELATE のサイトを構築してみます。
もちろん、以下の構築手順は本番向けではありませんのでくれぐれもご注意を。

環境

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.12.6
BuildVersion:	16G1114

$ docker --version
Docker version 17.09.1-ce, build 19e2cf6


 

Docker コンテナを起動

$ docker run -it -p 80:8000 --name relate ubuntu:16.04

# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

# apt-get update
# apt-get install -y python3-dev python3-pip
# pip3 install -U pip
# apt-get install -y vim git curl

# python3 -V
Python 3.5.2
# pip3 -V
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

### Bower をインストール
# apt-get install -y nodejs npm
# nodejs -v
v4.2.6
# npm -v
3.5.2
# npm install -g bower



以降は、Installation — RELATE 2015.1 documentation を参考にして RELATE のインストールを進めていきます。

なお、検証時の RELATE のバージョンは、66d3d38 です(2017/12/19 時点の最新版)。

# cd /opt/
# git clone https://github.com/inducer/relate.git

### 事前にコースコンテンツも配置しておく
# git clone https://github.com/inducer/relate-sample.git
# cd relate
# pip3 install -r requirements.txt

ここで、

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-uh2f9ekj/django-select2/

というエラーが出る場合がありますが、「django-select2」6.0.0 のバグの可能性があります。

diff --git a/requirements.txt b/requirements.txt
index 3a5dbd3..e39372f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -94,7 +94,7 @@ git+https://github.com/celery/django-celery.git@6232c79557517afa74967fcb980c0db2
 # }}}

 # For searchable select widgets
-django_select2>=5.5.0
+django_select2<6

 # To sanitize HTML generated by user code
 bleach>=2.0,<3

と修正して

# pip3 install -r requirements.txt

をやり直せば、うまくインストールできました。

# cp local_settings.example.py local_settings.py
# vi local_settings.py

で、

ALLOWED_HOSTS = ["*"]

に変更。

# python3 manage.py migrate
# python3 manage.py createsuperuser
### (admin/admin@example.com/pass)

# python3 manage.py bower_install --allow-root

ここで、Ubuntu 16 は "node" ではなくて "nodejs" として認識するため、ここで以下のようなエラーが出てしまう場合があります。

/usr/bin/env: 'node': No such file or directory

この場合は、以下のコマンドを実行すれば OK です。

# ln -s /usr/bin/nodejs /usr/bin/node

改めて、

# python3 manage.py bower_install --allow-root

を実行。

最後に、runserver を起動します。

# python3 manage.py runserver 0.0.0.0:8000

ブラウザで、
http://localhost/login/
にアクセスします。

f:id:akiyoko:20171219230405p:plain


 

コースコンテンツの登録

「Sign in」のリンクを辿り、superuser でログインします。

f:id:akiyoko:20171219230421p:plain

ログインできたら、「Set up new course」ボタンをクリックします。

f:id:akiyoko:20171219230508p:plain


以下のようにサンプル講座の設定をおこない、「Validate and create」ボタンを押下。

Course identifier: t-001
Course name: Test Course
Number: T001
Time period: March 2018
Start date:
End date:
Only visible to course staff: チェック
Listed on main page: チェック
Accepts enrollment: チェック
Git source: /opt/relate-sample
SSH private key: 
Course root in repository: 
Course file: course.yml(デフォルト)
Events file: events.yml(デフォルト)
Enrollment approval required: 
Enrollment required email suffix: 
From emai: admin@example.com
Notify email: admin@example.com

f:id:akiyoko:20171219230813p:plain:w300


サンプル講座のトップ画面が表示されます。

f:id:akiyoko:20171219233802p:plain


講座を受講してみる

本来は受講者を作成してログインし直すべきですが(成りすましモードもあります)、このまま進めていきます。

トップ画面から以下のリンクをクリックするか、「http://localhost/course/t-001/flow/001-linalg-recap/start/」にアクセスすると、テキストページのフローに進むことができます。

f:id:akiyoko:20171219233606p:plain

ここに動画やテキストを配置します。ページ移動は上部のナビゲーションから可能です。

f:id:akiyoko:20171219233129p:plain



次に、クイズ(小テスト)です。


トップ画面から、「sample quiz」というリンクをクリックするか、「http://localhost/course/t-001/flow/quiz-test/start/」にアクセスします。

f:id:akiyoko:20171219233629p:plain

クイズが横に並んでいます。

f:id:akiyoko:20171219231934p:plain

いろんな形式のクイズを出すことができます。

f:id:akiyoko:20171219232041p:plain

クイズの形式はこの他にも多数用意されています。

f:id:akiyoko:20171219232011p:plain

クイズを提出する場合は、右側のボタンをクリック。

f:id:akiyoko:20171219232146p:plain

確認画面が表示されます。

f:id:akiyoko:20171219232604p:plain

結果画面も用意されています。

f:id:akiyoko:20171219232639p:plain

完了したクイズは、後で振り返りをすることもできます。

f:id:akiyoko:20171219232748p:plain


管理者側の画面で成績の一覧をチェックすることも可能です。

f:id:akiyoko:20171219232906p:plain



 

まとめ

2年前に Python製で Django ベースの CMS「Mezzanine」を紹介しましたが、今回は同じく Python 製で Django ベースの LMS「RELATE」を紹介してみました。


Django ベースで開発されているため、Django に慣れている Pythonista であれば容易にカスタマイズができますし、既存の様々なライブラリを利用することができるため、思うがままの LMS を創り上げることができます。

これを機にオリジナルのオンライン学習サービスをリリースしてみてはいかがでしょうか。



明日は、kzkamago0721 さんの「Django Advent Calendar 2017 - Qiita」 20日目の記事です。よろしくお願いします。

*1:昨年は最後まで枠が空いていたので、調子に乗って3日分も担当してしまいました。《過去記事》akiyoko.hatenablog.jp

*2:《過去記事》akiyoko.hatenablog.jp

*3:《過去記事》akiyoko.hatenablog.jp

*4:検索に引っかかりにくい名前つけやがって、こんちくしょう!!

*5:ただし、コースコンテンツの翻訳は難しいかも。

*6:Quiz Web App with Django + Angular and deployment on pythonanywhere | Bhargav Patel

ビットコイン・仮想通貨・ブロックチェーンの本を合計10冊読んだのでオススメ本を紹介

この投稿は 「暗号通貨 Advent Calendar 2017 - Qiita」 の 18日目の記事です。

こんにちは、akiyoko です。

 

はじめに

ビットコインが 100万円を突破した 11月後半あたりから「ビットコイン」「仮想通貨」「ブロックチェーン」などのキーワードがものすごい勢いで急激にトレンドを上げています。


f:id:akiyoko:20171218015754p:plain
(2017/12/18時点。今現在のトレンドはまとめの下に掲載)


それに合わせて関連本の出版も急増していて、Amazon でも「ビットコイン」「仮想通貨」「ブロックチェーン」等で検索すると、合わせて 400冊以上も本が見つかる状況となっていて、こちらもちょっとしたお祭り状態になっています。

ビットコインをはじめとする仮想通貨やブロックチェーンの情報ならインターネットにいろいろと転がっているとは思いますが、ある程度整理された知識をまとめて押さえるのには本が一番と考えている人も多く、私も(もちろんインターネットの情報もチェックしますが)体系的な知識を入れるために本から入ることも少なくありません。


今年は仮想通貨やブロックチェーン関連の本を合計10冊ほど読んだのですが、今回はその中から(特に技術者目線で)有用だと感じた度合いを「オススメ度」という形で示しながら紹介していきたいと思います。また、技術者ではない人にも読めるかどうか判断できるように「難易度」の目安(★ が多いほど難しい)も付けてみました。ぜひ参考にしてください。



先に結論を書くと、技術者であれば、①〜③のいずれか一冊かインターネットの情報でざっと概要を頭に入れた後、「⑥ いちばんやさしいブロックチェーンの教本」で周辺の情報も含めて技術的なところを押さえておけばまずは大丈夫です。

技術者でなければ、「③ いまさら聞けない ビットコインとブロックチェーン」が分かりやすくてイチ推しです。

プラスアルファとして何か読むのであれば、読み物としての「④ デジタル・ゴールド」が非常に面白いです。将来の金融業界にブロックチェーンがどんな衝撃を与えるか興味がある方は「⑧ アフター・ビットコイン」は必読です。


さあ、行ってみましょう!


 

ビットコイン関連

ビットコインに特化した本。まずはここから入る人も多いと思います。私もそうでした。

① ビットコイン解説本

オススメ度:★☆☆☆☆
難易度:★☆☆☆☆


「ビットコインって何?」という状態から最初に読んだ本。

ビットコインは「お金」なのか?という疑問に、ポイントサービス(Tポイント・楽天ポイント 等)や電子マネー(楽天Edy・Suica 等)、クレジットカードとの比較をしながらその特徴を説明していきます。お金の歴史やビットコイン誕生の歴史についても少し触れられており、ビットコインの概要を知るための本と言えます。気軽に読めるページ量(75ページ程度)なので、てっとり早く概要を知りたいという人や最初に読む本としてはいい と思います。逆に、技術的に詳しく知りたいという人には全然物足りないでしょう。

2014年発刊ということで少し古臭さは否めませんが、概要を知るというだけなら特に問題ないと思います。


 

② ビットコインはどのようにして動いているのか? ビザンチン将軍問題、ハッシュ関数、ブロックチェーン、PoWプロトコル

オススメ度:★☆☆☆☆
難易度:★★☆☆☆

11月の SegWit2x ハードフォーク回避 を見事予言的中したフルタイムビットコイナー、大石 哲之さんの本。

私の予想では、マイナーが経済的に合理的あれば、決してSegwit2xのフォークを行わないと考えている。マイナーは、価値の低い2xコインを採掘せず、1xコインを採掘し続けるだろう。その結果、11/16日には、実際は何もおこらないだろう。


Segwit2xのフォークについて | ビットコイン研究所」より


ビットコインの核心(そして革新)部分である「ビザンチン将軍問題」にフォーカスを当てた仕組み解説本 ですが、何か事情があって急いで出したのでしょうか、内容に物足りなさを感じます(実際 66ページと薄い)。技術的な内容は少しだけしか触れられていません。というか、ほぼビザンチン将軍問題の説明だけに終始しています。しかしながら、説明や比喩が多少回りくどく感じられ、余計にモヤモヤするかもしれません(あくまで私の感想ですが)。

全般的に図が一切無いからでしょうか、内容がスッキリと頭に入ってこない印象です。出版された2014年当時としては数少ない日本語の情報だったかもしれませんが、今となってはインターネットに転がっているレベルと言えば言い過ぎでしょうか。


 

③ いまさら聞けない ビットコインとブロックチェーン

オススメ度:★★★★☆
難易度:★★☆☆☆


国内大手の仮想通貨取引所 coincheck の COO 大塚 雄介 氏の著書。 *1

現金やクレジットカードとの違いやビットコインのメリットなどの初歩の初歩から始まり、ビットコインの簡単な仕組みやセキュリティに至るまで、なるべく誰でも理解できるように技術的な説明が必要な部分をうまく掻い潜りながら工夫して説明されているのがよく分かります。仮想通貨ビギナーでも何の問題もなく読み進められると思います。その割に、SegWit(セグウィット)やクラウドマイニングなどについても説明があり、周辺知識もしっかり押さえられています。

また、国内最多のアルトコインを販売している coincheck に所属しているということもあってか、ビットコインだけでなく、Ethereum(イーサリアム)や Augur(オーガー) などのいくつかのアルトコインについての説明もされています。ということで、技術的なことは苦手だけどビットコイン周辺のいろいろな情報を押さえたいという人にはピッタリ の内容でしょう。


文春オンラインの記事「ビットコインの仕組みを文系の人にわかりやすく伝えるには? | 文春オンライン」で

「類書は多いですが、文系の人でも簡単に、大づかみにこの分野を理解できるのはこの本だけと思います」(担当編集者の千葉正幸さん)

と書かれている通り、技術的な話は一切出てこないので、「文系なのでちょっと・・」という方にもバッチリ理解できるような本になっていると思います。



ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin
ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin



 

④ デジタル・ゴールド ── ビットコイン、その知られざる物語

オススメ度:★★★★★
難易度:★★☆☆☆


2009年のビットコイン誕生から2014年までの黎明期の歴史を、ビットコインに熱狂した人たちの物語を中心に、実際にあった出来事をベースに仔細に描いた人間ドラマ。 仮想通貨の「王様」とまで呼ばれるまでになった今とは全く違う、ビットコインの若かりし頃の裏の顔を垣間見ることができます。これが事実だとすると(著者はニューヨーク・タイムズ紙の記者で緻密な取材をおこなったとのことなので事実無根なことは書いていないと思いますが)、ビットコインが現在このように多くの人を魅了するほどに大きくなっているのはまさに奇跡だと感じてしまいます(それこそがビットコインの持つ「力」が本物だと証明していると考えることもできますね)。いずれにせよ読み物として最高の面白さです。

サトシ・ナカモトの人物像(私の想像と全く違いました)、違法サイト「シルクロード」で人気を維持していたダークサイドな時期、2014年2月の「Mt.GOX」事件の詳細など、私のような新参者が知らない歴史がこの一冊に詰まっています。「Mt.GOX」がアレの頭文字だったとか知ったときはショックで唖然としました(笑)。

技術的な要素は「補足」として巻末に書かれていますが、何も知らなくても全く問題なく読み進められます。しかしながら技術的な内容が少しでも分かっていれば、この物語をより一層楽しめるでしょう。

若干気になったのは、最後のあっけない終わり方。紆余曲折ありながらも物語はまだまだ続いているのになと思ったのですが、数年後に続編が出るのを期待しましょう。


 

⑤ ビットコインとブロックチェーン : 暗号通貨を支える技術

オススメ度:★★★★★
難易度:★★★★★


原題は「Mastering Bitcoin」。世界的にも有名な一冊で、もはやビットコイン技術者のバイブルとも言われている本です。あるいは、卒業証書と言っていいかもしれません。これが読めたら、ビットコインの仕組みはひと通りは理解できているという証になるでしょう。完全に技術者向け。 読む前にある程度の知識は入れておいたほうが良いと思います。何の知識もなくこの本を最初に読むと、十中八九挫折します。他の本で曖昧に説明されていたことが事細かに書かれていて、(細かい部分までは理解できなくても)「なるほどこういう仕組みで作られているのか」とスッキリできるようになります。

後半に、初期の頃のアルトコインの情報もあり、こちらもなかなか有益な内容になっています。


 

ブロックチェーン関連

こちらは、取り扱うテーマをビットコインだけに絞らず、幅広くブロックチェーンまでを解説した本です。

⑥ いちばんやさしいブロックチェーンの教本 ― 人気講師が教えるビットコインを支える仕組み

オススメ度:★★★★★
難易度:★★★☆☆


タイトルに「いちばんやさしい」とありますが、詳しめな技術要素の説明もあって、対象読者は明らかに「技術者」です。ビットコインやブロックチェーンの概要をある程度知っていて、もう少し深掘りして勉強したい技術者にはピッタリです。 全体的によくまとまっていて、個人的には一番のオススメ本です。

技術的な部分をなるべく詳しく説明しながら、且つ分かりやすく説明されています。他の本では解説していない細かな部分もちゃんと説明をしているなという印象で、これ一冊でほとんどの基礎的な要素をしっかりと網羅することができると思います。ブロックチェーン以外にも、ウォレットやスマートコントラクト、などの周辺情報も幅広く説明しており、まさにこれ一冊で OK というイメージです。

先に述べた通り難易度が少し高いのですが(そういうものなんだと読み流すことはできますが)、ITパスポートレベルの基礎知識があれば何とか理解はできるのではないかと思います。


 

⑦ ブロックチェーン・レボリューション ―― ビットコインを支える技術はどのようにビジネスと経済、そして世界を変えるのか

オススメ度:★★★☆☆
難易度:★☆☆☆☆


ブロックチェーンという技術がビジネス、経済、世界をどのように変えるのかといった「ブロックチェーン革命」について書かれた本です。従来の「情報のインターネット」に対して、ブロックチェーンは「価値とお金のインターネット」と言われる所以について、ブロックチェーン革命の要となる7つのポイントについて、「信頼」「非中央集権」「インセンティブの設計」「不正ができない」「個人情報のブラックボックス化」「スマートコントラクト」「格差を解消するデザイン」という点が挙げられると言います。ハッとしたのは、「これからは、いいことをすると得をして、悪いことをすると損になるようなインターネットが実現する」という点。私がブロックチェーンを画期的だと思うのは、利用者が利己的な行動をしてもそれがシステム全体としての利益に繋がるという設計の妙なのですが、そのあたりの話が技術的な説明一切無しに書かれているのは面白いところです。インターネットは世の中を良くしたと言われますが、格差を広げただけという指摘もあります。そんな中、インターネットがスポットライトを当てなかった人たちにもブロックチェーンが光を照らす。そんな新しい未来がブロックチェーンによって来るかもしれない。夢と希望と可能性を感じられる、面白い本ではないでしょうか。

ただし、少し分厚いのが唯一の難点でしょうか。


中村 伊知哉氏のブログでも書評がありますね。
ブロックチェーンは革命なのか? ~ Ichiya Nakamura / 中村伊知哉


 

⑧ アフター・ビットコイン : 仮想通貨とブロックチェーンの次なる覇者

オススメ度:★★★★☆
難易度:★★☆☆☆


ビットコイン(いわゆる「ブロックチェーン 1.0」)はバブル、オワコン。これからは、金融の世界を根本的に変革するポテンシャルを秘めている「ブロックチェーン 2.0」(決済・送金、証券決済など)、「ブロックチェーン 3.0」(登記、資産管理、投票など)に利用されるであろう「分散型台帳技術」の時代だよ、という内容の本です。
話の流れ上、どうしてもビットコインはバブルにしてしまいたい駆け足気味の前半部分には少し違和感を覚えましたが、後半の金融分野への深い造詣はさすが日本銀行で「電子現金プロジェクト」に携わり、決済機構局でデジタル通貨を研究、国際決済銀行(BIS)でグローバルな活躍をしてきた経歴を持つ著者の得意分野、まさに独壇場という感じの内容でした。

パブリックなチェーンであるビットコインと比較して、金融界で導入されるであろうプライベートチェーンの利点、ネックとなる承認速度やファイナリティの問題、個人的に一番の謎だった「プライベートチェーンをマイニングするインセンティブって?」という(ビットコインの仕組みをベースに考えると理解しにくい)モヤモヤや疑問が解消します。また、Linux Foundation が推進する「HyperLedger Fabric(ハイパーレッジャー・ファブリック)」、R3 コンソーシアムの「Corda(コルダ)」、Ripple の「ILP(インターレッジャー・プロトコル)」などのプライベートチェーンについての解説や、中央銀行が狙う当座預金のデジタル化(決済コイン型デジタル通貨)、証券決済などの話題が盛り沢山で、ビットコインブームを脇においてこれだけしっかりとブロックチェーンの金融分野への展開を論じている本は少ないのではないかと思います。

⑦がぼやっとしたブロックチェーンがもたらす夢の未来を書いているとすれば、こちらは具体的な近未来像を描いています。プライベートチェーンについての多彩な情報は他の本には無いオンリーワンな内容かと思います。金融業界に今後何が起こるかを知りたい人、ビットコインじゃないブロックチェーンの可能性について詳しく知りたいという人にはピッタリ な内容です。


著者の中島氏はこんな人です。
「ビットコイン」の終わりから「ブロックチェーン」の時代へ:中島真志 | 記事 | 新潮社 Foresight(フォーサイト) | 会員制国際情報サイト

ビットコイン界隈で有名な DEG さんの書評も見つけました。
【迫るラストデイ】アフター・ビットコインを読みました - 仮想通貨のあるとこ


 

Ethereum ・スマートコントラクト関連


Ethereum の本は何冊か出ていますが、まずは一冊だけ読んでみました。

⑨ スマートコントラクト本格入門 ― FinTechとブロックチェーンが作り出す近未来がわかる

オススメ度:★★★★☆
難易度:★★★★☆


数少ないスマートコントラクトの実践入門書。

序盤は FinTech やブロックチェーンの超概要、中盤はスマートコントラクトについて書かれています。中でも、ブロックチェーンやスマートコントラクトに関わる法律・規制の話は他の本にはなかなか無いので貴重です。後半はガラッと変わって開発者向けの話になり、SolidityTruffleGeth を使った Ethererum ベースのスマートコントラクト開発の具体的な手順について述べられており、実際に手を動かしてみようといった感じになっています。ということで、Ethererum を使ったスマートコントラクトの開発をしてみたい人には入門書として非常に有益 な内容になっていると思います。


Ethereumはどのように動いているのか - The Coffee Times」と合わせて読むとよいかと思います。なお、ERC20トークン については書かれていませんので悪しからず。


 

アルトコイン関連

意外にと言うか、アルトコイン(ビットコイン以外の仮想通貨)についての本はあまり見当たりません。成長のスピードが早過ぎて情報がすぐに陳腐化してしまうからでしょうか。今のところ次の一冊くらいしかないのですが、読んでみました。

 

⑩ 一冊でまるわかり 暗号通貨 2016〜2017

オススメ度:★★☆☆☆
難易度:★☆☆☆☆


タイトルから適当に書いたかと思いきや(笑)、意外としっかり調べている印象です。しかしながら、取り上げているアルトコインの種類が少なくて中途半端な印象も。実際、役に立ったかと言えば微妙でコスパは多少悪いかなと感じました。続編(あるのかな?)に期待です。

ある程度まとまったコインの情報が日本語で書かれたものが他に無いため、今改めて見返すと有用な部分も多いです。Twitter やブログでの特定のアルトコイン推しのポジトークに辟易していて、第三者視点からの情報が欲しいという人にはマッチする かもしれません。

ちなみにこの本に取り上げられているアルトコインは以下の24種類です。

 

まとめ

今年、「ビットコイン」「仮想通貨」「ブロックチェーン」関連の本を合計10冊読んだので、「難易度」と「オススメ度」を付けてそれらを一冊ずつ紹介してみました。

ただし、★ の数はあくまで個人の感想ですのでご注意ください。書籍をご購入の際は、ご自身の目的に合ったものを用法用量を守って正しくお選びください。




明日は、ohac さんの「暗号通貨 Advent Calendar 2017 - Qiita」 19日目の記事です。よろしくお願いします。



 

おまけ

本はもう何冊か読んでいたのですが、10冊の枠から外れたものをおまけで紹介。

⑪ 1時間でわかるビットコイン投資入門

オススメ度:★☆☆☆☆
難易度:★☆☆☆☆


薄くて(144ページ程度)対話形式でテンポよく読めるなので、数時間で読み切ることができます。内容はだいぶ薄め。

ポートフォリオ、指値注文と成行注文、時間分散(ドルコスト平均法)、アービトラージ、証拠金取引など、仮想通貨「投資」についてのまさに基本が書かれている本。知っておいて損はないとは思いますが、まあ皆さん大体知ってますよね、といった内容。

この本は 5月に出版(寄稿は4月)された比較的新しめの本なのですが、

私は2018年末までに1BTC=30万円近辺もあり得るとみているため

などと書かれているあたり(実際には 2017年5月25日に 30万円達成 *25)、ビットコイン・仮想通貨の流れは早いな(早過ぎて怖いな)と感じてしまいます。


 

参考

現在の「ビットコイン」「仮想通貨」「暗号通貨」「ブロックチェーン」のトレンドです。