YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

ターミナルのデモ用プロファイルで特定の環境変数を反映させる

はじめに

こんにちは、Stackdriver担当の者です。仕事柄デモを大勢の前で行う機会が度々あるのですが、その際にターミナルのプロファイルを普段使っているものと分けたくなりました。とりあえずこういう形が良いかなというところで落ち着いたのでメモしておきます。

やりたいこと

  • 文字サイズの変更(デモ用なのでとても大きく)
  • 起動時に環境変数の読み込み
    • PS1をシンプルなものに
    • GCPAWSなどのcredentialを自動で環境変数に設定し、デモ中に読み込みの必要を無くす。また万が一ターミナルを落としてしまっても、同じプロファイルで起動するだけで良くする。

各種ターミナルエミュレータでの設定

macOSのiTerm2での設定

macOSではiTerm2を使っていますが、Profileの設定でCommandという項目があります。

f:id:ymotongpoo:20180821132428p:plain

ここを "Login shell" ではなく "Command" にチェックを入れ、起動させたいコマンドを書くわけですが、ここにこれから書くシェルスクリプトへのパスを書いておきます。

LinuxでのGNOME Terminalでの設定

マシンによってはLinuxデスクトップ環境で、GNOME Terminalを使っています。その場合も同様に "Run a custom command instead of my shell" にチェックし、そこに同様にシェルスクリプトへのパスを書いておきます。

f:id:ymotongpoo:20180821133550p:plain

.demo.sh の内容

起動時に呼び出すコマンドは単純に通常使っているシェルを呼び出し、その後各種環境変数の設定をexportします。

#!/bin/bash
export DEMO=1
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credential.json
export AWS_ACCESS_KEY=xxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxx
export AWS_DEFAULT_REGION=us-east-2
source /path/to/venv/bin/activate

exec /bin/zsh

ここで先頭の DEMO という環境変数は、自分の .zshrc 内でプロンプトの切り替えを行うために設定しています。

...
if [ -n "${DEMO}" ] && [ "${DEMO}" = "1" ]; then
  PROMPT="> "
fi
...

これでデモ用プロファイルを指定して立ち上げるだけでいい感じになりました。

深圳に行ってきた(その2)

はじめに

こんにちは、Stackdriver担当になったものです。StackdriverはGoogle Cloud Platform内の製品群で、ロギング、エラーレポート、トレース、モニタリングなどを扱いやすくするものです。

さて、この記事は下の「深圳に行ってきた(その1)」の続きです。

ymotongpoo.hatenablog.com

華強北(华强北)の雰囲気

自分が行ったのはまさに今週の水曜日なので夏が始まったばかりだったのですが、外気温は34度。とてもじゃないけど外にい続けたら暑くてかないません。

歩道の幅が青山通りくらいあるので、人が少なく感じますが、実際歩行者の数自体もそんなにいなかった気がします。平日だから、というのもあると思いますが、多くの人が建物内にいたのでしょう。また近くに昼食を取れるお店が多くなく外に出たくないので、デリバリーを頼む人が多かったのか、電動スクーターが数多く走っていました。深圳に来て驚いたのは、QR決済よりも電動スクーターの数とその馴染み方です。

上のようにデリバリーサービスの電動スクーターが普通に日本の原付スクーターと同じような感覚でバンバン走っていました。広場からちょっと外れた通りではこのような馴染み具合。

どれくらい電動スクーターが多いかは駐輪されている数をみると明らかです。近くに止められていたもののうち半分以上が電動スクーターでした。

一方で、レンタル自転車も健在です。道路の反対なので見づらいですが、黄色いのものがofo、オレンジのものがmobikeです。

ところで、わりときれいめな写真ばかり載せてきましたが、やはり急速に発展したところには必ず光が当たらない場所もあり、ビルの中にはがらんどうになっているブースやビルの中でもゴミが散乱していることもあり、館内禁煙の建物でも普通に廊下で喫煙している人がいたりします。

そうした建物を子供が遊んでいるのを見ると、なかなかに切ない気持ちになったりすることもあります。

京基100(KK100)

さて時間はあっという間に過ぎて3時過ぎ、深圳から香港まで2時間かかることを考えると、そろそろ別のところに移動してもう一つ何かみたいなと思っていたところに良いものを見つけました。

遠くに見える高い先に向かって尖ったビルは深圳で最も高いビルである京基100です。これは行ってみる価値がありそうだということで、タクシーを捕まえられないかとビルの方向に歩いていましたが、結局地下鉄に乗りました。

