akiyoko blog

akiyoko の IT技術系ブログです

年末年始に読んだ本 5冊(2015〜2016年)

今回は、2015年から2016年の年末年始にかけて読んだ本 5冊をまとめて紹介したいと思います。


人工知能は人間を超えるか


人工知能とディープラーニング(深層学習)に関する本です。

一年程前、ディープラーニング系の勉強会に参加したときに、(当時の私の勉強不足が原因で)あまりの知識ミスマッチに居ても立ってもいられなくなって、休憩時間にふと用事を思い出した体で(笑)そそくさと退散したことがあるのですが、それ以来、ディープラーニングがひとつのトラウマだったのです。

そんな苦手意識があったのですが、思い切ってこの本を読んでみて、頭の中のモヤモヤがかなりスッキリしました。人工知能やディープラーニング系にありがちな難解な要素を排除した初心者にぴったりなディープラーニングの入門書で、最後まで面白く読み切ることができました。


中でも特に興味を持ったのが「特徴量設計」に関するセクションです。人工知能を革新的に進化させたディープラーニングですが、特徴量を抽出するそのやり方が人間がものを記憶する際の脳の働きと非常に似ていると感じたのです。

<過去記事>
akiyoko.hatenablog.jp


でも書いたのですが、川上量生氏曰く、脳は情報量が多いものをそのまま記憶することができないという構造上の問題から、

よく物事の本質とはなにかと問いますが、物事を記号化して少ない情報量で表現したものがその正体でしょう。なぜ本質が必要かというと、脳は単純な情報しか扱えないからだと思います。

というのを思い出して、ハッとしました。これはまさにディープラーニングの手法ではないかと。特徴量を抽出するという点では、まさに人間の脳でも同じことを無意識的に行っているわけで、人工知能のテクノロジーが人間の進化の仕組みをなぞり始めている、というのを感じました。



あと、少し前に話題になった、オックスフォード大学の論文で発表された「あと10〜20年でなくなる職業」というのも本の中で紹介されていました。これは刺激的な内容でしたよね。

私は、「宝くじ販売人」「タクシー運転者」がリストで並んでいるのを見て、「粒度がバラバラやな」と思ったのですが、これ、あいうえお順だったんですね。

3時間で手に入れる最強の交渉力


弁護士の 荘司 雅彦 氏が執筆した、説得・交渉スキルの本です。会社の棚に入っていたので借りて読んでみました。荘司氏のことは FB で何度か見かけていたので、気になっていたのです。

前書きに、

本書は、どれだけゆっくり読んでも、3時間もあれば読了することができるはずです。

とあったのですが、全然3時間で読めませんでした。。

というのも、そもそも読むのが遅いというのもあるのですが、各章で取り上げているテーマの粒度と展開方法がバラバラで、読んでいて非常に読み進めにくい印象があったのです。

後書きを読んで、なるほどと思いました。

 執筆にあたって私が最も留意したことは、読者にとって即座に役立つ本に仕上げることでした。
(中略)
 その目的を達するために、本書にはたくさんの具体例を盛り込み、読者のみなさんの腑に落ちるよう詳細な解説を加えています。
 具体的かつ実践的な有用性を最優先としたため、書籍全体の統一性やバランスは多少犠牲にしています。そういう意味で、荒削りな印象は免れません。

これを前書きに書いていただければ、もう少し印象は違ったかもしれません。

確かにいろいろ有用な部分はありました。しかしながら、全体としての統一性がないので、なかなかストンと入ってこなかったのです。まさに「人は理屈で説得できても、感覚で納得しないと動いてくれない(P.136)」という状態でした。


以下、有用だと思った部分を引用。

  • 交渉ではまず、信頼関係、ラポールを築くことが大事
  • 信頼関係を築くステップは、第一印象(礼儀を尽くす)、聴き役に徹する、質問で相手の本音を探る
  • 交渉力とは問題解決力。問題の原因は理想と現実とのギャップ、問題解決はそのギャップを埋める作業
  • 問題点(ニーズ)、落とし所を見つける
  • 自分が上の立場の場合は、相手を追い詰めない、下の立場の意見を十分に聞く(責任はしっかり取る)
  • 下の立場の場合は、根拠を持った意見を述べる、上が決断したことには無条件に従う


 

秋元康の仕事学


大晦日のカウントダウン前に読み始めて、2時間ほどで読み終えた本です。
秋元康氏が NHKの番組向けに語ったトークセッションの語りおろし本で、企画に関する氏の考え方が書かれていました。

普段は企画の仕事をやっているわけではないのですが、氏の独特の考え方にはなるほどと思うところが多々ありました。

  • 企画のネタは日常の中にある。企画の入り口は気付くことから始まる
    • 「おや?」と思ったことに対して、心の中でどんどん付箋をつける
    • 日常からの気づきを企画のリュックサックにどんどん入れておき、必要なときに取り出す
    • 重要なのは、リュックサックに入れるときや取り出すときに、その素材に対してどれだけ想像力を働かせて拡大できるか
    • 他人の意見よりも、まず自分が面白いと思うかどうか。「自分が正解だ」と思うことが一番大切
  • 魅力的な人は「初めて」を作るのが上手。常に好奇心を持って暮らしている
    • 分かった気になってしまうのは非常にもったいない
    • どんな一日も無駄にしないという気持ちが大切
  • ヒットするのは「まだ見たことがないもの」
    • 予定調和を崩す。予定調和が裏切られたときに、人は面白いと感じる。自分が見たことがないものだから、ハッとする

などなど。


