タビス・ラッド氏による「Pythonで音声プログラミング」
今年もPythonコミュニティの最大のカンファレンスであるPyCon USがカルフォルニアのサンタクララで3月13日から21日まで行われました。PyConのビデオは本当に面白いので時間があれば他にも紹介したいですが、第一弾として、今日はタビス・ラッド氏(Tavis Rudd)によるプレゼンテーションの紹介です。
英語ですが、Youtubeなので自動字幕で日本語訳をつけながらみれることもできます。
タビス氏は二年前にロッククライミングの事故で肩を痛め、さらにプログラミングの仕事によるタイピングのし過ぎから少しずつ腕の感覚が無くなって行き、Repetitive Strain Injuries (RSIs)を発症してしまい、それでも無理して仕事を続けるうちにタイピングが出来ないほどに悪化してしまったそうです。そこで、音声認識ソフトDoragonを5ヶ月ほど改造することで、音声認識で十分効果的にプログラミングができるまでにシステムを調教してしまったそうです(場合によってはタイピングより速いかもしれないくらい)。その後、事故から1年立つ頃までには肩や腕も回復しましたが、いまでも40-60%の時間は音声でプログラミングを続けているそうです。
音声認識ソフトDoragonのウィンドウズ版は、Pythonがプログラム中に組み込まれていて、ハックできるそうで、音声コマンドでPythonのコールバック関数を呼び出すことでVimやターミナルでできることはだいたいなんでも出来るそうです。音声コマンドは2000以上あり、カーソルのナビゲーションには面白いから動物の鳴き声をふんだんに取り入れたそうです。
例えば、タビス氏がAlexと呼びかけるこのシステムをスリープ状態から復帰するにはwake upといいます。snoreでスリープに入ります。sleepでなく、snore(いびき)を選ぶ辺りも面白いからでしょう。ビデオを見るとlock dragonで音声認識ソフトをロックするのもよく使っています。
その他のVimコマンドの表が14:32くらいにでてきます。面白いので、拾ってみました。
- slap -> enter - laip, raip -> () - lace, race -> {} - lack, rack -> [] - mark, tark -> set-selection-mark, toggle - jark -> jump-to-prev-mark - mara -> mark-paragraph - mexp -> mark-sexp - boof, baif -> beg-of-(prev/next)-string - moof, maif -> select-(prev/next)-string - snup, sna-down -> beg-of-(prev/next)-line - sup -> <incremental search up>
slapは改行らしいですが、きっとキーボード使う時もビンタ(slap)を食らわすようにエンターキーを叩いているのでしょう。括弧は英語ではパレンタスとか短くパーレンとかブラケットとかいろいろ言い方がありますが、効率、スピードが重要なので左の丸括弧はleft parenじゃなくlaipで右左をlaかraでいい分けています。日本人泣かせですね!!{}は普通curly bracketといいますが、braceともいいます。laceでleft braceの短縮形ですね。[]はsquare bracketが普通なので、ckはbracketのckでしょう。などなど、これらを使いこなしでコーディングするわけです。
デモ1 emacs-lisp 9分~
実際にプログラミングしている場面は9分から見られます。最初のデモはLispのようです。括弧がたくさんありますねっ。後のほうでLispはコードの構造が対照的で音声コマンドでのナビゲーションが一番やりやすいと言っています。クオートのなかの平文は音声認識の方が速いですね。 コードが終わって実行するとthis is a very simple demoという声が聞こえてくるはずが、Alexが「human rules the world. robots hate it!」と言ってきて、タビス氏がRobots will never rule the worldと言い返すとこれが多分コマンドになっていて、Hey! Bite my shanny metal ass!というビデオクリップでまたAlexがやり返すという手の込んだ漫才の余興を披露。
デモ2 変数の命名 11:15~
thisIsATestという変数名が欲しい場合、camelと言ってから続けてThis is a test。StudyといってからだとThisIsATest。ジャイグとかいってるのはなんだかわからないけどthis-is-a-testとなり、dot wordだとthis.is.a.testになる。score(アンダースコアの略と思われ)だとthis_is_a_test。
で、最後に上の表のmaraで今あるカーソルのパラグラフを選択してchukで削除。う~む、かっこいい・・・。
デモ3 ターミナル 12:27~
ターミでターミナルが起動。タームクイットで終了。
デモ4 Pythonでのコーディング・コードナビゲーション 15:45~
クラスをクラス名で検索したり、便利そうです。コードナビゲーションはほとんど動物の鳴き声。
デモ5 meta(Alexの調教) 17:25~
Pythonのクラスを作っていって、Alexにモンティ・パイソンのフレーズ「Hey, mately, I know a dead parrot when I see one. And, I am looking at one right now.」「This is an ex-parrot!!」を教えています。ex-をつけてex-boyfriend(元カレ)とかex-wife(別れた妻)とか言いますが、死んだオウムのことをex-parrotと表現しているのが面白い。
で、コードは?
24分あたりで、コードは公開していないのかと聞かれていますが、4ヶ月以内にコードを読みやすいように手を入れてTavis Rud氏のGitHubのレポジトリで公開すると約束していますので、期待して待ちましょう。
結構、マウスの使い過ぎで腱鞘炎とかあるので、みなさんも気をつけましょう。いまにAndroidやiPhoneでしゃべるとパソコンにコマンドを送るようなソフトで、まともに使えるようなのが来る日も近そうですね。未来を感じる、「スタートレックかよっ」て感じのプレゼンテーションでした。
« 海外から日本限定のアンドロイドアプリをゲットしてみた(逆も応用可)。 | トップページ | デイビッド・ビーズリーのPythonでパブリックデータのハック »
「パソコン・インターネット」カテゴリの記事
- Linuxのデスクトップ環境にログインした時にxmodmapコマンド実行(2023.12.30)
- youtube-dlでrumbleをダウンロード(2023.12.06)
- Pop!_OSのアプデがfcitxを繰り返し葬る件(2023.05.22)
- vue.jsで遊んでみる(2023.01.02)
- 『将棋神やねうら王』のオープンソース版MyShogiをLinux Mint 19.1でビルドしてみた件(2019.03.24)
「学問・資格」カテゴリの記事
- ウイルスを殺すのは簡単。人に無害でやるのが難しいの!! 二酸化塩素「こう?えい!」(2020.03.11)
- 老化はエピジェネティクスな影響が積り、スプライシングに影響を与えるのかも(2017.11.20)
- シネッセンス細胞がアツい。不老不死とハゲの治療が同時に可能か?(2017.11.18)
- 古めの論文でテキスト選択がおかしい時の対処法(2017.09.08)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
« 海外から日本限定のアンドロイドアプリをゲットしてみた(逆も応用可)。 | トップページ | デイビッド・ビーズリーのPythonでパブリックデータのハック »
コメント