massa142's blog

くり返す このポリリズム

2017年のPerfumeを振り返る #prfm

この記事はPerfume Advent Calendar 2017 1日目の記事です。

adventar.org

今年もこの時期がやってきました。

1日目のこの記事では、2017年のPerfumeの動きを月ごとに振り返っていきます。

1月

日本テレビ水曜ドラマ『東京タラレバ娘』に、あ~ちゃんが声の出演

www.ntv.co.jp

『TOKYO GIRL』が主題歌ということもあって、Perfumeファンには幸せな2017年のスタートとなりました。

2月

『TOKYO GIRL』リリース

www.youtube.com

エフェクトをあまり効かせず、3人の声がよく聞こえる曲をヤスタカが作ってくれました。大人になった今のPerfumeによく似合っている曲だと思います。

東京タラレバ娘』の主題歌ということで、タイアップに従順なヤスタカらしいタイトルとなっています。今年の紅白の曲はおそらく『TOKYO GIRL』になるので、2017年のPerfumeを代表する1曲と言えるでしょう。

3月

Perfumeオリジナル香水「PERFUME OF PERFUME」発売

natalie.mu

ファンが長らく待ち望んでいたなか、薬事法?の問題なので難航していたオリジナル香水がついに発売されました。

広島限定 1stシングル『OMAJINAI☆ペロリ』の発売15周年を記念して3/21から販売となりました。

4月

テレビ東京 ドラマスペシャル『パンセ』初主演

www.tv-tokyo.co.jp

Perfumeとしては初となる、地上波でのドラマ出演、主演でした。

驚きの新しいチャレンジとなりましたがこのドラマに対する評価も高く、今後の活躍の幅が広がるきっかけになったと思います。  

5月

WOWOW特別番組『Perfume スペシャルプログラム ~collaboration~』放送

http://www.wowow.co.jp/music/perfume/www.wowow.co.jp

ここでPerfumeとヤスタカとのメディア初対談が実現しました。ヤスタカがテレビに出てくるのも珍しいのに、Perfumeとの対談なんて最高なプログラムでした。

対談の中から、Perfumeにとってヤスタカは神であるという関係性が改めて垣間見れました。

 

6月

Perfume FES!! 2017 @ MAKUHARI MESSE

www.perfume-web.jp

シャングリラな2組との対バンでした。

チャットモンチー作曲の「Ora2(オーラツー)はみがきのうた」もここで初披露されました。

www.youtube.com

Amuse Fes in MAKUHARI 2017 – rediscover -

www.amusefes.jp

高橋 優が歌う『Dream Fighter』は本当に渋くていい。

8月

『If you wanna』リリース

www.youtube.com

ヤスタカが今年取り組んでいるFuture bassというサウンドを取り入れた1曲。

もうとにかくかっこいい。

9月

Perfume FES!! 2017 追加公演

名古屋・大阪で開催されたPerfume FES!!の追加公演。

Perfumeと星野 源が一緒に踊る「恋ダンス」は本当に最高でした。

10月

NHK総合「内村五輪宣言!~TOKYO 2020開幕 1000日前スペシャル~」出演

www6.nhk.or.jp

perfume-lighting-project.tokyo

去年まではライブなどでは東京オリンピックを意識した発言がありましたが、今年になってメディア上でもそのような発言が増えてきました。本格的にプロジェクトが動いているのだろうか・・・!?

11月

『Everyday』-AWA DANCE 360°VR ver 公開

www.youtube.com

Perfumeに囲まれる!没入感!

Perfume×ドコモ 『FUTURE-EXPERIMENT VOL.1 距離をなくせ』生配信

www.youtube.com

3都市を繋いだパフォーマンスはただただ凄いとしか言えないし、新曲『Fusion』もめちゃくちゃかっこいい。

Perfume Clips 2』発売

約3年半ぶりのミュージックビデオクリップ集『Perfume Clips 2』がリリース。

『Spring of Life』から最新曲『If you wanna』までを全16曲を収録。

おわりに

今年のPerfumeを振り返ってきましたが、まだ12月が残ってます。12月の目玉はなんと言っても大晦日の紅白歌合戦ですが、その前にヤスタカがプロデュースする音楽フェス「OTONOKO」出演を明日に控えています。

www.otonoko.com

というわけで明日はOTONOKO参戦しに金沢行ってきます ( ・ㅂ・)و ̑̑

「ハイパフォーマンスPython」を読んだ

ハイパフォーマンスPython

ハイパフォーマンスPython