その中でも秋元氏の発想法が独特だなと思ったのは、「リサーチをしない」というところです。

目の前でヒットしているものは全て過去のもの(作られてからヒットするまでにディレイがある)なので、それを分析しても仕方がないとのことです。だから、「みんなと同じところに行かない」ように気をつけているというのです。

みんなと同じところに行かないためには、企画を絞る(尖らせる)のが重要とのこと。記憶に残る「幕の内弁当」は無い、つまり中庸なものではヒットは生み出せないということらしいです。分かりやすい例えで、しかも説得力があります。


また、予定調和を壊すという文脈の中で、

ですから、エンターテインメントの基本というのは、全体像を見えにくくすることなのだと思います。つまり、「見てみなければわからない」と思ってもらえるものを提供できるのが一番いいということになります。

と言っていたのですが、これも「コンテンツの秘密 ぼくがジブリで考えたこと (NHK出版新書)」の中に書かれている、「コンテンツの定義は『分かりそうで分からないもの』」という川上氏独自の解釈に通じるものがあるなと感じました。



あと本の中によく出てくるフレーズに、「人生に無駄なし」という一節がありました。

Wikipedia の略歴を読む限りでは順風満帆な人生を歩んできたようにも思えますが、30歳で結婚する前後に、確固としたバックグラウンドがないまま時代の寵児と持て囃されてしまった自分をふと顧みて「このまま行ったらどうなってしまうんだろう」という言い知れぬ不安に襲われ、ニューヨークで自分を見つめる期間を一年半ほど過ごしたと吐露していますが、振り返ってみればそれも無駄ではなかったと言います。

私の人生も回り道、寄り道ばかりですが、後で無駄ではなかったと思えるようにしたいものです。



「リーン・スタートアップ」と「未来に先回りする思考法」



未来に先回りする思考法」は、正月の深夜に放送していた「http://www.nhk.or.jp/jirenma/20160101.html」という討論番組を見たのがきっかけで読みました。番組に出演されていたメタップス社長の佐藤航陽氏の最新刊です。今年の一冊目はこれを読もうと思っていました。


その後たまたま、

daipon01.com

というブログに「未来に先回りする思考法」の書評が書いてあったのですが、このブログでこの本との対比として取り上げられていた「リーン・スタートアップ ムダのない起業プロセスでイノベーションを生みだす」という本が積ん読になっていたのを思い出し、二冊合わせて一気読みしました。


上記のブログから少し引用すると、

インターネットが普及し、グローバリゼーションが進展すると、
(中略)
どれだけ精密な事業計画を作ったところで、
商品をリリースするまでに環境が変わってしまうので、
これまでの計画が無意味なものになってしまうのです。


そこで流行ったのがリーンスタートアップという手法。


市場調査や事前計画は最小限。
とにかく短期間で最低限実用に足る商品をリリースしてしまい、
利用者の反応を検証して得られた結果をもとに、
当初の事業アイデアをひたすら修正・改善していきます。
目の前に起きている変化にひたすら適応していくスタイルです。


しかし佐藤さん曰く、これすらスピードが遅いとのこと。

(中略)

これから生き残る会社というのは、
来るべき未来を予測し、先回りして準備を整え、
適切なタイミングでサービスをリリースできる会社だそうです。

ということが書かれていました。

なるほど。
二冊をうまくまとめてあります。



まずはじめに、「リーン・スタートアップ ムダのない起業プロセスでイノベーションを生みだす」は 2012年に出版され、「リーン・スタートアップ」という言葉はスタートアップ *1 が成功するためのビジネス開発手法として、MVP(Minimum Viable Product:実用最小限の製品)という言葉と共に当時一斉を風靡しました。

そもそも「リーン」な考え方とは、トヨタが開発した「リーン生産方式」をスタートアップの起業に適用したもので、価値を生み出す活動(顧客にメリットを提供するもの)と無駄とをはっきり区別するための具体的な施策を体系化したもので、画期的な新製品を早くリリースするための方法であると言っています。


また、「リーン・スタートアップ」とソフトウェア開発の現場でよく使われる「アジャイル開発」との違いとしては、アジャイルは開発自体に焦点があたるのに対して、リーン・スタートアップは持続可能な事業のマネジメント手法であって、特に仮説検証にフォーカスしています。



次に、「未来に先回りする思考法」です。

人は今目の前で起きていることからしか将来のことを予測することしかできないために未来を見誤るのだ、という痛烈な批判からスタートします。

インターネットというテクノロジーを得た今や、社会の変化するスピードは過去最も速くなり、さらにますます加速しる中、「計画通りに実行すればうまくいく」時代はもうすでに終わったと言い切ります。

そんな時代に合わせて、そもそも計画することを放棄し、社会の変化に対応して事業自体をも変化させる「リーン・スタートアップ」のいわば「地図を捨ててコンパスを持つ」という考え方が流行しましたが、リーン・スタートアップが持て囃されて数年が経ち、リーンなスタイルの起業で市場が激化してしまった現在では、「変化に対応」するだけのリーン・スタートアップではもう勝てなくなってきているとも佐藤氏は言っています。
つまり、社会の変化のパターンを見抜き、「変化に先回り」できるプレイヤーのみが生き残っている時代になってきているというのです。



佐藤氏は非常に論理的な人だと感じます。加えて、なぜそれができたのかという「原理」を常に考えている人だと思います。川上量生氏も、著書の中で進化論に言及したりしているところがあったのですが、それと似ている部分があると感じました。


また、「人生に無駄なし」という秋元康氏に対して、

