ひよこインフラてっく!

ひよこインフラエンジニア「ひよこ大佐」による技術ブログ的なもの。インフラ技術や仮想化、Pythonなど。

FiiO K5 Proのレビュー & PulseAudioでハイレゾ出力を有効にする

どうも、ひよこ大佐です。

Fedora 33をインストールしているメインPCのHADES NUC(NUC8i7HVK)のオンボードのオーディオが、Fedoraでは上手く動作しないケースがありました。デバイスは認識されておりOS上では音声が出力されているように見えるのですが、実際には一切音が出ないという状況がたまに発生し、原因不明のままフラストレーションが溜まっていました。

いろいろと試したのですがすぐには解決不能でしたので、根本的な対策として新たにFiiOの「K5 Pro」というUSB DACを購入しました。

f:id:hiyokotaisa:20210331084907j:plain
K5 Proの外箱
f:id:hiyokotaisa:20210331084937j:plain
K5 Pro本体

このUSB DACはUSB Audio Class 2.0に準拠しているため、プロプライエタリなドライバを利用せずとも、接続すればすぐに音声を出力することができます。接続しボリュームノブを回すと、青色に点灯し正常に音声が出力されました。

f:id:hiyokotaisa:20210331085450j:plain
K5 ProをPCに接続すると青色に点灯する

FiiO K5 Proのレビュー

私はスピーカーにSonyのSRS-D5、ヘッドホンにB&W P7を使用しています。ヘッドホンを接続してみると、PCに直接接続していたときと比較して明らかに音質が改善されました。余計な味付けはせず、純粋に解像度と音の分離が向上している印象です。今まで意識していなかった薄い膜が取り払われ、より音楽に没入できるようになりました。

どちらかというと寒色系の出音ですので、元々の出音がモニターチックなヘッドホンだと味気無く感じるケースもあるかもしれません。個人的にはB&W P7のキャラクターとはかなりマッチしていると思います。P7はインピーダンスは22Ωで、300Ωのゼンハイザー HD800のように鳴らしにくいヘッドホンではないので、音量については全く問題ありませんでした。ゲインスイッチも最低にしてボリュームノブも半分より右側に回すことはまずないです。その前に鼓膜が破れるかヘッドホンが壊れます。

また、このセットでApex Legendsをプレイしてみましたが、敵の足音の位置把握が驚くほど格段にやりやすくなりました。もともとPC直挿しでもそこまで聞き取りにくいと感じてはいなかったのですが、明確に向上しています。

私は昔からFPSゲームにはバーチャル7.1chに対応しているゲーミングヘッドセットよりも定位がしっかりしているモニター用ヘッドホン派で、真剣にFPSをプレイしていた時はSHUREのモニターヘッドホンを愛用していました。ゼンハイザーのGAME ZEROを使っている時期もありましたが、やはり定位や音の分離に優れているヘッドホンとDACを使用するほうが確実に聞き取りやすいです。

B&Hというアメリカの通販サイトで購入したので、日本の実売価格より5000円ほど安く入手することができました。非常にコストパフォーマンスに優れたDACと言えると思います。

ハイレゾ出力を有効化する

さて、本題の「ハイレゾ」について。実はこのDACはステッカーが貼ってあるとおり、768kHz(!?)/32bitまでのハイレゾ出力に対応しています。

主な特長

  • 旭化成エレクトロニクスDAC「AK4493EQ」搭載。低ノイズ・低歪と高出力を両立

  • USBコントローラーにXMOS製「XUF208」を採用。768kHz/32bit PCMならびにDSD512(22MHz DSD)に対応

  • 先進のオーディオアーキテクチャにより入念に設計された4ブロック構成のアナログアンプ部

  • 微細な音量調整を可能にするADCボリュームコントロール機能

  • 安全・確実・堅牢を実現するDCフィルター採用の外部電源方式

  • ゲイン調整機能、同軸デジタル/光デジタル入力端子、RCAライン出力端子搭載

個人的にはSpotifyの最高音質設定の音源で満足してしまう程度にはクソ耳なのでハイレゾの必要性は全く感じていないのですが、「出力できるのであれば設定してやろう」という軽い気持ちで変更してみました。

1. /etc/pulse/daemon.conf を編集する

ハイレゾ出力を有効化するには、PulseAudioの設定を変更する必要があります。上記ファイルを開いて、以下のデフォルトサンプルレートとフォーマットが定義されている箇所を見つけます。

;; default-sample-format = s16le
;; default-sample-rate = 44100

上記を見ると、デフォルトでは44.1KHz/16bitで出力されているようです。K5 Proは再生する音源のサンプルレートによって色が変わるのですが、48KHz以下は青色で点灯します。なので最初に接続すると青色で点灯していたわけです。

この箇所のコメントを外して設定を有効化し、以下のように書き換えます。