大劇院(大剧院)駅から直結で建物には入れましたが、京基100には展望台はないと言われます。残念だなあと思っていたところ、中にあるホテルの利用者であれば行けるとのこと。そして、96階にある展望ができるラウンジは一人230元(3800円)払えば「アフタヌーンティー」の利用ができるとのこと。次いつ来るかもわからないし、スカイツリーの450m展望台にはもっと高い料金を払って行ったことがあるので、まあいいか、ということで入りました。

96階からの眺めはなかなかに圧巻で、深圳が中国で3番目に大きな都市だということをあらためて意識させられる眺めでした。ガスで霞んでいるのも、発展している地域であるからこそかなと思いました。ところで230元払った「アフタヌーンティー」ですが、割と良心的なもので、230元までならメニューにある飲み物と食べ物を自由に頼んでも良いというものでした。ビールを数杯とチーズを食べつつ、96階からの眺めを堪能できるのはなかなかの体験です。

面白かったのは国境側の眺めで、川を挟んで向こう側とこちら側で明らかに発展の様子が違う。実際に帰りにMTR羅湖駅から撮った写真でも其の様子は明らかです。

MTR羅湖駅は深圳から見たら川向こうで、先の写真のように非常に牧歌的な風景でした。そして遠くに見える深圳の町並みは急速に発展した近代都市という感じです。

中国を垣間見る

深圳の街中にもプロパガンダ広告をしばしば見かけました。

「人民には信仰があり、民族には希望があり、国家には力がある」これは一昨年の共産党党大会での習近平の言葉ですね。 またほかにも電気街の建物の中に次のような垂れ幕がありました。

見切れていますが、これも去年の共産党党大会で習近平が触れた「習近平による新時代の中国の特色ある社会主義思想」が、そのまま垂れ幕としてかかっています。

さきほどの京基100からの風景を見たり、街中の発展を見ていても感じましたが、国が特区として開発を進めることの利点はトップダウンのスピード感だと思います。深圳がこれほどまでに急激に発展して世界有数の技術特区になったのは、ひとえに国策によるものでしょう。

電気街のビル内に局所的に見られた荒廃も、今後の発展で上書きされ、また新たな発展をしていくのでしょう。実際、華強北から京基100に向かって歩いているときも、古いビルを潰して新しい巨大なビルを建築している工事現場の横を通りました。

巨大な中国がトップダウンで開発を進めているその根底にあるのは、こうした共産的な動きなのだなと、改めて感じました。

深圳は面白い街でした

単純に電気街を歩くというのは自分のような人間には楽しいもので、時間を忘れてすごせるので、またぜひ来てみたいです。 それだけでなく、もともとの深圳がまだ残っている場所は今回の訪問では見ていないので、次回来たときにはぜひ見たいと思います。 また次回来るまでには新たな開発が行われていることでしょう。そうした街の変化もぜひ見てみたいです。

深圳に行ってきた(その1)

はじめに

こんにちは、最近部署異動をして、弱くてニューゲームを始めたものです。今週香港に出張があり、せっかく香港まで行くのでついでに深圳にも行っておいたほうがいいなと思ったので行ってきました。なかなか楽しかったので、忘れないうちにメモ書きを残しておきます。 中国本土に行くのも初めてだったので、事前情報調べずに準備してたらもったいないこともしたので、そのあたりもメモしておきます。後半は写真が多くスクロールが長くなります。

エントリが長くなったので前後編に分けてあります。後編はこちらです。

ymotongpoo.hatenablog.com

前提

今回の深圳訪問は次のような前提で行ってます。

  • 香港に事前に数日間滞在している
  • 深圳自体には平日に日帰りで訪問
  • ピンポイントに華強北(华强北)に行って電気街の様子を見るのが主な目的
  • SIMは事前に動くとわかっているものを持っていった

事前準備

現金

「最悪現金があればなんとでもなる、ただし換金はお得にしたい」ということでいろいろ画策しましたが、結局国境付近で両替すればいいか、という話になって深圳入国後に近くに会った両替所で替えました。

