競技プログラミングをはじめる

転職のコーディング面接対策のために競技プログラミングを始めてみた,プログラミングは何年もやってるけど解いたこと無いたぐいの問題もあって結構難しい.たとえば2分探索とか動的計画法の解くスピードが遅い.これは一朝一夕ではいかないな...

 

読んだサイト: 最初から本一冊とか重いので始めるのに軽い感じのやつ

 

- コーディング面接対策のために解きたいLeetCode 60問 | 新井康平: ジャンルごとに数問でてくる,コーディング面接として的を絞ってるのも良い

- https://kenkoooo.com/atcoder/ AtCoder で解いた問題を可視化したりオススメしてくれる

- Project Euler: 競プロとはちょっと違うかもしれないけど,じっくり解く感じの問題が多くて楽しい

 

読んでる本:

 

- プログラミングコンテスト攻略のためのアルゴリズムとデータ構造【委託】 - 達人出版会 図が多くてわかりやすいです,AOJでの問題もあり実践的かつ体系的

- 世界で闘うプログラミング力を鍛える本【委託】 - 達人出版会: コーディング面接に的を絞っているのが良い.全体的な面接の話も序盤にあって参考になります

- 問題解決のためのプログラミング一巡り http://www.graco.c.u-tokyo.ac.jp/icpc-challenge/wp-content/uploads/2014/12/2014.pdf 無料のPDFでICPC向けの教材,競プロの知識を一通り見れるのでここから始めてもいいかも

 

とくに最初の本はめちゃくちゃよくて,「priority_queueはheapを使ってこうやって実装する」みたいなデータ構造・アルゴリズム間の関係性みたいなのを丁寧に教えてくれるので知識の体系化ができる.メから鱗.なんかわかった風なこと書こうと思っても,だいたいこの本にあるし,図が多いので流し読みすれば3日で絶対読める.その後によくわからんところ・おもしろいところをAOJで問題を解くと良かった.

Google keepは素晴らしい

Google keepはいわゆるSimplenoteとかEvernoteみたいなメモ/TODO/リマインダー系のアプリだが,他のやつらと違ってGoogle Calendarや,Googleドキュメント,Gmailと簡単に連携(リンク,保存とか)できるので,もう5,6年くらい使っている.基本的な使い方は以下の通り

  • リストを作成する
  • 図形描画をメモとして保存する
  • ラベルや色を追加する、メモを固定する
  • メモやリストをアーカイブする
  • メモにリマインダーを設定する

https://support.google.com/keep/answer/2888240?co=GENIE.Platform%3DDesktop&hl=ja

とくに図形描画がよくて,最低限の機能しかないけど簡単な図つきのメモができたりする.

あと幾つかAndroid限定の隠し機能(?)みたいなのがあって10秒までの音声とかも録音できるので,鼻歌みたいなやつも記録できる

https://support.google.com/keep/answer/6356960?co=GENIE.Platform%3DAndroid&hl=ja

普段はやる気のある休日か仕事の日なんかは最初に10分くらいかけて,その日にやることをTODOリストに加えていって,やる気のないときはTODOリストに積み残されてるやつを消化していくと,わりと自己肯定感が得られます.TODOリストは仕事とプライベートは分けていなくて,面白そうな本や映画があれば鑑賞予定として上の方に書きます.辛そうな締め切りがあれば見えないくらい下の方に,カレンダーと合わせて書くという具合ですね....常に楽しいことが辛いことより多くリストされるように気をつけると精神的にバランスがとれます.

REASON10 シンセ探訪:第一回 SubTractor編

皆さんはREASONご存知ですか?私は最近REASON10を買いました。このPropellerhead社の音源ソフトREASONは3か4くらいから使っているのですが、当時はまだ今のような録音やピッチ調整などの凝った波形編集機能もなく、CubaseやLogicにRewireして使うのが一般的だったと思います(VSTとかはまだ無かった)。当時からとにかく動作が軽かったので、とりあえず打ち込みもできる高機能シンセみたいな楽器感覚で売ってた印象、たしかハービー・ハンコックとかジャズ界隈でも使ってる人いた。とにかく初めてDTMを始める人はこれだけで動作の軽いDTM環境を完結できるし、普段使ってる音源に飽きた人もRewireで併用できるなど、とにかく万人にオススメのソフトです。