私は、無駄な努力はないと思っていますが「報われない努力」は存在すると考えています。残念ながら、意味のないことはどれだけうまくできるようになっても意味はないのです。
物事は、惰性で進みがちです。「どうすれば現状のやり方を効率化できるか」と考える前に、「今も本当にそれをやる価値があるのか」を優先して考える癖をつけることをお勧めします。


大きなリターンを出すためには、適切な時に適切な場所にいることが重要です。人間ひとりの努力によってできることは非常に限られています。努力に頼るよりも、大きな流れに乗る方が、はるかに速く目的地に着くことができます。

という超論理的思考の佐藤氏との対比が、私の中ですごく面白かったです。

「テクノロジーは『天才』を量産可能にする」という佐藤氏の考え方も非常に論理的で、これも秋元氏の独自の天才理論とは一線を画すものだと感じました。

*1:本書では「とてつもなく不確実な状態で新しい製品やサービスを創り出さなければならない人的組織」を指すとされる。ベンチャー企業とスタートアップの違いについては、http://blog.btrax.com/jp/2013/04/22/startup-2/ も参照

iMovie の設定あれこれ

はじめに

Mac で動画編集をするなら、iMovie が手軽でよいと思います。

やり始めた当初は、読み込んだファイルの実体はどこにあるの?とかいろいろと謎な部分がありましたが、使っていくうちにだんだんと分かってきたので、ここらでメモを残しておこうと思います。


f:id:akiyoko:20160202074811p:plain



初心者の方には、こんな本もありますよ。


 

外付けHDD を用意

HDD容量の少ない Mac で動画編集をするなら、外付けHDD がほぼ必須です。

私は、USB 3.0 対応のポータブルタイプの外付けHDD を購入しました。
容量は 2 TB もあれば十分でしょう。

東芝 ポータブルHDD 2.0TB ホワイト HD-AA20TW

東芝 ポータブルHDD 2.0TB ホワイト HD-AA20TW


外付けHDD のフォーマット

Windows でも Mac でもファイルを書き込み・読み込みできるように、「exFAT」でフォーマットします。加えて、exFAT でフォーマットすることで、1ファイルあたり最大 16GB までのファイルが認識できるようになります。


HDD をフォーマットするには、Launchpad から「ディスクユーティリティ」を起動します。

f:id:akiyoko:20160201231108p:plain


現在のパーティション構成はこうなっていました。

f:id:akiyoko:20160201231128p:plain

少しだけデータが入っていましたが、もろとも消去してしまいます。

ここで、フォーマットに「exFAT」を選択します。
f:id:akiyoko:20160201231145p:plain

消去すると、フォーマット完了です。

f:id:akiyoko:20160201231201p:plain



iMovie の設定

まずは、全体の設定から。

iMovie を起動したら、[iMovie] > [環境設定] を選択し、Theater の「コンテンツを iCloud に自動的にアップロード」のチェックを外しておきます。

f:id:akiyoko:20160201233729p:plain


iMovie を起動すると、「ムービー」ディレクトリ直下に、「iMovie ライブラリ.imovielibrary」という名前のディレクトリが作成されますが、これが作業ディレクトリの実体となります。

f:id:akiyoko:20160201234130p:plain


ここからいろんな専門用語が飛び交いはじめますが、作業ディレクトリである「ライブラリ」 には、メディアを読み込んでおくための「イベント」と、実際に動画の編集作業を行う「プロジェクト」を含めることができます。



先に書いたように、iMovie ライブラリはデフォルトでは Mac のローカルディレクトリに作成されますが、以降の手順で、外付けHDD にライブラリを新規作成し、それを参照させるようにします。

外部HDD にライブラリを新規作成

ライブラリを外部HDD に新規作成するには、[ファイル] > [ライブラリを開く] > [新規] を選択します。

f:id:akiyoko:20160201234154p:plain


保存場所を外部HDD に指定して保存します。

f:id:akiyoko:20160201234208p:plain

ライブラリが作成されると同時に、(作成日付で)新規イベントも作成されます。

f:id:akiyoko:20160201234231p:plain

イベント名は、適当な名前に変えてしまっても OK です。

f:id:akiyoko:20160201234250p:plain


次に、イベントにメディアを読み込んでみます。

f:id:akiyoko:20160201234330p:plain
f:id:akiyoko:20160201234351p:plain


読み込まれたメディアの実体は、.imovielibrary ファイルを右クリックして「パッケージの内容を表示」を選択すると表示されます。

f:id:akiyoko:20160201234419p:plain
f:id:akiyoko:20160201234551p:plain




 

新規プロジェクトを作成

動画編集するならここからが本番です。


新規プロジェクトを作成するには、「新規ムービー」を選択します。

f:id:akiyoko:20160202001922p:plain


テーマを任意に選択します。「テーマなし」でも構いません。

f:id:akiyoko:20160202001940p:plain


プロジェクト名を決定します。
ここでライブラリは、外部HDDに作成したものを指定します。

f:id:akiyoko:20160202002000p:plain


「プロジェクトメディア」に、作成したプロジェクトがリストアップされました。

f:id:akiyoko:20160202002023p:plain


.imovielibrary ファイルを右クリックすると、ライブラリにプロジェクトが入っていることがわかります。

f:id:akiyoko:20160202080738p:plain



次に、ライブラリのイベントで読み込んでおいたクリップを使ってみます。
ダブルクリックでクリップ全体を選択することができ、「+」アイコンをクリックすると下のシーンに追加することができます。

f:id:akiyoko:20160202002110p:plain
f:id:akiyoko:20160202002143p:plain