ソニー銀行に口座を持っていて、普段は外貨はそっちから引き出してるので、はじめはそこの外貨普通預金に適当に人民元を入れておけば、人民元対応ATMで引き出せるかなと思って入れておいたんだけどどうも引き出せない。 そこでソニー銀行に問い合わせてみたところ、こうした外貨預金系の口座で扱っているのは「オフショア人民元」というもので、実際に中国本土で扱っている人民元とは金融市場での扱いが異なるとのこと。詳細は他のサイトに譲ります。 もしかするとクレジットカードであればキャッシングで人民元を引き出せるかもとのことで試してみたがだめでした。なおHSBCの口座を持っていると人民元が引き出せるようです。

微信支付(WeChat Pay)

深圳といえばQRコードでの支払いの話が必ず出てくる。どれくらい使えるのかはともかく、WeChat Payのアカウントを作っておいて準備だけしておくのが良いだろう、ということで、幸い中国からの同僚がたくさんいることを最大限に利用して、訪問前日にさくっとWeChat Payのアカウントを作った。(WeChat Payのアカウント作成方法に関する記事は関連記事にリンクを貼っておく)

細かいことは関連記事に譲って、結論から言うと特に準備をしていないと自動でWeChat Payアカウントに銀行口座やクレジットカードからチャージすることは出来ません。したがって、手数料諸々を考えると「必要になったら現地でそのへんの人に現金を渡してチャージしてもらう」のが一番手っ取り早い、ということでアカウント開設時に入れた1元以外は入れずに現地に行きました。

クレジットカード

事前に調べたり、香港オフィスの同僚に再確認したところだと、やはりクレジットカードを電気街で気軽に使うのは難しいということなので、銀聯ユニオンペイ)のクレジットカードを持ってない自分としては基本的にはクレジットカード決済はないものとしました。

深圳までの移動

香港から深圳に行く方法はいくつかありますが、自分は香港MTRで行きました。乗り換えが3回あるのが面倒ですが、国境までほぼ確実に1時間半くらいでいけるのと、たった52.5HKD(訪問当時で750円くらい)でいける手軽さを取りました。(そもそも香港で泊まっていたエリアが銅鑼湾という事情もある)

香港島側では上の写真のように混んでますが、深圳が近づくと結構空いてのんびり座れます。

行きは落馬洲という駅まで行って、福田口岸でイミグレーション。(駅直結で迷わず行ける)まずは香港側の出国手続き。出国手続きはすごく簡単で、香港入国時に受け取った入国申請書のカーボーンコピーをさっと取られて終了。

それが終わると今度は広東省側での入国手続き。これまで看板は繁体字と英語が併記してあったものが、途端に簡体字のみ、英語の併記も少なくなり、本土に近づいてきた雰囲気を感じます。また上の写真のあとにものすごい数の監視カメラが設置してあって、とてもじゃないけどカジュアルに写真を撮る感じではなかったので写真は控えました。

ただ入国審査自体は結構スムーズで、審査所のすぐ近くにある申請書にぱぱっと書いて提出して指紋と顔写真を撮られるだけで特に質問もされずあっさり入国。

深圳内での移動

無事、深圳に入れたので華強北に移動します。深圳地下鉄4号線で早速移動!と思ったのですが、そこで驚いたのが、なんと地下鉄の切符を買う前にX線による手荷物検査と金属探知機ゲートがあることです。間違えた場所に来てしまったかと思って手荷物検査所のところにいた警備員に、とりあえず英語で聞いてみるも全部中国語で返されて、本土の洗礼を浴びました。昔取った杵柄で中国語(普通語)で「華強北に行きたいんですが」と聞くと、「ここを通るんだ」と言われたので、そこで始めて仕組みを理解しました。

ようやく切符売り場に来て切符を購入。いろいろな記事で見ていたように、下手するとWeChat Payじゃないと電車に乗れなかったりするのかなと思ったりしましたが、券売機もあるし、WeChat Payの宣伝はあるものの普通に現金で切符を買えました。福田口岸駅から華強北駅までで3元(50円くらい)だったので、地下鉄はめちゃくちゃ安いです。

切符はプラスチックのコインで、中におそらくNFCのようなものが入っています。入場のときにはNFCと同様に改札機の読み取り機に当てて、出場するときはコインを改札機のコイン投入口に入れておしまい。体験としては日本の自動改札と変わりません。

車両やホームは自体は結構きれいで、いくつかしかないですが自分が乗り降りした駅ではホームドアは天井までの設置で(東京メトロ南北線と同様)プラットフォームやコンコースも非常にきれいでした。ただ一つ印象に残っているのは、プラットフォームにいたのが駅員ではなく「警備員」だったという点です。

華強北(华强北)の電気街