default-sample-format = s32le
default-sample-rate = 192000

とりあえず192KHz/32bitを指定してみました。ほとんどのハイレゾ音源ではこれ以上のサンプルレートで収録されていないと思うので、指定するだけ無駄だと思います。

2. PulseAudioを再起動する

変更したら、以下のコマンドでPulseAudioを再起動します。

$ pulseaudio -k; pactl list short sinks

再起動すると、以下のように出力されるので、192KHz/32bitでの出力が有効化されていることが確認できます。(最初の行はマイクのモニター出力です)

$ pulseaudio -k; pactl list short sinks
0       alsa_output.usb-Razer_Inc_Razer_Seiren_X_UC1846L01202109-00.iec958-stereo       module-alsa-card.c      s16le 2ch 48000Hz       IDLE
1       alsa_output.usb-GuangZhou_FiiO_Electronics_Co._Ltd_FiiO_K5_Pro-00.analog-stereo module-alsa-card.c      s32le 2ch 192000Hz      IDLE

また、DACのLEDも黄色に点灯し、ハイレゾで入力されていることが確認できます。

f:id:hiyokotaisa:20210331093249j:plain
K5 ProのLEDが黄色に点灯する

ハイレゾ音源を試聴してみる

せっかくハイレゾが再生できる環境なので、moraからヨルシカの新アルバム「創作」のハイレゾ音源を購入し、何曲か聴いてみました。

f:id:hiyokotaisa:20210331093608p:plain
96KHzのFLAC音源

……全く違いがわかりません。

当たり前なんですが、B&W P7の再生周波数帯域は「10Hz~20kHz」なので、ハイレゾ音源を再生したところでヘッドホンが出力できませんので、全く意味がありませんでした。

一応Spotifyの音源と比較すると「ちょっとボーカルのsuisさんの声や楽器の音が艶っぽい気がする」んですが、これが320kbpsのSpotify音源とロスレスFLACの違いなのか、ハイレゾによるものなのかは一切わかりませんでした。というかハイレゾの差を検証するにはmoraで非ハイレゾFLACコーデックの音源を購入して比較しないといけないですね。ハイレゾ出力に対応したヘッドホンかスピーカーがあれば検証できるのですが、あいにく手元には一切ないので検証不能という結果になってしまいました……。しかし、ハイレゾなんぞ対応してなくてもいい音であることは間違いないので、個人的には「ハイレゾ、いらないんじゃない?」と思っています。

ハイレゾ対応のヘッドホンを入手したら、再度検証してみようと思います(購入するための口実じゃないですよ!)

追記

PulseAudioの設定を深堀りすると、高音質化するために効く(と思われる)パラメータがいくつかあります。 たとえば、 default-sample-format は、float32le というより高精度なサンプルフォーマットを指定することも可能なようです。

参考: PulseAudio - LinuxReviews

しかし、K5 Proは上記の指定は効かないようで、s32leにしか対応していないようです、

$ pacmd list-sinks | grep sample
        sample spec: s16le 2ch 48000Hz
        sample spec: s32le 2ch 192000Hz

他にはいくつかのブログ記事で見かけた avoid-resamplingresample-method というパラメータもあります。avoid-resampling を有効化すると、音を再サンプリングしないよう設定することができるので、元の音源をそのまま出力することができます。

しかし、このオプションは「historically been buggy and problematic」とされていて、有効化することによる弊害もあるようなので、私はデフォルト設定のままとしています。

resample-method については、デフォルトよりCPU負荷は上がりますがより高音質な「soxr-vhq」を指定しています。(ちなみに設定による音質の差は聞きわけられませんでした)

参考: https://www.labohyt.net/blog/server/post-4648/

リモートワークで集中力を保ちつつ快適に作業するために

こんにちは、ひよこ大佐です。

新型コロナ禍の影響でリモートワークをせざるを得ないという方、リモートワークになって通勤時間がなくなって嬉しいという方、もともとリモートワークだから変わらないという方もいらっしゃると思います。もちろんこの情勢下でもリモートワークできないという人もいらっしゃるでしょう。

リモートワークは、オフィスに行かないことで得られるメリットもたくさんありますが、同様にデメリットもあります。好むと好まざるとにかかわらず、しばらくはリモートワークをしつづけなければならない情勢が続き、ストレスが溜まっている方もいるのではないでしょうか。

私は今の会社に転職してから、普段はリモートワーク、週に1〜2回出社するという生活を2年近く続けています。その中で感じたことをいくつかまとめておきたいと思います。

今リモートワークにストレスを感じている方にぜひ読んでいただき、参考になるものがひとつでもあれば幸いです。

オフィスと家でのパフォーマンスを比較しない

リモートワークについて考える前に、まず最初に書いておきます。

オフィスは働くための場所です。ですが多くの人にとって家は働くための場所ではありません。