https://www.youtube.com/watch?v=w1viFoLS594&list=PLZRd1OK77BpgnXtWeekqQGEnj6my5_hWy&index=2
この辺のプレイリストに歴代REASONのコマーシャルがまとまってますが、びっくりするほどUIが変わっていないことがわかります。これは単純にUIデザイナが素晴らしい仕事をしたということだと思います。

https://ja.wikipedia.org/wiki/Reason_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
WikipediaにはREASONのアップデートがよくまとまっています。びっくりするくらい変更が少ない。個人的に3-4の時から結構魅力的なシンセが揃っていて

・SubTractorアナログシンセサイザー
・Malströmグレインテーブルシンセサイザー
・NN-XTアドバンスト・サンプラー
・Thorポリソニックシンセサイザー

この辺り+ReDrumだけで、みんなかっこいいトラックを作ってました。あらためて10までに増えたシンセ

・Europaシェイプシフト シンセサイザー
・Grainサンプル マニピュレーター
・ID8インストゥルメントデバイス
・Klang Tuned Percussion/Pangea World Instruments/Humana Vocal Ensemble

を見てもなんかマニアックなシンセ?が増えたのかなという気持ちでした。ただ数年ぶりにREASONを触ってるので、一通り試してみます。具体的にはそれぞれのシンセを主役(ほぼ他のシンセは使わない縛り)にして短いトラックを作ってみるというものです。

今回のシンセは画像にでてる青い(碧い?)シンセのSubTractorです。SubTractor は音源部に減算合成を採用した、バーチャルアナログタイプのポリフォニックシンセサイザーです。僕はずっとモノフォニックなシンセとして使ってきたので、今回始めてポリフォニックな音色を出してみます。ちなみにREASONを初めて触る方はv7までは日本語マニュアルが公開されているので見てください。p541からSubTractorの説明です。

http://cdn.propellerheads.se/Reason7/Manuals/Reason_7_Operation_Manual_Japanese.pdf

重要なTipsの抜粋

・一から音色を作りたいときは、「編集>デバイスをリセット」すると割とシンプルなザ・アナログって感じの音色から作れる
・32種類の波形の説明を読んで大体覚える
・フェーズモジュレーション(PM)を使うことで音色の幅が増える
・なんならオペレータ2基だがFMもできる
・CV繋いだり、Combinatorで統合すれば何台でもOSC/オペレータ追加できる

これがマニュアル読みながら作った曲です(Share AlikeのみのCCで配布)。

試聴 https://soundcloud.com/karitainu/reasonsubtractor
ソングファイル http://www.mediafire.com/file/uf85xcey6jsxovk/subtractor.7z/file
24bit/192kHz音源 http://www.mediafire.com/file/jz8d7gt0z50g844/subtractor.aif/file

この曲のポイントとしては初音ミクの音声以外は全部SubTractorを使っているところです。REASON1から付属しているだけあって何台立ち上げても全く重くならず、モノシンセなら303からMiniMoogまで何でもだせそうな音です。プリセットは多くないですが、意外とポリフォニックな音もモチモチした感じで気持ちよく、OSC2基とはいえREASONなので何台もCombinatorでまとめてデチューンした音を鳴らせばそこそこ現代的な音も出ます。他の有名シンセでいうとSylenth1とかSynth1とかが似てると思います。REASONのプリセットは野暮ったい音が多いですが、シャープな音を作ろうと思えば出来ます、PH公式からDLできるVengeanceの無料プリセットで昔勉強しました。若干Sylenth1ほど低音のブリブリ感がないのでキックを作るのは大変ですが、1ヶ月くらいSTだけ弄るなどの修行で極めればできそうで、今回のDTMでは随分REASONとSubTractorのシンプルさと可能性の高さの両立にポジティブな印象が持てました。

Steely Dan全アルバム雑感想文

Steely DanというのはDonald Fagenと故Walter Beckerというミステリアスな二人が作ったユニットで,なんだかよくわからない歌詞と,凝りまくったコード進行やアレンジで1970年代に世界中で成功した.私はDTMを趣味にしているのだが,多くの編曲オタクとかそういう類の人間は,一度はSteely Danのとりこになり,ドラムやベースをタイトにドライにキメて,augや6th,テンションをここぞと効かせたコードを鳴らさないと恥ずかしくていられないといった病気になる.ところで,みなさんは彼らのユニット名がバロウズの「裸のランチ」由来だとご存知だったろうか.なんというかその由来自体から,こういうスノッブアウトローを気取りたいオタク野郎にピッタリだと嘲笑されるようで良いなと思う.今日なんとなく全アルバムレビューをやってみようと思ったのは,恥を忍んで,いままで聞いたことない曲がチラホラあるから,とりあえず全部聞いておこうと思ったのだ.実際Pretzel Logicより前の2アルバムは聞いたことがなかった.アルバム全体と,一番好きな曲を挙げていくので,興味を持った人はAmazon Musicとか,そのへんのストリーミングサービスには必ず配信されているので聞いてみて.

  • 1972年 Can't Buy A Thrill 「キャント・バイ・ア・スリル」(US #17)