香港の銅鑼湾駅を発ってから2時間弱で華強北にやってきました。出入国含めてこれなので結構近いなという印象です。

広場はとにかく幅と規模が広くて、感覚だと6車線分くらいの幅がある歩道の両側に、ヨドバシAkiba/ヨドバシ梅田くらいのサイズの電気屋がバンバン建っているという感じです。(正確な比較はしてませんが雰囲気そんな感じ)

そうしたビルの中を覗いてみると、いわゆる家電量販店ではなく、秋葉原のラジオデパートやラジオ会館が超巨大サイズになった感じで、小さい商店がたくさん並んでいます。本当におもしろかったのは「华强电子世界」の5階が全部LED関連製品しか売っていなかったこと。ヨドバシAkibaのサイズのフロアでLEDだけ。

整っているお店とそうでないお店の差は激しくて、整っているお店はきっちり陳列されていて、中に客が座れるような座席もあったりするほどだけれども、そうでないお店は倉庫の延長で、ただひたすら荷物のパッキングをしていたり、あるいは何をしてるかよくわからないけど、ひたすらぼーっとしていたりします。

2つめのこの白い封筒のようなものが高く棚いっぱいに積み上がっているのは、スマートフォンのタッチパネル部分で、各機種のものがたくさんあります。手前のお姉さんはきちんとしたパッケージに詰め替えてから、細かくステッカーを貼るという作業を店先で行っていました。自分たちがAliExpressなどで見かける製品はこうした場所から出荷されているのかなあ、などと想像していました。

気になるQRコードでの支払いですが、特にそれがないと電気街で支払いが出来ないという感じではなく、見かけただけでもQRコード決済と現金決済が半々と言ったところでした。(タッチパネル屋さんでもQRコードが店先に貼ってありますね)ただどこもたいていWeChat Payには対応してて、AliPayと両対応しているところが多いなという印象です。クレジットカードカード対応はしていません。

そろそろお腹が空いたなということでお昼ご飯をそのまま電気街ビルの中で食べようとフードコートのような場所に行って排骨菜飯を注文。16元(270円)って安すぎる。。。味はアジアだけあって普通に松屋とかにあったら頼むなあというような味。

やはりこちらの人たちは長年かけて歴史を作ってきただけあって、白米を美味しく食べる方法を知っていると感じました。白米そのものの味は日本の米が最高であることはまず間違いないのですが、米をどう調味したら、それも安く、美味しく食べられるのか、という積み重ねがこれなんだなと。シンガポールで食べた経済飯も似た見た目なので、きっとこういう味に行き着くんだろうなあ。結局塩と油がいい感じに入っているとそれなりに美味しく感じてしまうようです。ただ、排骨は安いだけあってほぼ骨でした。

腹もおさまったので別のビルに行き店内をうろつきます。こちらのビルは多少整ってはいるものの、子供がはしゃいでいたり結構パワフルな状況です。下の写真は建物内でスケボーをしていた子どもたち。直前までスケボーでダッシュしていました。奥の方にも黄色いTシャツの子供が写っていますが、彼もキャッキャ遊んでいましたね。

深圳の電気街に来て思ったのは、店番をしている人たちの年齢や性別がまったくランダムで、様々な人が働いているということ。(自分が歩いて回った中では一人だけ見かけました。)また本当に皆かしこまらずに過ごしていて、訪ねたのがお昼どきだったこともあり、多くの店員さんは店先でお弁当や出前を食べていました。

建物の中に弁当のワゴン販売もあったりしました。奥に写っているベビーカーに座っている子供はおそらく店員の子供。深圳の電気街のお店は家族経営で成り立っているお店も多いなと感じました。

こちらのお店はソフトウェアの販売をしているようでしたが、おそらく母親らしき人と長男らしき人が一生懸命イラストレーターを駆使して宣材を作っていました。手前で子どもたちが暇そうに一人遊びをしています。

深圳で気になったのは、建物内に同じものを売っているお店が超大量にあるということ。彼らはお互いにどうやって販路を確保して、どうやって生計を立てているのだろう。店賃はいくらだろう。家族でここで仕事をしているということは自営業なんだと思うけれど、どういう生活をしているのだろう。上の写真は、スマートフォンのケースだけを売っているお店が並んでいる一角。ここ以外に建物内で同様のお店を20軒以上は見かけました。単純に問屋が一箇所に集まっているだけ、と考えて、ここから世界中に販売しているとすれば、理屈ではなんとなくありえるかなとは思えるのですが、実際暇そうにしている店員を見るといろいろなことを想像してしまいます。