当たり前のことですがまずこの前提があり、その中で最大の作業効率を発揮する必要があります。家の環境は人によってさまざまです、狭いワンルーム、マンション、戸建、同居人や子供の有無、ペット、近隣環境など、考慮しなければならない環境的な要因が沢山あります。 自分専用の書斎でこもって作業できる人と、子供が走り回るリビングで仕事をする人では、同じレベルの作業効率になるはずがありません。どちらが望ましいという話ではなく、生活のスタイルやステージによって、家の中でできることには制約があり、その制約のなかで最大の作業効率を発揮できるように意識する必要があります。

私の場合はもともとリモートワークすることが多かったため、自分専用の部屋があり、PC専用のデスクとウルトラワイドモニターがあり、自宅でも集中できる環境を作れています。他の方と比較しても恵まれている環境と言えるでしょう。

f:id:hiyokotaisa:20200524194217j:plain

ですが、家庭がある人、子供がいる人はそういうわけにはいきません。どうしても作業効率はオフィスで働くときよりも下がってしまうはずです。しかしその作業効率を「オフィスにいたなら出せていたはずのパフォーマンス」と比較する必要はありません。なぜならそのパフォーマンスを自分の家で発揮することはそもそも無理なので、「本当はこんなはずじゃないのに」というストレスを溜めるだけになってしまいます。

働くための前提となる環境が違うのですから、発揮できるパフォーマンスも変動して当たり前です。集中して仕事ができないことに対してストレスを溜めすぎるのではなく、自分の置かれている環境のなかで最大限のパフォーマンスが出せるようにできればよいのではないでしょうか。

家族に「家で働いている」ということを理解し協力してもらい、なるべく静かで集中しやすい環境を整えるなど自分の努力と周囲の協力でやれることはありますが、限界もあります。オフィスと家でのパフォーマンスの違いについて悩みすぎず、「どうやったら今の制約の中でパフォーマンスを最大化できるだろう」と考えるほうが生産的です。

集中できる環境づくりのための投資を惜しまない

効率的なリモートワークのためには、集中できる環境づくりが必要です。そのためには多少の投資が必要な場合があります。

たとえばモニター、マウス、キーボードをより使いやすいものに買い替えたり、デスクやチェアをより長時間の作業でも快適なものにしたり、騒音が気になるようであればノイズキャンセリングヘッドホンなども有効でしょう。こういったものを購入するとお金がかかりますが、必要経費と割り切ったほうがいいです(10万円も支給されますし)。会社によってはそういった環境整備に対して経費精算を認めたり支援金を支給している会社もありますから、自分の会社でそういったサポートがうけられるか確認してみるといいと思います。

仕事とプライベートの「オン・オフ」を切り替える

リモートワークでは、仕事とプライベートの時間を分離することが非常に難しくなります。うまくメリハリがつけられないと勤務時間後もだらだらと会社のメールやSlackを見たりしてしまい、気が休まらずに疲弊してしまいます。ITエンジニアの方は「仕事が趣味みたいなもの」という方も多く、私もそのうちの一人です。しかし、いままで「オフィス」と「家」という環境によるオン・オフの切り替えができていたものが、リモートワークで常に自宅にいることで、環境による切り替えができなくなってしまいます。特に私も含めITエンジニアの人は「過集中」に陥りがちです。特に一人暮らしだったりすると延々と作業に没頭できてしまうので、過集中に陥りやすいかもしれません。全く集中できないよりはよいのですが、寝食を忘れ作業に没頭してしまうと、生活リズムや生活そのものが破綻してしまう場合もあります。

仕事とプライベートにメリハリをつけ、過集中を防止するためには、自分の中で「切り替えのためのスイッチ」を持つことが重要です。

私の場合は、「調光機能のあるライト」を使って切り替えるようにしています。仕事中は「昼白色で明るい照明」に切り替えます。色温度の高い昼白色の照明は集中力が高まり、生産性が向上する *1 と言われています。そのため、仕事中はより集中できる昼白色のデスクライトを活用します。

仕事が終わったら、デスクライトを電球色に切り替え、明るさも最低にします。これにより、仕事後にリラックスできる環境を生み出すことができます。同じようにPCに向かっていても、照明によって受ける影響は大きく異なります。これ以外にも、「仕事終わりは温かいお茶を飲む」とか、「仕事が終わったらすぐにゆっくりとお風呂につかる」など、自分のなかでスイッチをオフにできるやり方を確立させることが重要です。

節度ある生活を心がける

リモートワークだと通勤時間がない分、朝遅く起きてもいいし最悪パジャマ姿でも勤務できます。そのためついつい夜ふかししたりしてしまいがちです。また、運動不足にもなりがちなので、寝付きが悪くなったりします。