動画ファイルの書き出し

最後に、作成した動画ファイルを書き出します。

右上のアイコンをクリックし、「ファイル」を選択します。

f:id:akiyoko:20160202003143p:plain


「Theater に追加」のチェックを外し、その他の項目は適宜調整して「次へ」をクリック。

f:id:akiyoko:20160202003200p:plain

ファイル名と保存場所を設定して、「保存」をクリックすると、書き出しが始まります。

f:id:akiyoko:20160202003214p:plain


左上のこのアイコンが消えたら、書き出し完了です。

f:id:akiyoko:20160202003227p:plain

Open BroadCaster Software (OBS) で YouTube ライブストリーミングを使った動画配信をする方法

前回の続きで、ノートPC(Windows)と Webカメラと Open BroadCaster Software (OBS) で YouTube ライブストリーミング配信をする方法のメモです。

<過去記事>
akiyoko.hatenablog.jp



PCスペック

なお、今回は、ローカルに録画しながら同時に動画配信するということで、前回より少しスペックの良いPCを使っています。
と言っても、約4年前のノートPC。時の経つのは早いものですね。。

 

OBS バージョン

  • v0.657b - 32 bit


前回と同じく、Windos用の 32 bit 版を使っています。





OBS設定

まずは全体の設定。

f:id:akiyoko:20160126003512p:plain


設定プロファイルを保存しておきます。

f:id:akiyoko:20160126003541p:plain


ビットレートは「2500」くらいに設定しておきます。
この値は、画質を左右すると同時に負荷にも大きく影響を与えるらしいので、要調整です。

f:id:akiyoko:20160126003604p:plain

参考




モードを「配信」、サービスを「YouTube」に変更します。
ストリームキーは今のところ空白で構いません。

「自動的に配信をファイルに保存」および「配信が停止した場合でも録画を続行」にチェックを入れます。

f:id:akiyoko:20160126003621p:plain


フルHD 1080p 画質(1920 × 1080)、30 fps で撮影ができる Webカメラを使っているのですが、エンコードが高負荷になっているという警告が出るので、720p 画質の「1280 x 720」に設定しました。

f:id:akiyoko:20160126003628p:plain


サウンドデバイスとして、USBマイクを設定。

f:id:akiyoko:20160204235534p:plain


ホットキーの「プッシュツートークを使用」のチェックを外しておかないと、USBマイクからの入力が何故か検知されなくなってしまうので要注意です。

f:id:akiyoko:20160126021701p:plain


現在のところ、YouTube配信の制限として、キーフレーム間隔を「4」秒に設定しなければいけません。

あと、サウンドの遅延も適宜設定しておきます(前回と同じ値)。

f:id:akiyoko:20160126021320p:plain


残りの設定については、変更なしです。

f:id:akiyoko:20160126003745p:plain

f:id:akiyoko:20160126020825p:plain

f:id:akiyoko:20160126003804p:plain


全体の設定は以上です。


次に、ビデオデバイスの設定です。


f:id:akiyoko:20160126003822p:plain



ビデオデバイスが Webカメラ、サウンドデバイスが「無効にする」になっているか確認します。

f:id:akiyoko:20160126074809p:plain


ビデオデバイスの設定は以上です。




 

YouTube ライブストリーミングの配信設定

YouTubeにログインして、「クリエイターツール」の画面に移動します。

f:id:akiyoko:20160126005603p:plain


左のメニューで「ライブストリーミング」→「イベント」と辿り、「新しいライブイベント」をクリック。

f:id:akiyoko:20160126005635p:plain


ここで、ストリーミング開始時間を現在日時よりも少し前の時間で設定するのがポイントです。

公開設定は、「限定公開」や「公開」など任意に選択できます。

f:id:akiyoko:20160126005647p:plain


収益の設定も可能です。

設定が完了したら、「予定を作成」をクリックします。

f:id:akiyoko:20160126005657p:plain


サムネイル画像を設定します。
この画像はライブストリーミング開始前のプレイヤーで表示されたりするので、なるべく設定しておいた方がよいかと思います。

取り込みの基本設定を、720p の設定に合わせて「1500 Kbps ~ 4000 Kpbs (720p)」に設定します。

f:id:akiyoko:20160321004008p:plain


ここで表示される「ストリーム名」が、OBS の放送設定で入力する「ストリームキー」になります。

f:id:akiyoko:20160126013508p:plain


これをコピーして、OBS の「ストリームキー」に設定して適用します。

f:id:akiyoko:20160126005725p:plain


「配信開始」をクリックします。

f:id:akiyoko:20160126005953p:plain


しばらくすると、YouTube のライブコントロール画面上で、ストリームの状態が「データがありません」から「良好」になるはずです。

f:id:akiyoko:20160126005959p:plain


「プレビュー」ボタンが押せるようになるので、クリックします。
(「プレビュープレーヤーに同期」はチェックを外しておいても問題ないでしょう。)

f:id:akiyoko:20160126010008p:plain


「ストリーミングを開始」をクリックして、ストリーミングを開始します。

f:id:akiyoko:20160126010031p:plain


ストリーミングが開始されました。
「動画再生ページを表示」をクリックして、ライブストリーミングを確認します。

f:id:akiyoko:20160126010048p:plain


この URL でライブストリーミングを見ることができます。

f:id:akiyoko:20160126010058p:plain


ライブストリーミングの一時停止・再開、ローカル録画の停止・再開は、以下のボタンを使います。

f:id:akiyoko:20160126010107p:plain




 

Open BroadCaster Software (OBS) の設定あれこれ