全体:まだサウンドはファンクよりというか,解像度は低い.リズムもまだマシンを使っていないから人間味あるビートだが,下手っぽい.わざとテープをサチュレートさせたようなミックス.悪く言うと曲ごとのバラツキがきつい.メロディアスだが時代を感じさせる,編曲は相変わらずおもしろい.

オススメ曲:「Only a Fool Would Say That」今後の曲調と近いようで,AORよりか割とカントリー風とか意外性があって良い.故ロジャー・ニコルズはかなりカントリー曲のエンジニアをやってるので,その影響だろうか?この曲だけアコギとドラムの音がめちゃくちゃ良い.

  • 1973年 Countdown To Ecstasy 「エクスタシー」(US #35)

全体:相変わらずギターの音が古臭い(70年代だからね),なんとなくライン取りして後からリアンプしてるのかなと,このころの技術の限界を感じるけど味があり良い.ピアノの低音をバッサリ切り落としてしまう音作りが出てくる,リッチで完璧なコーラスはクレジットが8人もいて,まさにザ・SDという感じで大変気持ちが良い.あと淡い不気味なジャケットが好きだ.編曲の出来はよくわからない,My Old Schoolなんかは普通にC-D-G(in G)という感じで素直なコードがでてくるので驚く.King of the Worldもなんだかコードは単調だけど,他が面白いのでわざとやってるのだろう.なんだかんだ自分の中でベスト3に入る名盤だった.ヒット曲はないけど,フェイゲンも最も気に入ってるらしい.

オススメ曲:「Razor Boy」大分,Aja/Gaucho辺りの黄金期のサウンドと編曲に近づいたけど,まだ実験的なスライド・ギターでバッキングしたり,この頃の彼らにしかできない試みが楽しい.Your Gold Teethとどちらを推すか迷ったが取り敢えずコーラスが美味しいのでこっちにした,今も迷ってる.

  • 1974年 Pretzel Logic 「プレッツェル・ロジック」旧邦題の副題は「さわやか革命」(US #8)

全体:相変わらずミックスのクオリティは黄金期(エリオット・シャイナーとか)には遠いが,名曲揃いすぎて本気で勿体無いと思う.あとやっぱりギターがダサい.ドラムはいきなりかっこよくなってきた.やたら邦題がやりたい放題になってきたので日本でも売れてきたのだろうか.「さわやか革命」とか相対性理論みたいなクソアホっぽいセンスがまったくあってなくて面白い.

オススメ曲:「Rikki Don't Lose Your Number」これは間違いなくないですか? 4声の分厚いコーラス,ほぼテンションないコードなのに,裏拍のリズムが不思議な緊張感を出す.サビの構成はAjaに繋がる.ベースパターンは何かジャズの曲に元ネタがあるらしい.ついサビを口ずさむ引力がある.あとコーラスの人は同時期SDと同じような立ち位置だったEaglesに参加するらしい.この辺りのドラマは面白い.

  • 1975年 Katy Lied 「うそつきケイティ」(US #13)

全体:バンドメンバーが沢山やめたので音が綺麗になった(ひどい).相変わらずギターがときどきダサいけど,ついにほとんどの曲をジェフポーカロが叩くようになったドラムがかっこいいので気にならない.とくにBlack Fridayなんかはザ・ポーカロって感じのビートが聞けます.ロジャーニコルズがdbxでノイズゲートかけ始めたので,時間方向にもかなり整理されて小綺麗に聞こえる(二人は嫌いだったようだが),たしかにサックスの消え際はかなり不自然だが,後の作品もこんな感じじゃない?完全に完成された編曲から一歩出た実験的な音色も多くて楽しいアルバム.

オススメ曲:「Doctor Wu」問題の変なサックスは気にならないし,SDでここまでメロウな曲は珍しいのでオススメ.やっぱりYour Gold Teeth IIとどちらを推すか迷ったが,ドラムがあまりに出しゃばっててムカつくのでこっちにした.

  • 1976年 The Royal Scam 「幻想の摩天楼」(US #15)

全体:正直このアルバムはあんまりおもしろくないかな?良くも悪くも手グセで作ってる感じがする.一方この辺からギターが劇的にかっこよくなってきた.もう少し太いミックスになると完璧という感じのAja前夜っていう印象.

オススメ曲:「Green Earrings」かなりフュージョン的なクラビのリズムとかギターがエグくてオススメ.Gauchoっぽいコーラスのキメも良い.この後クビになってしまうDenny Diasのギターソロ(前半のコーラスがかかったやつ)も相当イカしている.エリックランドールとのギターソロ対決があまり寒い感じにならずバカっぽくて良いなと思うけど,やっぱりない方がいいか?

  • 1977年 Aja 「彩(エイジャ)」(US #3)

完璧だし耳にタコができるくらい聞いたので何も言えない.

完璧OF完璧なので何も言えない.ぜひNightflyも聞いてね.

  • 2000年 Two Against Nature 「トゥー・アゲインスト・ネイチャー」(US #6)

全体:相変わらず完璧だけど,前作の教科書的な完璧さから20年も経つし(もちろんお互いのソロ活動自体がSDだったわけだが),完璧主義プロデューサのゲーリーカッツもいないしで,なんか宗教っぽいというか変態的な音の良さに向かっていて,リムショットスネアのカッとギターのミュートのカリッを何msズラすと立体感があって耳が良くなるみたいな最高の音.SD史上もっとも良い音だと思う.録音は90年代なのだが,もうProtoolsで収録されてる.思えばDAWの時代になってきた頃もエンジニアのロジャーニコルズは自分でプラグイン作ったりテクノロジーのキャッチアップが凄い.グラミー賞なんと四冠という偉業を達成している.

オススメ曲:「Jack of Speed」やっぱり非常に人気のあるWest of Hollywoodと迷ったが,完全にファン向けに喜ぶやろ?って感じが癪に触るので,とりあえずギターが一番最高なやつで選んだ.

  • 2003年 Everything Must Go 「エヴリシング・マスト・ゴー」(US #9)

全体:前作よりもさらにやりたい放題というか,完璧な枠組みからいかにアドリブっぽい感じを散りばめるか頑張った感じがする.ベッカーがリード歌ったり,全曲ベース弾いたり頑張っている.

オススメ曲:「Godwhacker」たぶんSteely Danの中でも一番聞いてる曲なんじゃないかな

最後にオススメのアルバムベスト3

1. Gaucho
2. Countdown to Ecstasy
3. Two Against Nature

プログラミングの魔力

私は大学に進学するときに,とりあえず情報とついた学科に入ってみた.今思えば,高校のころにlainをみて,その中でプログラミング言語Lispがでてきて,(人生を狂わせるという意味で)かの悪名高い「ポール・グレアムのエッセイ」を読んでしまったことが原因だと思う.肝心の大学ではC, C++, Java, Verilog, Fortranなど色んな言語に触ったが,どうにも肌に合わず(ダイクストラ法なども習ったがわからなかった),一時期は数学や確率統計に興味を持ってプログラミングとは距離を置けそう(数学や確率統計が縁遠いとはとんでもない勘違いだが)な専攻をしたりした.ところが,卒業研究を始めると実験のためにAndroidアプリを作ってみたりした.最初はいわゆるコピぺのプログラミングだが,Javaの病的なまでのオブジェクト指向だとか,Javaにはコアの部分として仮想マシン(VM)というものがあって別の言語(ClojureScala)が沢山存在してそれぞれの色んな哲学がわかるようになった.最後に性能をもとめてC++をさわったときのゼロオーバーヘッドやら例外安全への追求に胸をふくらませるようになった.

プログラミングの魔力に気づいたとき,自分はもっときちんとした情報系の学科にいくべきだったと落ち込んだが,そんなことはどうでもよかった.なんといってもプログラミングは個人プレーである.チームで開発することもメリットは多いが,とくにオープンソースでは結局のところパワフルな誰か一人が主導して他の人々は五月雨的に貢献していることが多いと思う.私も趣味で作ったオープンソースや,何なら会社で作っているプログラムも基本的には他の人間が触れるようにできているが,私しかプログラムの行く先は知らないのだ.

その魔力の正体は,憧れと早さなんじゃないかと思う.いまの自分にできないものを見ると勉強せずにはいられなくなる.できることが増えると,結構いままでの応用で人生二週目的な能率で新しいことができるようになる.憧れといえば,プログラミングほど属人性が高い分野はないんじゃないかと思う(数学なんかはどうだろう,ガウスがいたような昔と比べれば落ち着いた?).例えばF1ドライバーも属人性が高いけど,だからといってアロンソがいないと自動車産業が10年後退したかといえば違うだろう.プログラミングでは,例えばデニス・リッチーがいなければUnixC言語もなかったし,RMSがいなければオープンソースなんてなかっただろう.プログラミングの凄いところは,比喩でなく人類の進化を一人で推し進められるところなんじゃないかと思う.たぶん.

DTM再開

自宅ではプログラミング用のLinuxとゲーム用のWindowsを一つの自作マシンに入れている。あまり大きな声では言えないが、DTM用にもう一つ別のOSも入れている。この3連休では3年ぶりくらいにDTMした。3年前となるとDTM用のOSも古くて実はブラウザとかも最新のやつが動かなかったりする。8年前からLなんとかというDAWを使っていますが、最近のソフトは全く馴染めないので8年前のソフトを使い続けています。こんな画面です。

作った曲 https://soundcloud.com/karitainu/revive

3年もブランクがあるとMIDIのファイル出力(ボーカロイドへの受け渡し)などが、私自身も忘れてたりソフト自体もセグフォで落ちたり、縛りプレーみたいなところがでてくる。逆に昔からよく使っていたSylenth1などのシンセは永遠に64bit対応しないと思っていたが、いつの間にかver3まで出ていて快適になっていたり隔世の感がありました。とりあえず3年ぶりにDTMした感想というか、同じようにDTM再開する人向けに雑感をまとめると

  • 昔のソフトは64bit環境ならそのまま使う。最近のソフトは学習コストが高いし重い
  • StudioOneに乗り換えようと思ったが、予想以上に知識が消えてる上に体が昔のDAWに依存しててDTMリハビリこなさないと無理そう
  • ゲームもプログラミングにも向いていない某OSはDTMに集中できて良い
  • とりあえず一曲完パケするとアレンジだけでなくミックスとかマスタリングの練習まで並行できるので学習効率が高い
  • 最近のPCは性能が高いのでリバーブとかディレイをセンドしない方がミックスが楽だった。団子になりにくい
  • 最近は音圧を稼ぐ風潮ないのでマスタリングはスピーカーとイヤホンとか繰り返し聞いて違和感減らすことに注力した。もっと数こなさないとまだ勘が戻らなさそう
  • 楽器の演奏スキルは果てしなくゼロになってるので編集すきる磨いていく方向で学習効率をあげる
  • アレンジは逆にドレミのレベルで忘れてるので奇想天外な感じで面白い
  • SoundCloudとかで海外のトラックメーカ(e.g., https://soundcloud.com/lidogotsongs)聞くとDTM真面目にやってたころは落ち込んでたが、ゼロからの再出発なので浦島太郎が未来の音楽みてるみたいでかなり楽しい

以上です。とりあえず今月は会社を休む予定なので、もう一曲くらい作りたい(消極的)

ハネケ監督のハッピーエンドを見た

ハネケ監督は前二作、白いリボンと愛アムールでカンヌ国際映画祭の最高賞であるパルムドールを連続受賞している。私は大学生のときに近所のレンタルショップで全作品見て、未完の城を含めてハマりまくった。そんなハネケ監督が昨年のカンヌ国際映画祭に出品したが、なんの賞も授賞しなかった。これは逆に気になって仕方なかった。

映画を見終わったとき、いつもハネケ監督の映画を見たときのような胸に重く冷たい何かができる、ということはなかった。だけど、ふと電車で監督のインタビューにおいて、スマホが普及した現代で、スマホは現実の触れ合いを妨げていて、恋人たちも互いにスマホを触り、目を見て話し込んだりしないという。その通りだ。僕も数年前に付き合っていた女性とマクドにいってスマホをお互いに持っていなかったので、くだらない落書きをナプキンに書きあったりした。そういう時間が本質で何年も残るんだと思う。惑星ソラリスでもただ死に別れた夫婦が

それはそうと次はテレビドラマをとるという。かなり高齢だと思うのだが、尖りまくってて凄い。