睡眠時間の不足は直接翌日のパフォーマンスに響きます。作業に対するモチベーションが下がったり、ネガティブ思考に陥りやすく将来のキャリアや生活に対する不安が増大してしまうような場合もあります。 特にコロナの影響でネガティブなニュースばかりが報道され、自粛ムードで外に出かけることも憚られる現状では、特に不安を抱えやすい状況にあります。そこに睡眠不足が続くと不眠症になってしまったり、最悪のケースでは鬱状態になってしまう可能性もあります。 睡眠時間は絶対に6時間以上確保しましょう。

運動不足が気になるという方は、近所の散歩や家の中でできる運動を定期的にやるのがいいと思います。私はロードバイクをインドアトレーナー(ローラー台)を使って家の中でトレーニングしています。Zwiftなどのアプリを使うと、世界中の人々と一緒に仮想世界をサイクリングすることができるので、室内の運動に最適です。

そういった環境がない方でも、簡単なラジオ体操程度の運動でも続けることで効果があると思います。今はYoutube等にも簡単にできる体操が紹介されていますし、一時期流行した「リングフィットアドベンチャー」などをはじめてみるのもよいかもしれません。適度な運動は、健康な心身を維持するためには必要なものです。めんどくさく感じる日もあると思いますが、無理をしない範囲で体を動かすことを習慣化しましょう。

長々と書きましたが、人によって最適な働き方や環境はさまざまです。ここで挙げた例は私にとって重要と思う事柄で、これ以外にもいろいろなやり方があると思います。「こんなやり方やルーティーンがあるぞ!」という方は、ぜひTwitterで私に教えてください。

無限の知的好奇心と未知

技術書を読んでいると、たまに「こんなことも知らなかったのか」と思うときがある。周りのITエンジニアとの会話で知らない話題が出てきて恥ずかしく思うときがある。そういう場面に遭遇した時に、「もっとしっかり勉強しないと」と焦る。

それでも、知識不足を恥じて、知的好奇心が尽きない間はまだ大丈夫だ。人間にとって時間は有限で、人間らしい生活を維持しながら学習に充てることができる時間はごくわずかしかない。IT関連の知識だけに絞ったとしてもその分量は膨大で、そのすべてを識ることはそもそも不可能だ。だから焦りすぎる必要はない。周りがどんなに優秀で、自分がこの世で一番無能な人間だと感じたとしても、それはある一点においての話でしかなく、識るべきことが爆発的に膨張しつづける現代においては自分も周囲も等しく「無知」なのだから、自分が無知だと自覚し続けられる限りはまだ大丈夫だと信じている。

幸か不幸か、まだまだ学ばなければならないことも、知りたいこともたくさんある。時間が限られたリソースだとしても、知的好奇心は無限に湧き出て、知的好奇心を燃料にして探り続ける未知の世界も無限にある。それを発掘しつづけられる限りは毎日の学習は苦にならないし、日々の仕事も楽しくやっていける確信がある。

学習は、自転車操業に似ている気がする。学び続けるためには知的好奇心が必要だが、知的好奇心を維持し続けるには学び続けるしかない。知的好奇心は無限だが、発掘しなければ枯渇してしまう。学び続けるためには、学び続けなければならない。そのためには学び続けられる環境を維持するのは自分自身の責務だし、そうやって学び続けて10年、20年経った時にふと振り返り、自分が積み上げてきたものを確認して、前を見るとさらなる未知が永遠に地平線の彼方まで続いていて、その景色に驚嘆する。

そういう人生を歩みたいなぁと、ふと水曜日の朝5時に思い立った。

ひよこ大佐的 リモートワークに役立つデバイス5選

どうも、ひよこ大佐です。

COVID-19(新型コロナウイルス)の影響で、リモートワークを余儀なくされているというITエンジニアの方も多いのではないでしょうか。満員電車に揺られて通勤するのもしんどいですが、全く家から出ないのもそれはそれでフラストレーションが溜まりますよね。

私自身はもともとリモートワークが中心で、同僚や上司とのコミュニケーションもSlackやIRC、ビデオ会議が多いので、自宅ではリモートワークを前提とした環境を整備していました。そこで「在宅勤務をもっと快適にしたい」という方に向けて、私が実際に使用して非常に良かったと感じているデバイスなどをご紹介できればと思います。

「いいディスプレイ、カメラ、マイクを買いましょう」「高速なインターネット回線とPC、いい椅子を使いましょう」というのはリモートワークにおいて当たり前のことですのでここでは言及しません。この記事の趣旨は、「なくてもなんとかなるけど、あるとよりリモートワークが快適になる」という観点でオススメの小物類を紹介することにありますので、ご了承ください。

1) Razer Mouse Bungee V2

f:id:hiyokotaisa:20200429204249j:plain