年に何回か、会社のノートPC と Webカメラと Open BroadCaster Software (OBS) を使って動画を撮影することがあるのですが、その設定を忘れがちなので自分用にメモ。


メインは録画用途で、アナログ RGB(VGA)ケーブルを使ってプロジェクタに同時上映もしています。


PCスペック

4〜5年前のノートPC ですが、当時はそこそこハイスペックでした。
最近買った Mac を使いたいところなのですが、Mac版の OBS にはマイク音声のタイミングずれを補正する機能が無いようなので、仕方なく Windows を使っています。


 

OBS バージョン

  • v0.657 - 32 bit


64 bit 版では利用できる機能に制限があるということで 32 bit 版を使っていますが、詳しいことは分かりません。


撮影機材

Webカメラはこちらの Logicool C920。
4K撮影はできませんが、フルHD 1080p画質(1920 × 1080) 毎秒30フレーム(fps)の動画撮影ができ、センサーは300万画素、光学レンズはカールツァイス社製、AF機能が付いています。

LOGICOOL HDプロ ウェブカム C920

LOGICOOL HDプロ ウェブカム C920

USBの延長ケーブルも購入しました。


カメラの雲台はこちらの自由雲台を購入。
しっかり固定できるのがうれしいです。

Velbon 自由雲台 QHD-21 アルミ製 471888

Velbon 自由雲台 QHD-21 アルミ製 471888



Webカメラを上部から固定して撮影するために、ショートブーム のマイクスタンドを使用しています。円形ベースアームの重さが 6 kg とだいぶしっかりしていて撮影にはとても良いのですが、持ち運びには多少難ありです。


アームと雲台のネジ径が合わないので、3/8インチ(太ネジ・アーム側)から 1/4インチ(細ネジ・雲台側)への変換アダプターを購入。これが無いと何気に困ります。



コンデンサータイプの全指向性高感度USBマイク。広い範囲まで音を拾ってくれます。

サンワサプライ WEB会議高感度USBマイク MM-MCUSB22

サンワサプライ WEB会議高感度USBマイク MM-MCUSB22

↑ に付属しているケーブル(USB Aオス ⇔ mini-Bオス)の長さが 1m と若干短いので、2m のものを買い足しました。

iBUFFALO USB2.0ケーブル (A to miniB) スリムタイプ ブラック 2m BSUAMNSM220BK

iBUFFALO USB2.0ケーブル (A to miniB) スリムタイプ ブラック 2m BSUAMNSM220BK



撮影機材ではないですが、プロジェクタに繋ぐための、アナログ RGB(VGA)ケーブルも必需品です。




最終的に、ノートPCにはこのように接続します。

f:id:akiyoko:20160123152003p:plain



OBS設定

Webカメラは 1080/30p 画質に対応していますが、ノートPCのスペックがイマイチなのと諸般の理由(後述のプロジェクターの制限)で画質を落とした設定を行います。


まずは全体の設定。


f:id:akiyoko:20160123032520p:plain


f:id:akiyoko:20160123032546p:plain


f:id:akiyoko:20160123032557p:plain


ローカルに保存するファイル名を変えておきます。

f:id:akiyoko:20160123032618p:plain


Webカメラの性能としては、フルHD 1080p 画質(1920 × 1080)で撮影ができるのですが、出力するプロジェクターの制限で「640 x 360」に設定しています。

f:id:akiyoko:20160123124953p:plain


サウンドデバイスとして、USBマイクを設定。

f:id:akiyoko:20160123032654p:plain


f:id:akiyoko:20160123032900p:plain


マイク音声のタイミングが映像とずれてしまうのを補正するために、以下を設定します。
オフセットのミリ秒は、実際にテスト撮影しながら決定するしかありません。

f:id:akiyoko:20160123032925p:plain


f:id:akiyoko:20160123032941p:plain


f:id:akiyoko:20160123033016p:plain


f:id:akiyoko:20160123033026p:plain


これで全体の設定は完了です。


次に、シーンにビデオデバイスを追加して、その設定をおこないます。

f:id:akiyoko:20160123033040p:plain


f:id:akiyoko:20160123033051p:plain


テキストソースを 2つ追加して、位置を調整します。

f:id:akiyoko:20160123033104p:plain


位置はおおよその場所しか指定できません。

f:id:akiyoko:20160123033114p:plain


最後に、撮影時には、右クリックで「全画面プレビュー」を選択すれば OK です。

f:id:akiyoko:20160123033126p:plain



 

2015年の akiyoko blog 振り返り

f:id:akiyoko:20160106011741j:plain

新年明けまして少し経ちましたが、昨年(2015年)の akiyoko blog を振り返ってみたいと思います。

2015年の akiyoko blog 振り返り

まず、昨年一年間で作成した記事は合計 59本でした。おおよそ週一本ペースですね。ブログを始めて 3年半ほど経ちましたが、週一本ペースをずっとキープしています。

昨年は、59本中、Amazon Web Services(AWS)関連の記事が 20本もありました。実に、3本に1本が AWS関連だったわけです。今回振り返ってみて始めて気付いたのですが、思っていた以上に多くてビックリです。


次に、各記事ごとのアクセス数ランキング。
ランキング上位 30本をリストアップしてみたのですが *1、昨年の記事 59本中、30位以内に入ったのはわずか 9本 *2。正直もう少しランクインするだろうと思っていたのですが、AWS系のマニアックなテーマが多かったのが原因でしょうか。ちょっと残念です。。