長くなってきたので、その2に続きます。

ymotongpoo.hatenablog.com

関連記事

TidalCycles環境をセットアップする

はじめに

こんにちは、ファイナンシャル・プランニング技能士です。ちょっと最近普通のプログラミングとは別にオーディオプログラミングとかヴィジュアルアートプログラミングとかで遊びたいなーと思いはじめてたところに、TLでTidalCyclesを見かけました。うまくSuperColliderをラップしてて面白そうなので、とりあえず環境構築をしてみることに。

Arch Linux

SuperColliderをインストール

普通にパッケージがあるのでインストール。

% pacaur -S supercollider sc3-plugins

stackを使ってtidalのインストール

公式サイトのインストール手順 に書いてあるとおりに適当に進めてみたら、家のArchでは cabal install tidal でいろいろ設定をいじってもインストールできなかった。ArchのpacmanでインストールするGHCがデフォルトだと動的リンクをするのに対し、cabalでのデフォルトの設定が静的リンクになっているせいかとも思ったが、設定を変えるても失敗するのでstackで入れることにした。

% pacaur -S stack
% stack setup
% stack install tidal

SuperDirtのインストール

インストール手順にあるようにSuperColliderを起動して、エディターに include("SuperDirt") を入力して実行。するとPost Windowにインストールログが流れ始めてインストール作業が行われていることがわかる。

*** Welcome to SuperCollider 3.9.3. *** For help press Ctrl-D.
Couldn't set realtime scheduling priority 1: 許可されていない操作です
file "/home/ymotongpoo/.local/share/SuperCollider/Help/scdoc_version" does not exist.
SCDoc: Indexing help-files...
SCDoc: Indexed 1802 documents in 0.77 seconds
Fetching https://github.com/supercollider-quarks/quarks.git
Installing SuperDirt
Installing Vowel
Adding path: /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/Vowel
Vowel installed
Installing Dirt-Samples
Adding path: /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/Dirt-Samples
Dirt-Samples installed
Adding path: /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt
SuperDirt installed
... the class library may have to be recompiled.
-> SuperDirt

SuperDirtの起動に失敗するのでjackdを手動で起動

手順どおりに SuperDirt.start を実行するとオーディオを正しく起動できなかったとエラーメッセージが出る。

-> SuperDirt
booting server 'localhost' on address: 127.0.0.1:57110
Found 10 LADSPA plugins
jackd 0.125.0
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

could not initialize audio.
RESULT = 0

ちょっと調べた結果、どうもSCで利用しているjackdが正しく起動出来ていないようなので、手動でjackdを起動する。

% pacaur -S libffado
% jackd -r -d alsa   
jackd 0.125.0
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
JACK compiled with System V SHM support.
loading driver ..
creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback

改めて SuperDirt.start を実行するときちんと起動できた。

-> SuperDirt
booting server 'localhost' on address: 127.0.0.1:57110
Found 10 LADSPA plugins
JackDriver: client name is 'SuperCollider'
SC_AudioDriver: sample rate = 48000.000000, driver's block size = 1024
JackDriver: connected  system:capture_1 to SuperCollider:in_1
JackDriver: connected  system:capture_2 to SuperCollider:in_2
JackDriver: max output latency 21.3 ms
JackDriver: connected  SuperCollider:out_1 to system:playback_1
JackDriver: connected  SuperCollider:out_2 to system:playback_2
SuperCollider 3 server ready.
Requested notification messages from server 'localhost'
localhost: server process's maxLogins (1) matches with my options.
localhost: keeping clientID (0) as confirmed by server process.
Shared memory server interface initialized
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/core-modules.scd
---- core synth defs loaded ----
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/core-synths.scd
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/default-synths.scd
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/try-load-extra-synths.scd
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/tutorial-synths.scd