私は電池交換や接続が不安定になりがちな無線マウスがそこまで好きではなく、自宅のデスクトップではもっぱら有線のゲーミングマウスを利用しています。 マウスバンジーはもともとFPSRTSなどのマウス操作が重要なゲームをもっと快適にプレイするためのデバイスで、私も当初はその目的で購入したものですが、日常作業でも非常に役立ちます。

マウスバンジーは、有線マウスのケーブルを吊り上げることでケーブルのよれやクセによる操作の引っかかりなどを軽減することができます。これだけの説明だとたいしたことはなさそうに見えますが、勤務時間中常に使い続けるマウス操作は、ちょっとした違和感がストレスとして蓄積し、作業効率やモチベーションに影響します。マウスバンジーを活用することでその「ちょっとしたストレス」が取り払えるので、値段以上の効果があると実感できました。ゲーマーではない方にもオススメです。

2) Anker PowerWave 7.5 Stand

f:id:hiyokotaisa:20200429204544j:plain

私のお気に入りのスマホアクセサリーブランド「Anker」のQi対応のスマートフォンなどのデバイスを充電できるワイヤレス充電スタンドです。

ワイヤレス充電の利点はケーブルを刺す必要がないというところに尽きますが、「デスク上にスマートフォンの定位置ができる」点が個人的に非常に気に入っています。定位置があることでデスク上が散らかることを抑制できますし、スタンドになっているのでスマホに通知が来てもすぐに気がつくことができます。充電速度は有線充電と比較すると遅いですが、在宅勤務ではスマホの充電が遅くて困ることはないので必要十分です。

これは余談ですが、私はAnkerのデバイスが割と好きなので、充電ケーブルやモバイルバッテリー、BluetoothスピーカーなどもAnkerブランドの製品を愛用しています。そのうちロボット掃除機も買うかもしれません。

3) TaoTronics LEDデスクライト

f:id:hiyokotaisa:20200429204355j:plain

作業する上で「明かり」は非常に重要なファクターです。例えばリラックスしたり考え事をしたいときは暖色で暗めの照明を、技術書を読んだり作業に集中したいときは寒色で明るい照明がよいとされています。

このLEDデスクライトは、暖色〜寒色、明るさもタッチ操作で操作でき、デザインもスマートでオシャレです。明るさも必要十分ですし、チラついたり文字が読みにくいといったこともありません。私の書斎は間接照明(ディスプレイ裏)を使っているので比較的暗いため、リラックスするのにはよいのですが読書をするには暗かったので不満でした。このデスクライトで明るさを調整できるようになったので非常に満足しています。

4) 6amLifestyle ヘッドホンハンガー

f:id:hiyokotaisa:20200429204423j:plain

ヘッドホンやイヤホンなどをかけておけるハンガーです。机の天板裏に両面テープで貼り付けることができます。

在宅勤務ではミーティングなどでヘッドホンを使う機会が増えるので、その置き場所に悩む方は多いと思います。このハンガーがあると机の下に目立たずに収納できるのでおすすめです。

5) マッキンリー USBポート&電源タップ付 机上ラック

f:id:hiyokotaisa:20200429204449j:plain

ディスプレイなどを上に置くことができる机上ラックです。この製品が優れている点はいくつかあるのですが、大きなポイントとして、「USBハブと電源タップとしても機能する」ところが非常に気に入っています。ガラス製ですので見た目もオシャレです。

私はこの上に34インチの曲面ウルトラワイドモニターを置いて、下にNUC(Hades Canyon)を設置しています。デスク上のスペースを有効活用できるだけでなく、ディスプレイを見る際の目線も高くなるので、作業中の体への負担も軽減できます。

現在この製品は品切れのようですが、似たような机上ラックはいくつかありますのでよさげなものを探してみると良いかもしれません。

皆様の快適なリモートワークライフの一助になれば幸いです。もし「こんなデバイスもオススメだよ!」というのがあれば、ぜひTwitterでこっそり教えてください。

Fedora 31でVagrantが使えなくなったときの対処と、Vagrant 2.2.6をVirtualBox 6.1に対応させる方法

どうもひよこ大佐です。

タイトルの通り、Fedora 31でカーネルのアップデートに伴ってVagrantが使えなくなってしまったので、その際の対処法をご紹介したいと思います。

発生した事象

メインのPC(Intel Hades Canyon NUC)でFedora 31を利用しています。この環境ではAnsible Towerの検証用にVagrantVirtualboxを利用しているのですが、いつも通り dnf updateカーネルの更新を含む更新パッケージを適用し再起動したところ、vagrant upしようとすると以下のエラーが発生するようになりました。

カーネルバージョン:

$ uname -r
5.4.7-200.fc31.x86_64

発生したエラー:

VirtualBox is complaining that the kernel module is not loaded. Please
run `VBoxManage --version` or open the VirtualBox GUI to see the error
message which should contain instructions on how to fix this error.

エラーの指定通り VBoxManage --version を実行すると、以下のWarningが出力されます。