また昨年は、社外の勉強会に12回、AWS の Webinar(オンラインセミナー)に7回参加し、備忘録レベルのものも含めて全て記事としてアップしたので、イベント関連の記事は合計 19本書いたことになるのですが、30位以内に入ったのは「「PHPフレームワーク4本勝負!!」に参加してきました - akiyoko blog」の1本のみでした。

akiyoko.hatenablog.jp


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

# タイトル 作成日 ポイント
1 「プロジェクトマネージャ試験」に一発合格するための三か条 - akiyoko blog 2014/10/26 162.1
2 AppStore 登録前の iOSアプリを Ad-Hoc で配布してインストールする方法 - akiyoko blog 2014/08/23 105.6
3 見よ!これが Python製の WordPress風フルスタックCMSフレームワーク「Mezzanine(メザニン)」だ! - akiyoko blog 2015/12/23 52.7
4 Video.js を使って HLS形式の動画をストリーミング再生する - akiyoko blog 2015/08/11 38.9
5 日本統計学会認定「統計検定2級」に合格しました - akiyoko blog 2014/12/30 38.8
6 Python でリストのソートまとめ - akiyoko blog 2014/09/26 32.0
7 「PHPフレームワーク4本勝負!!」に参加してきました - akiyoko blog 2015/08/06 31.0
8 Git で コミットを無かったことにする方法 (git revert の使い方) - akiyoko blog 2014/08/21 27.6
9 「道は開ける」を読んだ - akiyoko blog 2014/04/13 27.1
10 Ansible 初心者なら、まずは Ansible Galaxy から始めてみよう - akiyoko blog 2015/12/06 24.6
11 nodebrew で Mac の Node.js 環境をスッキリさせた - akiyoko blog 2015/06/20 24.2
12 初心者がプルリクまでに覚えるべきたった 9つの厳選 Gitコマンド - akiyoko blog 2014/12/02 23.4
13 初めてのTOEIC受験で800点オーバーを取るための勉強法 - akiyoko blog 2013/09/05 22.1
14 Pythonでヒストグラム - akiyoko blog 2013/06/07 20.6
15 iPad上でアプリ内課金 (In-App Purchase) の実機テストをする方法メモ - akiyoko blog 2013/11/09 18.0
16 MongoDB の使い方まとめ - akiyoko blog 2014/08/01 17.8
17 Python で Selenium WebDriver を使ったブラウザテストをする方法 - akiyoko blog 2014/04/29 17.4
18 知的財産管理技能検定2級を受験してきました - akiyoko blog 2012/11/25 17.2
19 jQuery で Ajax を使ってみる - akiyoko blog 2014/07/21 16.6
20 Windows で R(統計解析ツール)を使う - akiyoko blog 2014/11/07 16.3
21 Backbone.js を基礎からやってみよう - akiyoko blog 2015/08/07 14.0
22 Ansible でさくらのVPS の環境構築を自動化 ~ハマりポイントとともに~ - akiyoko blog 2013/12/16 13.4
23 Python, Django 界隈の単体テスト事情(unittest / nose / django-nose) - akiyoko blog 2015/01/01 13.0
24 Pythonで散布図 - akiyoko blog 2013/06/10 12.6
25 iOSアプリを App Store にバージョンアップ申請するときの手順メモ - akiyoko blog 2013/11/28 12.6
26 GitHubプライベートリポジトリの作成 & SSH鍵の設定 - akiyoko blog 2014/03/04 11.6
27 「AWS認定 ソリューションアーキテクト - アソシエイト試験」に合格しました - akiyoko blog 2015/06/09 11.2
28 OS X Yosemite / MacBook Pro (Early 2015) の初回セットアップ - akiyoko blog 2015/09/11 10.3
29 Titanium Studio から 軽快な Androidエミュレータ「Genymotion」を使ってみる - akiyoko blog 2014/03/23 10.1
30 Amazon EC2インスタンスのデスクトップ環境を操作する方法(Ubuntu Server から X window を飛ばす) - akiyoko blog 2014/02/27 9.8



ここで、#3 の「見よ!これが Python製の WordPress風フルスタックCMSフレームワーク「Mezzanine(メザニン)」だ! - akiyoko blog」は、年末の「Python Advent Calendar 2015 - Qiita」に合わせて書いた記事で、一瞬だけホットエントリーに載ったことで一時的にアクセスが増えたのが起因しているようです。

akiyoko.hatenablog.jp



今年の目標

akiyoko blog の今年の目標は特に決めていませんが、

で言うところの、ユーザーの満足度を示す指標値である「ページ/セッション」を、昨年の「1.19」から「1.3 〜 1.4」くらいまで上げていけたらいいなとぼんやり考えています。

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

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

Google Analytics のトラッキングコード設置方法

わざわざ改めて書くほどのものではないのですが、画面とかキャプチャしたのでとりあえず。


やりたいこと

  • Google Analytics アカウントの作成
  • LP(単純なHTMLページ)にトラッキングコードを設置
  • Analytics ダッシュボードの利用


前提として、Google アカウントは作成済みとします。




 

1. Google Analytics アカウントの作成

Google アナリティクス公式サイト - ウェブ解析とレポート機能 – Google アナリティクス
にアクセスし、Google アカウントでログインします。
f:id:akiyoko:20151229134208p:plain

「お申し込み」をクリック。
f:id:akiyoko:20151229133654p:plain

アカウント名 アカウント名(xxx@gmail.com の xxx部分)とかにしておけば無難かと
ウェブサイト名 サイトの名前を適当に
ウェブサイトの URL アクセス解析したいサイトの URL
業種 適当に

f:id:akiyoko:20151229133721p:plain