Pythonの高速化技法について一歩踏み込んだプロユースの解説書。ボトルネックの測定方法から、最適なデータ構造の使い分け、CythonやPyPyなどのコンパイラの比較、numpyなどのパッケージの使い方、マルチコアCPUの活用法、メモリ効率を劇的に改善するトライ構造や近似計算まで、シンプルな実例プログラムを用いながらわかりやすく説明します。高性能なプログラムの書き方だけでなく、高性能なシステムの作り方を総合的に学ぶことができるPythonエキスパート必携の一冊です。

https://www.oreilly.co.jp/books/9784873117409/

ここにも書いてあるように、プロファイリングのやり方からデータ構造、Cコンパイル・並列並行処理など幅広い内容が扱われていた。CPython以外の実装について勉強しようと思ってこの本を読み始めたので、個人的には「7章 Cにコンパイルする」が特に面白かった。

また普段はI/Oバウンドなプログラムを書くことが多いので、RAM使用量の削減とかそのためのプロファイリングなどCPUバウンドなプログラムについての知見が得られてよい。

時間ができたら次は積ん読になってるCythonのやつを読もう。

Cython ―Cとの融合によるPythonの高速化

Cython ―Cとの融合によるPythonの高速化

読書メモ

3章 リストとタプル

  • リストは動的な配列
  • タプルは静的な配列
  • サイズが1~20の小さなタプルについては、使われなくなってもメモリがOSに返却されず、将来の再利用のために保持される
>>> %timeit l = [0, 1, 2, 3, 4, 5 ,6, 7, 8 ,9]
96.8 ns ± 1.22 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
>>> %timeit t = (0, 1, 2, 3, 4, 5 ,6, 7, 8 ,9)
16.4 ns ± 0.205 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)

4章 辞書と集合

5章 イテレータとジェネレータ

def fibonacci():
    i, j = 0, 1
    while True:
        yield j
        i, j = j, i +j
def fibonacci_succinct():
    is_odd = lambda x: x % 2
    first_5000 = islice(fibonacci(), 0, 5000)
    return sum(1 for x in first_5000 if is_odd(x))
  • ジェネレータで省メモリで高速な処理が可能
    • 遅延評価

6章 行列とベクトルの計算

  • メモリ断片化

    • リストはデータそのものではなくポインタを保持している
      • どんな型でも格納できるのでたいていの場合では便利
      • ベクトルや行列の演算においては、著しい性能劣化の原因に
      • データをメモリ上の連続した1つのブロックとして扱うことができれば、データ全体を一回の操作で移動できる
      • データが断片化されていると、ブロック全体を移動できず、各位要素をばらばらに移動する必要がある
    • ループがベクトル化に対応していない
      • 一度に1つの要素を演算するループを、ひとまとまりのデータに対して同時に処理したい
  • numpy導入

    • 効率のよいベクトル化演算パッケージ
    • データを連続的なメモリ領域に保持し、ベクトル演算命令をサポート
    • +=*=などのインプレース演算は、入力の1つを出力として も使うから、計算結果を格納するための領域を確保する必要がない
    • numexpr

7章 Cにコンパイルする

  • AOTコンパイラ

    • Cython
    • Shed Skin
    • Pythran
  • JITコンパイラ

    • Numba
      • Continuum(Anaconda)謹製
      • @jitデコレータを付けるだけ
    • PyPy
      • GCのやり方が違う
        • CPythonは参照カウント法/PyPyはマーク&スイープ法
      • Cによる拡張ライブラリには効果がない
        • Pythonのコードを高速化するのが仕事
      • RAMの使用量が多い
  • CPython Compiler Tools
    • ここに色々まとまってる
  • PyPyはPython3・Numpy対応できるように進化しててすごい
  • ctypes
    • 外部関数インターフェース
    • 引数をCの型へキャストする必要あり
    • 複雑でメンテナンスが大変になりやすい
  • cffi
  • f2py

8章 並行処理

  • イベントループで並行処理を実現
    • 2つの考え方
      • コールバック
      • Future
  • gevent
    • http://www.gevent.org/
    • 標準 I/O 関数を非同期に変えるモンキーパッチ
    • 軽量スレッドで並行処理ができるGreenlet
      • 複数のCPUを使わずに、イベントループを使うことによって I/O 待ちの間にgeventのスケジューラがGreenletを切り替える
    • grequests知らなかった
  • tornado
    • http://www.tornadoweb.org/en/stable/
    • コールバックの方法を採用していたけど、バージョン3.xからは、互換性を保ったまま、コルーチ 風の処理が追加された
    • イベントループは全体で動作していて、非同期I/Oにかぎらず プログラムの実行の流れを制御している
    • geventはiwait関数が実行している間だけイベントループが動作
  • asyncio
    • asyncioライブラリは、tornadoやgeventのようなモジュールと組み合わせて、同じイベントループで動作させることも可能
  • やっぱり標準ライブラリがいいよね