loading 217 sample banks:
808 (6) 808bd (25) 808cy (25) 808hc (5) 808ht (5) 808lc (5) 808lt (5) 808mc (5) 808mt (5) 808oh (5) 808sd (25) 909 (1) ab (12) ade (10) ades2 (9) ades3 (7) ades4 (6) alex (2) alphabet (26) amencutup (32) armora (7) arp (2) arpy (11) auto (11) baa (7) baa2 (7) bass (4) bass0 (3) bass1 (30) bass2 (5) bass3 (11) bassdm (24) bassfoo (3) battles (2) bd (24) bend (4) bev (2) bin (2) birds (10) birds3 (19) bleep (13) blip (2) blue (2) bottle (13) breaks125 (2) breaks152 (1) breaks157 (1) breaks165 (1) breath (1) bubble (8) can (14) casio (3) cb (1) cc (6) chin (4) chink (1) circus (3) clak (2) click (4) clubkick (5) co (4) control (2) cosmicg (15) cp (2) cr (6) crow (4) d (4) db (13) diphone (38) diphone2 (12) dist (16) dork2 (4) dorkbot (2) dr (42) dr2 (6) dr55 (4) dr_few (8) drum (6) drumtraks (13) e (8) east (9) electro1 (13) erk (1) f (1) feel (7) feelfx (8) fest (1) fire (1) flick (17) fm (17) foo (27) future (17) gab (10) gabba (4) gabbaloud (4) gabbalouder (4) glasstap (3) glitch (8) glitch2 (8) gretsch (24) gtr (3) h (7) hand (17) hardcore (12) hardkick (6) haw (6) hc (6) hh (13) hh27 (13) hit (6) hmm (1) ho (6) hoover (6) house (8) ht (16) if (5) ifdrums (3) incoming (8) industrial (32) insect (3) invaders (18) jazz (8) jungbass (20) jungle (13) juno (12) jvbass (13) kicklinn (1) koy (2) kurt (7) latibro (8) led (1) less (4) lighter (33) linnhats (6) lt (16) made (7) made2 (1) mash (2) mash2 (4) metal (10) miniyeah (4) moan (1) monsterb (6) moog (7) mouth (15) mp3 (4) msg (9) mt (16) mute (28) newnotes (15) noise (1) noise2 (8) notes (15) numbers (9) oc (4) odx (15) off (1) outdoor (6) pad (3) padlong (1) pebbles (1) perc (6) peri (15) pluck (17) popkick (10) print (11) proc (2) procshort (8) psr (30) rave (8) rave2 (4) ravemono (2) realclaps (4) reverbkick (1) rm (2) rs (1) sax (22) sd (2) seawolf (3) sequential (8) sf (18) sheffield (1) short (5) sid (12) sine (6) sitar (8) sn (52) space (18) speakspell (12) speech (7) speechless (10) speedupdown (9) stab (23) stomp (10) subroc3d (11) sugar (2) sundance (6) tabla (26) tabla2 (46) tablex (3) tacscan (22) tech (13) techno (7) tink (5) tok (4) toys (13) trump (11) ul (10) ulgab (5) uxay (3) v (6) voodoo (5) wind (10) wobble (1) world (3) xmas (1) yeah (31) 
... file reading complete. Required 439 MB of memory.

server 'localhost' disconnected shared memory interface
Shared memory server interface initialized
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/core-modules.scd
---- core synth defs loaded ----
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/core-synths.scd
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/default-synths.scd
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/try-load-extra-synths.scd
loading synthdefs in /home/ymotongpoo/.local/share/SuperCollider/downloaded-quarks/SuperDirt/classes/../synths/tutorial-synths.scd