同意します。
f:id:akiyoko:20151229133747p:plain




 

2. LP にトラッキングコードを設置

アナリティクス設定のページに、トラッキングコードが表示されているので、それをサイトの全ページに貼り付けます。
f:id:akiyoko:20151229133812p:plain


上記のトラッキングコードであれば、headタグの間に設定しておけば OK です。

  ・
  ・
  <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-xxxxxxxxxx', 'auto');
    ga('send', 'pageview');

  </script>
  </head>
  <body>
  ・
  ・


これでトラッキングコードの設定は完了です。


 

3. Analytics ダッシュボードの利用

あとはダッシュボードをお好きなように。
f:id:akiyoko:20151229133833p:plain




ちなみに、他の人に Analytics ダッシュボードを見れるように設定するには、権限付与をすればよいです。

[アナリティクス設定] > [ユーザー管理] をクリックします。
f:id:akiyoko:20160811192955p:plain

ビューのアクセス権限を「表示と分析」に設定して、メールアドレスを追加すれば OK です。
f:id:akiyoko:20151229235844p:plain

参考

www.adminweb.jp


私が購入した Google Analytics の参考書はこちら ↓ です。

見よ!これが Python製の WordPress風フルスタックCMSフレームワーク「Mezzanine(メザニン)」だ!

この投稿は 「Python Advent Calendar 2015 - Qiita」 の 23日目の記事です。


煽っておきながら先に言い訳しておきますが、「Mezzanine(メザニン)」は WordPress公式 が作ったものでもサポートしているものではありません。

しかしながら、Mezzanine の 概要ページ の説明を見ると、

In some ways, Mezzanine resembles tools such as Wordpress that provide an intuitive interface for managing pages, blog posts, form data, store products, and other types of content.


Mezzanine は、いくつかの点において、ページ、ブログ記事、フォームデータ、ショップ商品、および他のタイプのコンテンツのための直感的なインターフェースを提供しする Wordpress のようなツールに似ています。

と書かれているので、Mezzanine が WordPress を意識して作られている ことが分かります。



その証拠に、Mezzanine の管理画面を少しお見せすると、

f:id:akiyoko:20151220153711p:plain
(ブログ投稿画面。WordPress のものとそっくりですよね)

f:id:akiyoko:20151220153727p:plain
(画像をアップロードするためのメディアライブラリ画面。こちらも WordPress とほぼ同じですよね)


という感じになっており、ルック&フィールが WordPress と非常に似通っていることがお分かりになるかと思います。WordPress の管理画面を触ったことのある人なら、ほとんどの機能を直感的に理解できるでしょう。


ちなみに、Djangoベースの三大 CMSフレームワーク「django CMS」「Wagtail」「Mezzanine」*1 のうち、他の二つは操作がユニークで、WordPress に慣れた私の脳みそでは直感的に理解ができず、一日ほど触ってそっとインスタンスを閉じました。


Mezzanine の特徴

Mezzanine には、

  • ルック&フィールが WordPress とそっくりな管理画面
  • デフォルトで必要な機能が全部入り(フルスタック)

といった、他の CMSフレームワークには無い大きな特徴があります。


前者については先に説明しましたが、後者のデフォルトで全部入りになっている機能としては、 概要ページ で以下のものが紹介されています。

機能・特徴 説明
Hierarchical page navigation 階層ナビゲーション
Save as draft and preview on site 下書き保存、プレビュー機能
Scheduled publishing 予約投稿
Drag-and-drop page ordering ドラッグ&ドロップでページの順序入れ替え
WYSIWYG editing WYSIWYGエディタ
In-line page editing インラインページ編集
Drag-and-drop HTML5 forms builder with CSV export ??
SEO friendly URLs and meta data SEOフレンドリーなURLとメタデータの設定
Shopping cart module (Cartridge) ショッピングカート(Cartridge プラグイン使用)
Configurable dashboard widgets ダッシュボードのウィジェットが設定ファイルで変更可能
Blog engine ブログ
Tagging タグ付け
Free Themes, and a Premium Themes Marketplace 無料テーマ、プレミアムテーママーケット(まだちょっと少ない。。)
User accounts and profiles with email verification メールアドレスでのユーザ認証、プロフィール機能
Translated to over 35 languages 翻訳(35言語以上)
Sharing via Facebook or Twitter Facebook、Twitter での SNS共有
Multi-lingual sites 多言語サイト
Custom templates per page or blog post ページ、ブログ記事ごとにカスタムテンプレートが適用可能
Twitter Bootstrap integration Twitter Bootstrap連携
API for custom content types カスタムコンテンツタイプのAPI
Search engine and API 検索機能と検索API
Seamless integration with third-party Django apps サードパーティ製のDjangoのアプリとのシームレスな統合
Multi-device detection and template handling マルチデバイス検出とテンプレートハンドリング
One step migration from other blogging engines 他のブログエンジンからワンステップでのデータマイグレーション
Automated production provisioning and deployments 自動プロビジョニングおよびデプロイ
Disqus integration, or built-in threaded comments スレッドコメント機能(Disqus連携 or ビルトイン)
Gravatar integration Gravatar連携
Google Analytics integration Google Analytics連携
Twitter feed integration Twitterフィード連携
bit.ly integration bit.ly連携
Akismet spam filtering Akismet によるスパムフィルタリング
Built-in test suite ビルトインのテストスイート
JVM compatible (via Jython) JVM との互換性(Jythonを使う)

Overview — Mezzanine 4.0.1 documentation を元に akiyoko が意訳)