$ VBoxManage --version
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (5.4.7-200.fc31.x86_64) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.
6.0.14r133895

上記指示通りに sudo /sbin/vboxconfig を実行するのですが、以下の通りエラーになります。

$ sudo /sbin/vboxconfig

vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

原因

Virtualbox 6.0はLinux Kernel 5.4.xに対応していないため、エラーが発生します。 以下のChangelogにも、Virtualbox 6.1からサポートしている旨が明記されています。

https://www.virtualbox.org/wiki/Changelog-6.1

Linux host and guest: Support Linux 5.4

Virtualbox 6.1への更新のため、公式サイトからrpmをダウンロードしインストールしました。

Linux_Downloads – Oracle VM VirtualBox

Vagrantでエラー発生

インストールしたところVirtualboxは正常に動作するようになりましたが、今度はVagrantでエラーが発生するようになってしまいました。

Vagrantのバージョン:

$ vagrant --version
Vagrant 2.2.6

発生したエラー

Vagrant has detected that you have a version of VirtualBox installed
that is not supported by this version of Vagrant. Please install one of
the supported versions listed below to use Vagrant:

4.0, 4.1, 4.2, 4.3, 5.0, 5.1, 5.2, 6.0

どうやら、現在(2020/1/10時点)リリースされている最新版のVagrant 2.2.6では、Virtualbox 6.1に対応していないようです。

ワークアラウンド

以下のGitHubのIssueに記載されているワークアラウンドにしたがって対処します。 Vagrant 2.2.6 doesn't work with VirtualBox 6.1.0 · Issue #178 · oracle/vagrant-boxes · GitHub

1. plugin.rb の編集

/usr/share/vagrant/gems/gems/vagrant-2.2.6/plugins/providers/virtualbox/ 内の plugin.rb 内の module Driver (52行目) のブロックの末尾に、autoload :Version_6_1, File.expand_path("../driver/version_6_1", __FILE__) の行を追記します。

   module Driver
      autoload :Meta, File.expand_path("../driver/meta", __FILE__)
      autoload :Version_4_0, File.expand_path("../driver/version_4_0", __FILE__)
      autoload :Version_4_1, File.expand_path("../driver/version_4_1", __FILE__)
      autoload :Version_4_2, File.expand_path("../driver/version_4_2", __FILE__)
      autoload :Version_4_3, File.expand_path("../driver/version_4_3", __FILE__)
      autoload :Version_5_0, File.expand_path("../driver/version_5_0", __FILE__)
      autoload :Version_5_1, File.expand_path("../driver/version_5_1", __FILE__)
      autoload :Version_5_2, File.expand_path("../driver/version_5_2", __FILE__)
      autoload :Version_6_0, File.expand_path("../driver/version_6_0", __FILE__)
      autoload :Version_6_1, File.expand_path("../driver/version_6_1", __FILE__)
    end

2. meta.rb の編集

編集が完了したら、 /usr/share/vagrant/gems/gems/vagrant-2.2.6/plugins/providers/virtualbox/driver/に移動し、 meta.rb 内の driver_map (58行目) のブロックに "6.1" => Version_6_1, の行を追記します。

driver_map   = {
  "4.0" => Version_4_0,
  "4.1" => Version_4_1,
  "4.2" => Version_4_2,
  "4.3" => Version_4_3,
  "5.0" => Version_5_0,
  "5.1" => Version_5_1,
  "5.2" => Version_5_2,
  "6.0" => Version_6_0,
  "6.1" => Version_6_1,
}

3. version_6_1.rb の作成

最後に、2の手順と同じディレクトリ( /usr/share/vagrant/gems/gems/vagrant-2.2.6/plugins/providers/virtualbox/driver/ )で以下のコマンドを実行し、 version_6_1.rb を作成します。

$ sudo wget https://raw.githubusercontent.com/briancain/vagrant/fb4e6985e142da56bad143d70600cd3695c91757/plugins/providers/virtualbox/driver/version_6_1.rb

実行後、念の為パーミッションやオーナーが他のファイルと同じになっているか確認してください。

$ ls -la
合計 172
drwxr-xr-x. 2 root root  4096  1月 10 13:38 .
drwxr-xr-x. 7 root root  4096  1月 10 13:32 ..
-rw-r--r--. 1 root root 15850 11月  8 07:41 base.rb
-rw-r--r--. 1 root root  6188  1月 10 13:34 meta.rb
-rw-r--r--. 1 root root 18521 11月  8 07:41 version_4_0.rb
-rw-r--r--. 1 root root 22909 11月  8 07:41 version_4_1.rb
-rw-r--r--. 1 root root 23969 11月  8 07:41 version_4_2.rb
-rw-r--r--. 1 root root 25784 11月  8 07:41 version_4_3.rb
-rw-r--r--. 1 root root 28392 11月  8 07:41 version_5_0.rb
-rw-r--r--. 1 root root   357 11月  8 07:41 version_5_1.rb
-rw-r--r--. 1 root root   357 11月  8 07:41 version_5_2.rb
-rw-r--r--. 1 root root  3811 11月  8 07:41 version_6_0.rb
-rw-r--r--. 1 root root   357  1月 10 13:38 version_6_1.rb