loading 217 sample banks:
808 (6) 808bd (25) 808cy (25) 808hc (5) 808ht (5) 808lc (5) 808lt (5) 808mc (5) 808mt (5) 808oh (5) 808sd (25) 909 (1) ab (12) ade (10) ades2 (9) ades3 (7) ades4 (6) alex (2) alphabet (26) amencutup (32) armora (7) arp (2) arpy (11) auto (11) baa (7) baa2 (7) bass (4) bass0 (3) bass1 (30) bass2 (5) bass3 (11) bassdm (24) bassfoo (3) battles (2) bd (24) bend (4) bev (2) bin (2) birds (10) birds3 (19) bleep (13) blip (2) blue (2) bottle (13) breaks125 (2) breaks152 (1) breaks157 (1) breaks165 (1) breath (1) bubble (8) can (14) casio (3) cb (1) cc (6) chin (4) chink (1) circus (3) clak (2) click (4) clubkick (5) co (4) control (2) cosmicg (15) cp (2) cr (6) crow (4) d (4) db (13) diphone (38) diphone2 (12) dist (16) dork2 (4) dorkbot (2) dr (42) dr2 (6) dr55 (4) dr_few (8) drum (6) drumtraks (13) e (8) east (9) electro1 (13) erk (1) f (1) feel (7) feelfx (8) fest (1) fire (1) flick (17) fm (17) foo (27) future (17) gab (10) gabba (4) gabbaloud (4) gabbalouder (4) glasstap (3) glitch (8) glitch2 (8) gretsch (24) gtr (3) h (7) hand (17) hardcore (12) hardkick (6) haw (6) hc (6) hh (13) hh27 (13) hit (6) hmm (1) ho (6) hoover (6) house (8) ht (16) if (5) ifdrums (3) incoming (8) industrial (32) insect (3) invaders (18) jazz (8) jungbass (20) jungle (13) juno (12) jvbass (13) kicklinn (1) koy (2) kurt (7) latibro (8) led (1) less (4) lighter (33) linnhats (6) lt (16) made (7) made2 (1) mash (2) mash2 (4) metal (10) miniyeah (4) moan (1) monsterb (6) moog (7) mouth (15) mp3 (4) msg (9) mt (16) mute (28) newnotes (15) noise (1) noise2 (8) notes (15) numbers (9) oc (4) odx (15) off (1) outdoor (6) pad (3) padlong (1) pebbles (1) perc (6) peri (15) pluck (17) popkick (10) print (11) proc (2) procshort (8) psr (30) rave (8) rave2 (4) ravemono (2) realclaps (4) reverbkick (1) rm (2) rs (1) sax (22) sd (2) seawolf (3) sequential (8) sf (18) sheffield (1) short (5) sid (12) sine (6) sitar (8) sn (52) space (18) speakspell (12) speech (7) speechless (10) speedupdown (9) stab (23) stomp (10) subroc3d (11) sugar (2) sundance (6) tabla (26) tabla2 (46) tablex (3) tacscan (22) tech (13) techno (7) tink (5) tok (4) toys (13) trump (11) ul (10) ulgab (5) uxay (3) v (6) voodoo (5) wind (10) wobble (1) world (3) xmas (1) yeah (31) 
... file reading complete. Required 439 MB of memory.

SuperDirt: listening to Tidal on port 57120

Atomの設定とテスト

Atomをインストールして、tidalcyclesパッケージをインストール。中で呼び出すghciの起動コマンドの設定があるので、そこを stack ghci に変更しておく。

f:id:ymotongpoo:20180520181340p:plain

その上で、 Packages > TidalCycles > Boot TidalCycles を実行する。インストール手順書にあるように次のコードをEvalしてみて音がなったら成功。

d1 $ sound "bd sn"

jackdとSuperColliderの起動のスクリプト

一応これで動いたけれど、jackdを手動で起動して、かつSuperDirtの起動のためだけにSuperColliderIDEを起動するのは大げさなので、スクリプト化してターミナルだけで完結するようにする。

まず start.scd という名前でSuperDirt.startを呼ぶだけのコードを保存しておく。

(
SuperDirt.start
)

次に先ほどのjackdの起動とstart.scdの読み込みだけの簡単なシェルスクリプトを用意する。

#!/bin/bash

jackd -r -d alsa &
sclang start.scd

これのシェスクリプトを起動すればいちいちSuperCollider IDEを起動しなくて良くなる。終わったあとはjackdをちゃんとkillしないと音声を出すアプリケーションが動かなくなるので注意。

参考

YAMAGUCHI::weblogの2017年を振り返る

はじめに

こんにちは、おじさんです。こんな日に誕生日というのも毎度のことながら忙しい時期に生まれたもんだと思います。というわけで例のやつです。

以下、突然のである調。

関連エントリ

ここまで続けると毎年やらないわけにいかない感じになってる。

ymotongpooの2017年

昨年立てた目標

去年も同じこと書いたけど、毎年このエントリの最後に「来年は〜」って書いてるんだけど全然覚えてない。

スペイン語の勉強

2016年9月にスペインに行ってみて、スペインが思ったより良かったので、麻疹にかかったようにスペイン語面白いといって熱をあげてたんだが、結局日本に帰ってくると使うことがなさすぎていつの間にかDuolingoもやめてしまった。 英語は毎日使うので嫌でも毎日勉強になっているんだけれども、やはりスペイン語も似たように毎日使うようなモチベーションがなにかないと続けるのは大変だなあ。

誰かと一緒にDuolingoで競えていたら少しはやりがいも出るんですが、誰かやりませんか。

Pythonやり直す

一時期Pythonを使って細かなツールなんかを書いたりしてたので、だいぶ勘所は戻ったかなという感じ。