ここで、「フルスタック」と聞くと、欲しい機能がある程度揃っていて便利である一方、そのプロダクトへの依存度が高まってしまうことが懸念されるなど、メリットとデメリットが表裏一体になっていることもあると思います。
その点、Mezzanine は「Mezzanine(=中二階)」というだけあって、1階部分には「Django(ジャンゴ)」という人気ナンバーワンの Webアプリケーションフレームワークが土台となっているので、Mezzanine-way *2 ではなく Django-way でのアプリケーション拡張ができるようになっていて、フレームワークを採用する側としては非常に安心感があります *3

f:id:akiyoko:20151220160001p:plain





インストールしてみる

では早速、Mezzanine + Cartridge(Mezzanine 向けのショッピングカートプラグイン)をインストールしてみましょう。

なお、以下の手順は本番用ではありませんのでくれぐれもご注意を。

環境

  • Ubuntu 14.04 LTS(on Vagrant)
    • IPアドレス:192.168.33.10
  • Python 2.7.6
  • Django 1.8.7
  • Mezzanine 4.0.1
  • Cartridge 0.10.0

 

### 最低限のインストール
$ sudo apt-get update
$ sudo apt-get -y install python-dev git tree

### pip をインストール
### sudo apt-get -y install python-pip でインストールすると pip のバージョンが古いので、get-pip.py で最新版を入れる
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo -H python get-pip.py
$ pip --version
pip 7.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

### virtualenv, virtualenvwrapper をインストール
$ sudo -H pip install virtualenv virtualenvwrapper

### virtualenvwrapper の設定
$ cat << EOF >> ~/.bash_profile

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
EOF
$ cat << EOF >> ~/.bashrc

source /usr/local/bin/virtualenvwrapper.sh
export WORKON_HOME=~/.virtualenvs
EOF
$ source ~/.bashrc

### Djangoプロジェクトの virtualenv 環境を作成してアクティベート
$ mkvirtualenv myproject

### /opt/webapps 配下にプロジェクトの外箱を作成
$ sudo mkdir -p /opt/webapps/myproject
$ sudo chown -R `whoami`. /opt/webapps

### イメージライブラリのインストール
### http://mezzanine.jupo.org/docs/overview.html#dependencies
$ sudo apt-get -y install libjpeg8 libjpeg8-dev
$ sudo apt-get -y build-dep python-imaging


### Mezzanine プロジェクトを作成
$ cd /opt/webapps/myproject/
### Cartridge のインストール
$ pip install -U cartridge

### プロジェクトのディレクトリ構造は
### myproject/ as <repository_root> also as <django_project_root>
### └─ config/ as <configuration_root>
$ mezzanine-project -a cartridge config .

$ tree /opt/webapps/myproject/
/opt/webapps/myproject/
├── config
│   ├── __init__.py
│   ├── local_settings.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── deploy
│   ├── crontab.template
│   ├── gunicorn.conf.py.template
│   ├── local_settings.py.template
│   ├── nginx.conf.template
│   └── supervisor.conf.template
├── fabfile.py
├── __init__.py
├── manage.py
└── requirements.txt


### アプリケーションを起動
$ python manage.py createdb --noinput
$ python manage.py runserver 0.0.0.0:8000


ブラウザで
http://192.168.33.10:8000/
にアクセスすれば、以下のトップ画面が表示されるはずです。

f:id:akiyoko:20151220161820p:plain




WordPress 風の管理画面と比べて、ちょっと画面がショボいなぁあっさりしているなぁと不安に思われるかもしれません。

でも安心してください。そういった場合には、テーマテンプレートの変更ができますから。


WordPress のようにボタンをポチポチすれば完了というわけにはいきませんが、チュートリアル に沿ってコマンドを実行することによって、比較的簡単に、例えば以下のようなテーマテンプレートを利用することができます。


mezzanine-themes/nova を使用)
f:id:akiyoko:20151220170242p:plain

mezzanine-themes/flat を使用)
f:id:akiyoko:20151220170257p:plain

mezzanine-themes/moderna を使用)
f:id:akiyoko:20151220170328p:plain

mezzanine-themes/solid を使用)
f:id:akiyoko:20151220170355p:plain


この 4種類のフリーテーマの他にも、いくつかのフリーテーマ有料テーマ も公開されていますが、WordPress と比べるとまだまだ量が少ないのが実情です。



あと、個人的に無いと困る、「多言語サイト」(WordPress でいうところの「qTranslate X」に当たる機能)もデフォルトで入っています *4 。こちらも チュートリアル に従って進めていけば、ブログ投稿時に次のような言語選択オプションが表示され、多言語対応のブログ投稿ができるようになります。

f:id:akiyoko:20151220172734p:plain




 

まとめ

Python製の WordPress風フルスタックCMSフレームワーク、ということで「Mezzanine」を紹介してみましたが、いかがだったでしょうか?


WordPress を使ったことのある人なら間違いなく違和感なく使えるでしょうし、私も今のところ全然違和感なく使えています。今後は、ショッピングカートと課金まわりを少しディープに調べてみたいと考えています。



明日は、TakesxiSximada さんの 24日目の記事です。よろしくお願いします。

*1:https://www.djangopackages.com/grids/g/cms/ を参照

*2:玉石混交ですが、Apps for Mezzanine は https://www.djangopackages.com/grids/g/mezzanine/ で紹介されています

*3:しかしながら、用意されたものが気に入らなければ自分で作るしかない、というリスクは許容しなければなりませんが。。

*4:厳密には、django-modeltranslation を pip install する必要がありますが、まあよしとしましょう。^^