これで、エラーが解消されました。同じ事象に悩んでいる方は参考にしていただければ幸いです。

OSSU(Open Source Society University)でコンピューターサイエンスを学ぶ

新年明けましておめでとうございます。ひよこ大佐です。

コンピューターサイエンスを基礎からしっかりと学び直したいと思っているITエンジニアの方は多いのではないでしょうか。

私自身、文系大学からそのまま新卒でIT業界に飛び込んだため、基本的な知識は業務上身につけていますが、体系的にコンピューターサイエンスを学ぶ機会がありませんでした。

現在ではオンラインで卒業できる大学院や、edXUdacityなどの大規模オンライン講座(MOOC)により、ハーバードやMITなどの一流大学の良質な講義を無償で受けることもできるようになりました。また、JAISTAIITなどでは社会人でも入学しやすい社会人コースを設けており、働きながらでもコンピューターサイエンスを学ぶことが容易になってきました。

つまり、もはや文系のITエンジニアだったとしても、やる気と時間さえあればいつでもコンピュータサイエンスを学ぶことができる素晴らしい環境にいるわけです。

前述したとおり現在ではさまざまな「学び方」がありますが、「どこから手を付けたらいいのかわからない」「コースが多すぎて混乱する」という方もいるかと思います。今回は「OSSU(Open Source Society University)」というプロジェクトについてご紹介します。

OSSUとは?

OSSUとは、オンライン上の教材を利用してコンピューターサイエンスを自己学習するためのプロジェクトです。edXやcorsera、Youtubeなどのオンラインの教材を組み合わせ、体系的にコンピューターサイエンスを学ぶことができるようになっています。

(GitHubページのSummaryから引用)

The OSSU curriculum is a complete education in computer science using online materials. It's not merely for career training or professional development. It's for those who want a proper, well-rounded grounding in concepts fundamental to all computing disciplines, and for those who have the discipline, will, and (most importantly!) good habits to obtain this education largely on their own, but with support from a worldwide community of fellow learners.

Webページ: ossu.firebaseapp.com

GitHub: github.com

どうやって学習するのか

OSSUのGitHubにある「Curriculum」に沿って学習を進めていきます。初学者であれば、「Core CS」からスタートするのがよいでしょう。基本的なCSの知識をすでにある程度持っている方は、「Advanced CS」から始めることもできます。

始めるコースを決めたら、あとはカリキュラムに書かれている「Duration」や「Effort」の時間を目安に、学習を進めていきます。

例えば、Core CSの「How to Code - Simple Data」であれば、edX上で提供されているコースなので、edXでEnrollし学習を進めます。コースでの学習が完了したら、カリキュラムで指定されている次のコースに進みます。

詳細なコースの一覧については、GitHubのページを参照してください。 https://github.com/ossu/computer-science/blob/dev/README.md

学習すると何が得られるのか

edXや各種サービスに散らばっているコンピューターサイエンスの教材を基礎から進めていくことができるため、無料で体系的にコンピューターサイエンスを学ぶことができます。もし「コンピューターサイエンスをどう学んだらよいかわからない」という方で、英語に抵抗がないのであればぜひ活用してみてください。

OSSUが向いている人

  • 独学が苦にならない人
  • できるだけお金を使わずに学びたい
  • 学位が欲しいのではなく、コンピューターサイエンスを学び直せればよい
  • 英語の教材でも苦痛ではない

OSSUが向いていない人

  • 学位が欲しい
  • 一緒に学ぶ仲間がほしい
  • 日本語でコンピューターサイエンスを学びたい

学習の方法にはそれぞれ向き、不向きがありますので、自分にとってどのような方法が良いのか、考えながら学習スタイルを決めると良いと思います。

私もこれから地道にOSSUの学習を進めていきつつ、学習レポートなども定期的にアップできればと思います。

ひよこ大佐とロードバイク: (1) ロードバイク納車

2020年、明けましておめでとうございます。今年も宜しくお願いいたします。

私のTwitterをフォローしている方はご存知だと思いますが、ロードバイクにハマり、遅いながらも週末にロングライドに出掛けたり、Zwiftでバーチャルライドを楽しんだりしています。2020年はじめての投稿は、そのロードバイクを購入した経緯と、「ひよこ大佐、新宿で立ち往生」事件についてお話したいと思います。

購入までの経緯

転職をきっかけにロードバイクを購入することになるのですが、ロードバイクが欲しいと思ったのはこれがはじめてではありません。

