いうループはありがちです(特に、内容やクオリティ的にギリギリを攻めるほど)。私がほぼ常時開いているSNSはこのへんです。私用のGmail(Hangouts含む)仕事のGmailFacebookChatWorkSlack(2つ)さて、ここでは人のアクションをストリームあるいは比較的手軽なポーリングで得られる仕組みは全部SNSと括ります。ChatWorkは、その特性から言って完全にSNSです。人によってはpixivやニコ動、Instagram、Tumblrも含まれるでしょう。仕事中に私用のGmailやFacebookを開いていたり、仕事外でChatWorkを開くことに関する突っ込みは一定あると思いますが、まあそれはそれとします。インターネットアクセスがあるかぎりSNSへアクセスするのは仕方ありません。作業に集中したければSNSをごっそり落とすしかありません。SNSを落とすといっても、各所のサーバへアタックするのはいけません。各種サービスを頻繁に開いたり閉じたりするのも、ずいぶんと時間の無駄です。ウィンドウを分けてSNS系を片方へ仕分けするというのもアリですが、試してみるとイマイチ脳内の分離にはつながりません。いうわけで、メインのWebブラウザと、SNS類専用のWebブラウザを分けます。SNS専用Firefoxの作り方(Mac用)基本的に、標準機能を組み合わせて実現します。Firefoxは、そうとう昔からマルチプロファイル利用をサポートしています。これを使ってメイン利用のブラウザとSNS専用のものを切り分けます。-Pと叩いて実行します。すると、あまり見慣れない(かもしれない)Firefoxのプロファイル選択画面が開きます(図1)。通常はdefaultというプロファイルしかないはずです。こ左側の「新規プロファイルを作成...」からcommuという名前のプロファイルを追加します(上記のスクリーンショットは、追加後のものです)。作成したら、「今後このプロファイルを使用する」のオプションを外して実行します。以下、これをSNS専用のブラウザとして仕上げていきます。SNS専用Firefoxに最低限の設定をする新たに作成したプロファイルを指定して起動すると、メインブラウザの設定類が一切引き継がれない状態で起動します。これは重要ポイントです。便利にしすぎると、SNS専用ブラウザを終了するモチベが湧きにくくなるため、「ほどほど不便な状態」にするのが大切です。SNS専用ブラウザの設定事項は、以下をオススメします(図2)。SNS専用Firefoxの設定SNS専用Firefoxを簡単に起動できるようにするSNS専用Firefoxは、ほどよく楽に起動できる必要があります。これはAutomatorで実現します。SpotlightにAutomatorと打ち込んでAutomatorを開きます。新規ドキュメントを作成し、図3のようにシェルスクリプトの実行ジョブを追加します。commuと書きます。これをドキュメントディレクトリ以下に保存します。私はFxCommuという名前で保存しました。起動確認さきほど作ったAutomatorの実行ファイルをFinderから実行してみます。うまくいけばSNS専用のFirefoxが表示されます。うまくいかなければ何か設定を失敗しているはずなので、見直してみてください。うまくいかず、時間がもったいないことに気付いたら、落ち着いて原稿へ戻ってください。トラブルシュートしている時間はないはずです。うまく起動できたら設定はほぼ終わりです。ここでやったようにFxCommuという名前にしておくと、通常SpotlightやAlfredの検索からFxまで叩くとSNS専用Firefoxを開けるので、ほどほどに便利です。SNS専用Chromeの切り分け方(Mac用)Chromeでも多分似たようなことはできます。私はほぼFirefox使いなのでChromeでの手順は調べていません。読みたいという人が居れば追記するかもしれません。ChatWorkのURL冒頭であるkcwと叩いてしまう癖がついています。fと叩いてFacebookを開くことも多いです。これを逆手に取り、メインブラウザ側で以下のような設定をします。RedirectorというFirefoxアドオンがあります。これは、ブラウザで開こうとしたURLのうちで、特定のパターンに一致するものを他のURLへとリダイレクトするものです。これをインストールし、図4のように設定します。Redirectorでの強制リダイレクト設定ここでは、リダイレクト先のURLをすべてomnifocus:としています。これは、タスク管理ツールのOmniFocusをアクティブ表示させるものです。Facebookについては、各所に仕込まれているいいねボタンがごっそり引っかかるのを避けるために、*://www.facebook.com/plugins/*を除外URLにしています。このように設定すると、メインのブラウザでGmail/Facebook/ChatWork/Slackあたりをうっかり開いたら、OmniFocusがフォアグラウンドへ出てきて進捗的なダメージを受けます。結果、作業が進みます。リダイレクト先としてのomnifocus:設定は、OmniFocusをインストールしている人限定のものです。Milkを使っている人は、それぞれのURLをリダイレクト先に指定すると良いでしょう。以上、あとは進捗するだけです圧倒的進捗意識を持って進捗しましょう。Twitterは呼吸であるここまでで言及していませんが、TwitterはSNSというよりも呼吸なので専用クライアント(夜フクロウ)を常時開けっ放しです。多少は時間を持っていかれますが、いろいろ試した結果として「Twitterクライアントを切っていたほうが結果的に生産性が下がる」ことが分かっているのでこのままにします。効能(個人差があります)この方法を運用し始めてから数日間での所感を書いておきます。FxCommuを開く回数はさほど多くない完全起動(全タブの読み込み完了)までに15秒程度はかかるため、「見たいと思った瞬間に見れない」ことになります。見たいと思った瞬間から概ね6-7秒も経てばあまり見たくなくなるので、起動中に欲望のピークをすぎることになります。この時間が体感として身についてくると、自然とSNSを開こうと思うケースが減っていきます。なんか禁煙治療みたいですね(知りませんが)。URLフィルタパターンについては考慮の余地あり時折、Facebookのウィジェットを埋め込んでいるようなサイトへアクセスするとおもむろにOmniFocusがポップアップしてきて「ファァァ」となりますが、まあさほど頻度が高くないので許容しています。この方法だと、Facebookログインを利用するサイトも軒並み使えなくなるので、少々面倒な感じがします。今のところFacebookログインが必要な場合はSNS用Firefoxを開くようにしていますが、利便性的には適切にホワイトリストをメンテしたほうがよさそうです。通知を増やしても良いかも私はこれまでモバイル側の通知をごっそりと切るようにしていたのですが、この仕組みの確立によってSNSにかける時間の比率がほどよく下がってきたので、この先はもう少しだけ通知を増やし、ChatWorkやSlackで自分へToが飛んできた場合のみモバイル端末へ通知を飛ばしても良いかな、と思うようになりました。懺悔これ気付くのがもう2週間早ければ、締め切り守れたと思うんですよね(ぷるぷる)。導入しなければ多分原稿落としてたと思います。それでは、よい原稿ライフを。資料を補足するシリーズです。途中でやったことや、参考情報を書いていきます。作りたいものがあるのは大事まず、心構え的なアレですが、すぐに具体的なものが浮かばないにしても、「こういうジャンルのものを作りたい」ぐらいはあったほうが情報収集についても何にしても良さそうです。私の場合はWebサービスやゲーム系のサーバサイドでFPGAを利用して何かできないかなーという興味が軸です。FPGAを勉強し始める前段階ハードウェアとソフトウェアの真ん中あたりへ攻めていくにあたり、ソフトウェア方面から来た人間には明らかにハードウェア方面の常識が不足しています。これを補っておいたほうが後がきっと楽です。いう場面で読むべき本として、「CPUの創りかた」は完全なる名著です。発刊から12年近くが経った現在でも売れ続けていることから分かるように、とても良い本です。私の場合は、元々ハードウェア系にとても弱いので、この本を何度か読んでからFPGAの領域へ来ました。XilinxかAlteraかそこそこの評価ボードを入手しやすく、開発キットをしっかり提供しているベンダーはXilinxとAlteraの2強です。FPGA自体の実装アーキテクチャは異なりますが、VerilogやVHDLで記述した定義をFPGAへ落として実行し、デバッグなどもできるという面ではあまり変わりません。私の場合は、うっかりと両方のボードが手元にあります(当初購入したAlteraのチップを搭載したDE0というボード、そしてARMコアとFPGAのハイブリッド構成という楽しさに釣られて購入したXilinx系のMicroZed)。評価ボードがない状態でもひとまず開発ソフトをダウンロードして試すことはできるので、ひとまず両方触ってみましょう。いいたいところですが、FPGAの開発用IDEはとにかくメニュー構造もワークフローもソフトウェア系と違ってなかなかに複雑です。XilinxのIDEは割と最近(といっても2-3年前ですが)にフルリニューアルし、過去版(ISE)に基づいたblogの入門記事類がごっそりとdeprecatedになっています。「どうせEclipseベースだから、触ればなんとかなるだろ」と思ってむやみに触り始めると心折れます。AMD派?Intel派?という感じのふわっとした感じで適当に決めれば良いと思います。個人的印象では、Xilinxのほうがオンラインドキュメントが膨大にあってIntel風味なので好みです*1。CPUベンダーと違って、「どちらのほうが比較的安い」みたいなのは無い気がします。AlteraとXilinxどちらにするか決めたら、まずは安めのボードを物色します。えいやっと買ってしまうのが手っ取り早いです。面白そうなボードや、入門の道を誰かが切り拓いてくれているボードがあれば、それに乗っかるのも良いと思います。EvaKitあたりを買うのが楽なのではないでしょうか。ちなみに、これを買うとAltera閥へ入ることになります。おめでとうございます。あっ、Intelが最近Alteraを買収したので、AlteraのほうがIntelっぽいというかIntelですね(紛らわしい表現)。FPGA」という本で学んでいったという話です。これは、XilinxのZynqというアーキテクチャのZedBoardという評価ボードの利用を前提にした本です。出た当初はこの本高いなぁ、Web上にある情報でなんとかならないかなぁ、と思っていました。途中でIDEの扱い方に心が折れ、諦めて買いました。本の範囲としては、旧世代のIDEの利用が多いのですが、一応新世代のIDEをカバーした章もあり、グラフィックス出力から自前のコア構築、チューニング可能なポイントの洗い出しから実際にチューニングしてみるまでの本当に多彩なトピックをカバーしています。誤植がものすごく多いのが難点です。FPGA」の誤植一覧(150箇所)にまとめました。ツール群の扱い方がざっくりと身につかないと、他のことが頭に入ってこない。いう本に従ってひと通りを体験するの大事(しかしISEベース...!)この本、ひとつひとつしっかりやっていくと各小項目で1冊ずつ本が書けそうな幅広さです。さわりが載っていたことが個人的に嬉しかった項目を挙げておきます。ISEとVivadoの両方を使っての話展開ちょっと古い記事やチュートリアルを眺めると、結構ISEベースの話がある。いう時に怖がらず読めるようになったまあ、PlanAheadとかXPS?とかいくつかのツールが、どういうふうに再編してVivadoになってるかという雰囲気が掴めるのが大きいLinuxのデバイスツリーに関する話と実際に自分で書く話PSとPLの間のデータ転送AXI系AXI4-LiteAXI4AXI4-Stream結果、この本はだいぶ読み込みました。軽く遠出するときに電車の中で読んだり、家でも何度か読んだり。2-3ヶ月FPGA方面から離れて、頭のなかから色んなものが抜けた状態で再度スタートしようというときに、頭をFPGAへ引き戻すためにも有効でした。惜しいのは前述の通り、誤植が多いことです。頭が乗ってきて読み進めている時に、技術用語が誤った領域を踏むと脳が例外を吐いて止まってしまうので悲しいところです。売れに売れて重版で誤植が直ったら、多分もう一冊買うと思います。本やオンラインのドキュメントを読んでいて感じた、ARM+FPGAというZynqアーキテクチャにまつわる雰囲気を書いてみます。前述のように、XilinxはISEシリーズから新しいIDE(Vivado)へと移行しました。この移行期にぴったりぶつかったのが、いわゆる"7"シリーズです。ZedBoard/MicroZed/ZYBOに使われているZynq-7000シリーズもこのひとつです。ISEにはZynq-7000シリーズの開発用定義ファイルがありません。古いチュートリアル(書籍も!)は割とISE前提で書かれています。MacBookを4/10に注文、4/14出荷、届いたのは4/17だったので正確にはもうすぐ2ヶ月ですが。Dockerで簡単にGPU対応のTensorFlow入りコンテナを作る方法こんにちは。作品群を読んでいたら連休が終わりそうです。重くなるので読み込まないようにすればOK。資料を補足するシリーズです。途中でやったことや、参考情報を書いていきます。