9章 multiprocessingモジュール

  • embarrassingly parallel問題(あきれるほど 簡単に並列化可能な問題)
    • ジョブを互いに独立な単位に分割する
    • ワーカーによって計算時間にばらつきがあるのなら、処理の順序をランダム化することを検討する
    • 処理の遅い順に並べて、もっとも遅い処理から先に片づける
    • 検証された理由がないかぎり、デフォルトのchunksizeを用いる
    • チャンク数を物理コア数の倍数にすること
  • 可能なら自前で非同期システムを作るのは避ける
    • geventのような成熟したライブラリがbetter
    • 外部のキュー管理システムについてもCeleryとかを使おう

10章 クラスタとジョブキュー

11章 RAM使用量を削減する

  • テキスト処理アルゴリズム
    • トライ
    • DAWG(有向無閉路文字列グラフ)
  • RAM使用量を削減するコツ
    • 数値データを扱うならnumpy
    • ジェネレータを使う(Python2.x: xrange/Python3.x: range)
    • 大量のUnicodeオブジェクトを使うならPython3.3+
    • ビット列を太陽に使うならnumpy/bitarray
  • 確率的データ構造
    • 精度を犠牲にしてメモリの使用量を膨大に削減

2017年10月の振り返り

仕事

  • silkを使ってプロファイリング
  • N+1クエリを消していった
  • transactionの見直し
  • transactionの観点からよくないsignalをリファクタ
  • マルチスレッド処理で発生したギャップロックを解消
  • RemovedInDjango20Warning対応
  • 使ってないメソッドを掃除

アウトプット

ブログ

スライド

イベント

音楽

N/A

映画・ドラマ・アニメ

N/A

ラクロス

目標と成果

  1. ◯ Web連載執筆
    • 第1回分納品できた
  2. △ 書籍の第3章執筆とサンプルアプリケーション作成
    • 第3章は書けたけど、サンプルアプリできてない
  3. ◎ なんか本2冊読む
    • 「理科系の作文技術」「ハイパフォーマンスPython」「Angular CLIがわかる本」「逆引きwebpack」とか色々読み終えた
  4. × 出社チャレンジ頑張る
    • 改善できてきた気はするから11月に期待

11月に向けて

  • Web連載第2回執筆
  • 書籍のサンプルアプリケーション作成と第5章執筆
  • JS本執筆の準備
  • 出社チャレンジ頑張る
  • ライブに向けてBAND-MAIDの予習
  • Advent Calendarの準備
  • Rustの勉強を再開

「Angular CLIがわかる本」を読んだ #AngularCLIがわかる本

leanpub.com

Angular Japan User Group代表のlacoさんが、「Angular CLIがわかる本」という電子書籍を出版したので早速読んでみた。

lacolaco.hatenablog.com

目次

  • 本書について
    • フィードバックについて
    • 対応バージョン
  • Angular CLIの基礎
    • Angular CLIとは
    • はじめてのAngular CLI
    • Angular CLIの学び方
  • Angular CLIを使いこなす
    • ng newを使いこなす
    • ng generateを使いこなす
    • ng buildを使いこなす
    • ng testを使いこなす
    • E2Eテストの実行
    • Lintの実行
  • Schematics
    • Schematicsの概要
    • ng generateコマンドを拡張する
  • ng ejectとwebpack
    • ng ejectコマンド
    • @ngtools/webpackモジュール
  • インテグレーション

感想

  • Angularの基本的な使い方・オプションを体系的に復習できた
  • stories · angular/angular-cli Wiki · GitHub にある内容を、かいつまんで説明してもらえてよい
  • Angularのチュートリアルやったことある人なら理解できる内容だったと思う
  • Schematicsを使ってng generateのカスタマイズという話は初耳だったんで、勉強になった
  • 量もほどほどで1時間ちょっとで読めた
    • "この本は 55%完全です"ってあるから、今後ページ数も増えていくのかな
  • "取り上げるユースケースも順次増やしていく予定"とのこと
    • 実践的な話をもっと読みたいから楽しみ
  • 登録料分すぐに売れて、lacoさんのモチベーション高まってよかった

おわりに

うん「Angular〇〇がわかる本」他にも読みたいから、シリーズ化に期待!