もともと中高生のころにルイガノのTR1という安いクロスバイクに乗っていたので、スポーツバイク自体は経験がありました。しかし、ロードバイクは「細いタイヤで怖い」「スポーツ志向の人が乗るもの」というイメージがあり、価格の高さもあってずっと手を出せませんでした。

しかし転職を機に、いままでずっと気になっていたけれども手を出せなかったロードバイクを買いたい!という気持ちが強くなりました。自分自身はとんでもなく運動音痴で、走れば常にビリ、体育の授業は本当に嫌いで、高校の部活で1年くらいテニスをしていた程度で、社会人になってからはことさら運動とはほとんど無縁でしたが、自転車で走ること自体は好きだったので、いつかその自転車の最先端であるロードバイクには乗ってみたいとずっと思っていました。

最初は予算の兼ね合いもあり、GIANTやルイガノなどの比較的低価格なモデルを検討していましたが、TREKのサイトを見たときにEmonda ALR5のマット塗装の美しさに一目惚れしてしまい、その日のうちに六本木のTREKショップで思い切って購入しました。確か18万ぐらいしたと思います。

f:id:hiyokotaisa:20200102003618j:plain

TREK EMONDA ALR5

ただ、ロードバイクを買えばそれで終わりではありません。「他にも揃えないといけませんよ」と店員さんに言われ、サイクルコンピューターとサドルバッグとライトはBontragerのものを購入しました。

ペダルとヘルメット、ポンプや工具類はTREKで買うと高かったので、Amazonで揃えました。PWTの工具は安くてそこそこ使えるのでオススメです。

まだ転職したばかりだったのでロードバイクとその他もろもろを合わせて20万の出費は痛かったですが、初めて納車された瞬間は「ああ、このカッコいいロードバイクが自分のものになるんだ」と感動したのを覚えています。

納車初日、そしてはじめてのパンク

2018年4月、TREK六本木で無事にエモンダを受け取りました。乗り出すと、クロスバイクと比較にならないほどスイスイ進むロードバイクに感動しながら、40km近く離れた埼玉の自宅を目指し走り始めました。慣れない道で迷ったりしながらも、新宿に着くまでは比較的順調な道のりでした。

事件は新宿で起きました。大通りを右折したところで「あれ?進まないな」と思い、タイヤを見てみると後輪がペシャンコになっていました。どうやら路肩のガラス片か何かを踏んでしまったようで、完全にパンクしてしまっていました。

幸いパンク修理キットは持っていたので、とりあえず自力で交換をしようとスマホで手順を調べながらおそるおそる作業をはじてました。

しかしはじめてのパンク修理、うまくタイヤを外してチューブを入れ替えることができません。30分ほど格闘しますが、外れる気配もなく、全くどうにもなりません。

「もうこれはプロに頼むしかない」とGoogle自転車店を探すと、まだ閉店していないスポーツサイクルショップの大手Y店がヒットしました。「これでなんとかなるかもしれない」と店の前まで押して歩き、店のドアを開けると店員さんに怪訝な顔をされてしまいました。めげずにパンク修理をお願いできるか聞いてみたところ、「いやーあと30分で閉店するので無理ですね」とあっさり断られてしまいました。結局店を追い出されてしまい、状況はまた振り出しに戻ってしまいます。

頼みの綱のY店に断られ、今から六本木に戻ることもできず、夜9時過ぎに新宿のど真ん中で、走れないロードバイクを抱えたまま僕は途方にくれてしまいました。家まではまだ30km以上あります。その時は鍵もないので、駐輪場に置いて電車で帰ることもできません。もちろん輪行袋なんか持ってないので、電車やタクシーに載せて帰ることもできません。 

それでも何とか家にたどり着かなければ、明日の仕事にも行けなくなってしまいます。そのためには、どうにかしてパンクを直す必要がありました。

まだ空いている自転車店はないかと必死にGoogleマップを調べたら、たった1軒だけ、小さな自転車店が営業中になっていました。

「これでだめなら自宅まで30km歩くしかない」と祈るような気持ちで電話を掛けたら、店主の方に「もうそろそろ閉店するけど、修理するからとりあえず持っておいで」と言われ、思わず泣きながら「すぐいきます!」と叫びました。

1kmほど離れた店まで自転車を担いで走り、すぐにパンクを直していただけました。夜遅くに嫌な顔せずに修理してくれたうえ、温かい声をかけていただいた「プロジェクト・エス」の店主の方には本当に今でも感謝しています。

プロジェクト・エス

結局18時過ぎには六本木のショップを出発したのに、家についたのは23時過ぎでした。何度も坂で脚が攣り、お尻が痛くなり、ヘトヘトになりながらなんとか帰宅し、「絶対にパンク修理を練習しよう」と心に誓いました。

こうして無事(?)ロードバイクを入手する流れとなりました。

(2)につづきます。