久々に使っても、割とすんなりキャッチアップできるのは使う側としてはありがたいと思った。特にエコシステムが落ち着いてるので、1年離れただけで浦島太郎になってしまうことがないという安心感は大きい。

資産運用を引き続き

資産運用に関しては本当にしっかり取り組んだ一年だった。詳細は直前のエントリにて。

お金に関連する話(税制や金融商品に関する知識など)は知ってるだけで得することが多く、特にその知識を網羅的に体系だてて知るためにもFP技能試験を受験するのが良いという結論に至った。まずは3級から始めるけれど、来年中に2級も受けたい。

今年はお金をあちこちに移動させた年だったので、来年1年はお金の流れを落ち着いて観察してプランしたとおりに実行できているか評価したい。こういった評価をするのは初めてなので楽しみでもある。

ジム

もはや生活に当たり前のように溶け込んでいるので、あらためて評価をするということはなのだけれど、生活習慣になるまで自身の生活に溶け込んだと考えると良いことだったと思う。

基本的には週3〜4日はジムに行くようにしていて、時間がないときも1時間程度4種目はこなすようにしている。慣れてくると不思議なもので、用事が立て続けにあり、予定していたペースでジムに行けないと体がムズムズするような感覚になる。 出張のときなども、事前に滞在先のホテルにジムがあるか確認し、スケジュールを見て夕食後、もしくは朝食前などに行くようにしている。

今年特にやっていたこと

仕事など

今年はGoogle I/Oまでは主にウェブ関連(AMPやPWAの普及、特に企業向けのサポートなど)を行っていた。またGoogle I/OGoogleアシスタントの日本語対応とGoogle Homeの日本での販売が発表されたけれども、今年の頭からそのリリースに関する様々なプロジェクトに関わることができた。特にGoogleアシスタントの外部開発者向け機能のActions on Googleの日本語対応に関する早期アクセスなどに関わった。

GoogleアシスタントGoogle Home以外の端末(AndroidスマートフォンAndroid WearAndroid TV、Googleアシスタント搭載スマートスピーカーなど)でも動作するし、他にも今年はAmazon EchoやLINE Clova WAVEなど日本でも一気に展開された。スマートスピーカーをすでにお持ちの方はまだまだ発展途上の領域だし、これのおかげで生活が一変するというようなものではないかもしれないが、確実に便利な使い方というのあるということを実感されていると思う。

スマートスピーカーを始めとする音声UIツールのブームが今年だけで終わらないよう、来年も市場全体を大きくできるように動きたいと思う。

MacからLinuxに開発環境を移した

今年初頭の環境は次のような感じだった。

しかしながら、最近のmacOS自体の開発環境としての性質に疑問が多く生じてきたのでメイン環境をLinuxに移行し、次のような環境になった。

先のエントリーにも書いたが、ラップトップマシンをデスクトップ環境として使っていた結果バッテリーをだめにしてしまったので、自宅にもデスクトップ環境を用意した。最近のLinuxデスクトップ環境は本当によくできていて、4kモニタも問題なく使えるし、日本語入力も問題ない。フォントもNotoシリーズを始め高品質なものがたくさんあるし、エディタやIDEは自分が使う範囲ではEmacsVimVisual Studio Code、Android StudioIntelliJ)などすべてLinuxで動く。Google ChromeFirefoxも動作するので、日常必要なことはだいたいまかなえる。

唯一困る点としては各種Adobe製品が動かないことだけれど、Lightroomは最近はブラウザである程度できるので簡単なことはそこで、もし本格的に動かすとなったらサブ機としたMacBook Proで作業するようにした。

出張/旅行

今年も多くの出張や旅行に行った。

自作キーボード

Kinesisから始まって、いまは会社でも自宅でもErgoDox EZを使っているわけだけど、長らく使っているうちにやはり改善したい点などは出てきて、ついにこの深い沼に今年入り始めてしまった。

いまはLet's SplitとMinidoxのPCBがあるのでとりあえずこれを作らないといけない。ちょっと製作時に失敗してしまったので、年始に道具が揃ったらきちんと仕上げたいと思う。

来年に向けて

まあ覚えてたらいいなってくらいのスタンスでの目標。

  • FP技能検定2級
    • 1月に3級の試験を受けるので、そこではずみをつけたい。
  • 自作キーボード
    • とりあえずいまある基盤3枚は作りたい。安定して作成できるようにしたい。
  • ジム
    • 荷重懸垂を始めて、記録を伸ばしたい。
  • 書籍
    • そろそろまた出したい