PyLadies Tokyo - 3周年記念パーティ に参加してきた #pyladiestokyo

はじめに

2017/10/15に開催された PyLadies Tokyo - 3周年記念パーティ に参加してきたので、その参加メモです。

pyladies-tokyo.connpass.com

PyLadies Tokyo

https://pyladies-tokyo.connpass.com/

PyLadies Tokyo は,PyLadies の東京(or 日本!?)支部として,女性 Pythonista (=Python利用者) を繋ぐために活動しています.

普段は女性Pythonistaのコミュニティですが、周年記念のパーティの時には男性も参加できるのです。

参加動機

  • PyLadies Tokyoのメンバーと一緒にPyCon APAC 2017 in Malaysiaへ行って来たのがきっかけ

massa142.hatenablog.com

  • PyLadies Tokyoメンバーによるレポートはこちら

LTしてきた

slideship.com

  • 先月開催したPyCon JP Reject Conference 2017について
  • みんなに聞いていった「落選した理由」から探るCfPアンチパターン
  • たまたまkame-chanが「周りのPyCon JPでtalk当選したことがある人に応募のコツを聞いてみた」というLTだったんで、バトンタッチができて楽しかった

パーティの様子

全体を通しての感想

  • はじめてPyLadies Tokyoに参加したけど、あったかいコミュニティで居心地がよかった
  • スポンサーのRetty・Google Cloud Platform ありがとうございました!
  • @a_macbeeが体調崩して来れなかったの残念
    • 東京と沖縄の温度差にやられたらしい...
  • 2次会でいろいろ話せた
    • @maaya8585とJava9・Azureについて
    • @atsuoishimotoと表参道勤務あるあるについて
    • @miとDjangoについて
  • PyCon JP 2017に参加して悩みが解決したとか、刺激を受けて自分もやってみたという、PyCon JP 2017のテーマである「Output & Follow」なLTが多くてとても嬉しかった
  • めっちゃ遅刻したけど糖質たくさん買ってくる@usaturnかっこいい
  • 煽ったらちゃんと来てくれる@iktakahiroもイケメン

おわりに

祝 3周年 🎉🎉🎉

来年の4周年パーティぜひまた参加したい。

f:id:massa142:20171017143551j:plain

「理科系の作文技術」を読んだ

理科系の作文技術 (中公新書 (624))

理科系の作文技術 (中公新書 (624))

読んだ動機

  • 技術文書を書く機会をいただいた
  • @terapyon@takanoryがすごくお薦めしていた
  • ずっと読まなきゃと思いながら積ん読してたけど、いざ原稿のレビューで論理構成などの指摘を受けると「これはやばい」と感じて慌てて読んだ

悩んでいたこ

自分が文書を書いていて悩んでいたことや、レビューで指摘してもらったことに以下の点があった。

  1. 読者に伝えたいことがぶれる
  2. 「文章を区切りすぎるとMarkdown・Qiitaっぽい感じになってよくないのでは」という不安から、冗長な修飾節をいれてしまう

勉強になったこ

目標規定文

準備作業を無視して、いきなり書き始めるところに、多くの失敗の原因があると述べられている。

この準備作業のひとつに目標規定文の設定がある。

自分は何を目標としてその文書を書くのか、そこで何を主張しようとするのかを熟考して、それを一つの文にまとめて書いてみる

この文が目標規定文である。目標規定文が決まったら、そこに収束するように文章全体の構想を練ることで一貫した文章を書くことができる。

目標規定文の例として、以下の文章が紹介されている。

このレポートでは、ランダムな変動を考慮に入れても、1970年代にはいってからは春がくるのがおくれ、また春が寒くなりつつあることを示す。

読者に伝えたいことがぶれていた原因は、この目標規定文を設定・意識できていなかったためだと感じた。これからは文章を書き始める前に、準備をしっかり行いたいと思う。

文の構造と文章の流れ

英語の論文では、

(a) 逆茂木型の文章を書いてはいけない
(b) 少々くどいと思っても論理の鎖の環をはぶいてはいけない

という。

逆茂木型の文章とは

  • 文の相互の連関がパラグラフ全体を読んだあとではじめてわかるような文章
  • 論述のわき道にいることがその話が終わってからでないとわからない文章

のような論理構成が明確ではない文章のことである。

日本語の文では、(a)の要求を完全にみたすことに多少の無理がある。また、(b)に忠実にしたがうと在来の日本語の文章のゆかしさをそこなう場合がある。しかし、理科系の仕事の文章は、(a), (b)の要請をみたすように書くべきだと本書では述べられている。

この指摘にしたがって、変な心配はせずに冗長で不必要な表現は可能な限り削っていこうと思う。書いた後に読み返してみて自分でも「ちょっと変かもしれないけど、まあいいか」という文章は、だいたいレビューで指摘されているので、もっと自分に厳しくチェックしていかないといけない。

おわりに

「理科系の作文技術」を読んで、文章の論理構成という面がとても勉強になった。論文のようなアカデミックな文書を意識している内容もあるのですべてを読む必要はないと思うが(特に9章以降)、作文の基本を教えてくれるとても良い本だった。

@terapyonからもう一冊ロジカル・ライティングという本を借りているので、次はこっちを読んでみようと思う。

ロジカル・ライティング (BEST SOLUTION―LOGICAL COMMUNICATION SKILL TRAINING)

ロジカル・ライティング (BEST SOLUTION―LOGICAL COMMUNICATION SKILL TRAINING)

読書メモ

2章 準備作業(立案)

2.1 準備作業の必要

  • 理科系の仕事の文書に関しても、準備作業が必要
  • それを無視して、いきなり書き始めるところに、多くの失敗の原因がある

2.2 文書の役割の確認

  • 自分の書こうとする文書の役割を確認することが第一の前提
  • いったい読者はこの文書に何を期待しているはずか

2.5 材料あつめ

  • 思いつくままのメモ
  • 図・表
    • フリーハンドの図で十分

3章 文章の組み立て

3.2 序論

  • 序論の使命は読者を本論にさそいこむ、読者が抵抗なく本論にはいっていけるように準備をととのえることにある
    • 読者が本論を読むべきか否かを敏速・的確に判断するための材料を示し
      • 目標規定文を第1文としてOK
    • またほんとんにかかる前に必要な予備知識を読者に提供する
      • 本論の主題となる問題は何か
      • その問題をなぜ取り上げたか
      • その問題がなぜ重要か
      • 問題の背景はどんなものか
      • どういう手段によってその問題を攻めようとするのか
  • 序論はみじかく、みじかくと心がけて書くべき

3.3 結び

  • いちど書いたことは再びくりかえさず、どうしても必要なことだけを書き終わった途端に文章が終わるのが通例になってきた
    • 現代的重点先行主義
    • 「なくてもすむことばは一つ残らず削れ」
    • 客観主義

6章 はっきり言い切る姿勢

  • 「であろう」「と思われる」「と考えられる」などのあいまいな、責任回避的な表現は避けて、「自分は・・・と思う」「・・・と考える」と書くべき

8章 わかりやすく簡潔な表現

8.1 文は短く

  1. まず、書きたいことを一つ一つ短い文にまとめる
  2. それらを論理的にきちっとつなげていく
  3. いつでも「その文の中では何が主語か」をはっきり意識して書く
    1. 主語を文字に書き表すことはかならずしも必要ではない
    2. しかしいつも明確に意識していなければならない

2017年9月の振り返り

仕事

  • 設計の見直し
  • せっせとリファクタリング
  • SQUEEZE 3周年!
  • 自社ホテル「Minn」グランドオープン!
  • PyCon JP 2017でダイアモンドスポンサーやってきた!

アウトプット

ブログ

イベント

音楽

N/A

映画・ドラマ・アニメ

ラクロス

  • リーグ戦第6戦 vsRAGGAMUFFINS 13-5 WIN
  • 入替戦 vsVIKINGS 10-7 WIN
  • プレーオフ第1戦 vsVALENTIA 8-7 WIN
  • いくぞ クラブ選手権!!!!!

目標と成果

  1. △ Web連載執筆
    • なんとかドラフトは書けた
  2. ◯ 書籍第1章執筆
    • 第1章はとりあえず書けたのでよしとする
  3. ◎ PyCon JP 2017楽しんでくる
  4. 入れ替え戦に勝つ
    • 一部復帰!最高!!
    • 今年の取り組みが報われて本当によかった
  5. Perfume FES!!参戦

Perfume FES!! 2017 w/ 星野源 #prfm

Masataka Araiさん(@massa142)がシェアした投稿 -

10月に向けて

  • Web連載執筆
  • 書籍の第3章執筆とサンプルアプリケーション作成
  • なんか本2冊読む
  • 出社チャレンジ頑張る

徒然

  • 9月はSQUEEZE3周年・RejectCon・PyCon JP 2017・ラクロスPerfumeとかなり忙しかった
  • けやき坂スタバを知ってから執筆作業が捗りはじめてよい
  • 10月はもっと勉強する時間を確保したい