メインコンテンツまでスキップ

snake

Microsoft Surface 3にArch Linux系のAlterLinuxをインストールした際に、Wi-FiとBluetoothが動作しない問題に遭遇したので解決策をまとめておきます。

本問題に遭遇したのは、執筆時点から1ヶ月以上前です。現在では修正されている可能性があります。

問題

Arch Linux系OSをMicrosoft Surfaceへインストールした際にWi-FiとBluetoothが有効にならなず、インターネット接続が不可能になる。

Wi-Fi、Bluetoothが有効にならず、そもそもアイコンが現れない。Wi-FiやBluetoothが存在していないパソコンであるかのような動作となる。

解決策

Arch Linuxはarchlinux/svntogit-packages@a12e069で、linux-firmwareパッケージを分離しました。これによって必要に応じてパッケージを自分自身でインストールすることが必要になりました。その為、対応するlinux-firmwareパッケージをインストールし、再起動することで解決されます。

Surfaceの場合、linux-firmware-marvell をインストールすることで問題が解消されました。

解決策1:CLIより以下のコマンドを実行し、インストールする。

$ pacman -S linux-firmware-marvell

解決策2:インターネット接続がない環境の場合、パッケージを別PCでダウンロードしインストールする。

以下より、linux-firmware-marvell をダウンロードし、USBメモリなどでArch Linuxパソコンへコピーする。

Arch Linux - linux-firmware-marvell 20220509.b19cbdc-1 (any)

右上のPackage Actions内、Download From Mirrorよりダウンロード可能。 CLIより以下のコマンドを実行し、インストールする。

$ pacman -U <ファイル名.pkg.tar.zst>

参考

upgpkg: linux-firmware 20220119.0c6a7b3-2: split package to reduce do… · archlinux/svntogit-packages@a12e069

linux-firmware package 20220119 update breaks WiFi support on Surfaces with Marvell network devices · Issue #759 · linux-surface/linux-surface

Wifi and Bluetooth down (latest kernel 5.16.9) · Issue #742 · linux-surface/linux-surface

Wifi and Bluetooth not working on latest kernel · Issue #723 · linux-surface/linux-surface

snake

lucaslorentz/caddy-docker-proxy で発生するエラー「Service is not in same network as caddy」に対する解決策です。

前提

Docker Swarmでlucaslorentz/caddy-docker-proxy をデプロイし、各種コンテナへのリバースプロキシ用のラベルを適切に設定されている状態。

特に他にエラーが見られず設定に問題がないのにも関わらずエラーが発生する場合。

エラー内容

エラーは以下の通りです。

"msg":"Failed to get ingress networks" "error":"Cannot find container id in cgroups" "msg":"Service is not in same network as caddy"

修正方法

環境変数の CADDY_INGRESS_NETWORKS に属するネットワークを設定する。

例えば、externalの public ネットワークに参加しており、 public に属するコンテナへプロキシを行う場合は、 CADDY_INGRESS_NETWORKS=public と環境変数を設定する必要がある。

docker-compose.yml 例

version: "3.7" services: caddy: image: lucaslorentz/caddy-docker-proxy:ci-alpine ports:

  • 80:80
  • 443:443 environment:
  • CADDY_INGRESS_NETWORKS=public networks:
  • public volumes:
  • /var/run/docker.sock:/var/run/docker.sock
  • caddy_data:/data restart: unless-stopped

networks: public: external: true

volumes: caddy_data:

snake

書いたはいいものの、結論も結論までの道筋もクソであった為、お蔵入りしていた下書き投稿です。眠らせといてもどうしようもないので、公開はしますが、中身はクソであることを甘んじて受け入れて、読んでください。


3月になると、大学への入学を控えている高校生の方々は、大学生活に向けて家、家具など様々な物を揃えていく段階にあるかと思います。この投稿では、その中でも大学生活における学業に直接的に影響を与える可能性が高いパソコンについて考えてみます。

今の世の中でインターネットで検索かければ、「大学生向けのおすすめパソコン」や「どのようなパソコンを買うべきか」なんて記事はいくらでも出てきます。もしかしたら、大学から推奨パソコンなんて名目で、おすすめパソコンのチラシが送られてきているかもしれません。しかし、それらが本当に新大学生であるあなたに適したパソコンであるのかは、実際に買って大学生活を送ってみないと分かりません。可能な限りパソコンと自分の大学生活のミスマッチを避けたいと思いませんか。

ということで、この記事では新大学生が送るであろう大学生活を考え、本気で新大学生に適したパソコンを考えてみます。より正確には、新大学生が後悔しない最高のパソコンの探し方を考えてみます。

タイトルでは新大学生と銘打っていますが、専門学校であっても当てはまる可能性がありますし、高校生、新社会人であっても役立つ可能性があります。

この投稿を読むにあたっての前提と注意

前提として、大学から推奨されるパソコンや家電量販店などでおすすめされるパソコンやそのビジネスモデルを否定する投稿ではありません。この投稿はそれらが本当にあなたのために勧められたパソコンであり、あなたにマッチするパソコンであるのかを自分の頭で考える手助けの1つになることを期待して執筆しています。

後、私は1人の人間です。可能な限り、間違いは減らそうとしていますし、偏見で語るときには偏見であると明示することを心がけています。しかし、それでも間違いや偏見を消し去ることはできません。この投稿はあなたにとっての1つの判断材料に過ぎません。これだけを信じることは新たな間違いへ近づく一歩になる点に注意してください。

大学生活について考える

そもそも大学生活って何だろうかという大前提について考えてみます。あなたがこれから入学する大学で何をして、どのようなことをしたいのかによって、どのようなパソコンが求められるのかが変わってきます。まずは、3つの観点で考えていきます。

初めに大学生活の期間から、大学生活を考えてみます。大学といえば一般的には4年制大学が挙げられます。もしも、医学部・歯学部・獣医学部への進学の場合は6年制です。大学の区分ではありませんが、専門学校への進学である場合、1年制から4年制のいずれかです。つまり留年や休学、留学を考えない場合、基本的に1年から6年で卒業します。卒業までに1年を要する場合と6年を要する場合では、パソコンの使用頻度や耐久性、保証に差が出てきます。単純に考えても、あなたにとって最高のパソコンの定義は、この時点で異なってくる可能性が高いです。

次に大学で何をするかから、大学生活を考えてみます。世の中にはたくさんの学部学科が存在しており、大学によって勉強する内容や実際に何をするのかなどは千差万別です。そのため明確にこの学部学科の場合、これがおすすめ!と安易に書くことはできません。*というか、この書き方をしている場合、個人的には信用できません。*そこで、これから行く大学で受講したい講義の内容などを調べて、どのようなことをするのか、想像してみてください。それによって、あなたにおすすめのパソコンが変わってきます。偏見が混じっていますが、例を挙げると文学部・法学部の場合、レポートをたくさん書くことがあっても、大半はレポートを書くだけで済む場合が多いかもしれません。情報学部や理工学部の場合、レポートを書く他にコンピュータサイエンス領域などでパソコンを酷使する事があるかもしれません。理学部や薬学部の場合、多くのデータを基に分析を行ったり、専門領域に特化したソフトウェアなどを利用する事でパソコンにそれなりの処理能力が求められるかもしれません。

最後に大学以外で何をするかから、大学生活を考えてみます。大学生活の中心には大学が常に存在すると考えていいですが、少なくとも日本の大学において大学が生活の全てになることは考えられないです。そうなるとゲームをやってみたかったり、動画編集をしてみたいと考えることもあるかもしれません。その時、パソコンが耐えられるかは非常に重要になってきます。将来的な自分の興味関心の全てを組み込んで、パソコンを考えることはできないかもしれませんが、現時点の興味関心に基づいて考えることはできます。将来的なパソコンと大学生活のミスマッチを防ぐためにも、大学生活のQOLのためにもここは非常に重要です。

3つも面倒くさい観点について考えてきたことによって、あなたの大学生活の解像度が少し増したのではないないでしょうか。ここで考えたことを基に実際にパソコンの事について考えてみます。

パソコンを選ぶ際に見るべき項目

現時点であなたの中には、自分が送るであろう大学生活が何となくイメージされているかと思います。では、そのイメージを実際のパソコンに当てはめていきます。

価格

あれこれ言ってきましたが、結局お金は大事なので、ちゃんと予算を決めましょう。パソコンというものは厄介で、良いものを求めだすと際限なく価格が上がっていきます。ちゃんとこのぐらいの金額ならパソコンに払える、払っても良いというラインを決めておいてください。ある程度の自由度を持ってパソコンを決めたいのであれば、10万円±1万円ぐらいで考えておきましょう。ここを下回ると極端にパソコン選びの自由度が下がる印象があります。

保証

意外と重要な項目かもしれません。可能であれば、この恩恵を受ける必要がないことを願っておきますが、人の願いが儚く敗れることは、この混沌とした世の中で常に起きうることです。

多少、金額が高くなっても保証があることは安心につながるかもしれません。大学生活を送る期間と実際の保証期間が一致しているかに注意してください。4年間大学生活を送るのに、1年で保証が切れてしまっては困ることになるかもしれません。

ちなみに大学推奨パソコンは高いかもしれませんが、家電量販店やメーカーで購入するよりも確実に大学への在籍期間中の保証が付いています。

画面サイズ

完全に好みです。ただし少なくとも13インチ以上のパソコンを選ぶことをおすすめします。様々なディスプレイを使ってきた経験の中で、13インチ未満は作業する時に不便でした。単純に表示できる情報量が少なく、生産性が圧倒的に低いです。

サイズが大きいと本体サイズと重量が比例して重くなる点は注意が必要です。もしも持ち運ぶ事を考えているのであれば、大きければ良いわけではないという事を心に止めておく必要があります。

OS

度々議論されている点です。まず前提として一般的には、世の中にWindowsが主流です。ただし、一部の業界や用途によっては、他OSが主流で活躍している事もあります。

前提を踏まえて、以下によく目にするOSを列挙します。各OSのバージョンなど細かいことは省略します。

  • Windows

  • macOS

  • Linux

  • Ubuntu

  • Debian

  • Arch Linux

  • Fedora

  • Linux Mint

商業的に開発・販売されているデスクトップ向けOSとして、WindowsとmacOSの2つがあります。世の中の人に知ってるOS教えてと聞けば、ほぼ90%ぐらいの人がこの2つを挙げるでしょう。そのぐらい知名度があります。

対象的に非商業的に開発されている事が多いデスクトップ向けOSとして、Linux系があります。詳しく語ることはしませんが、Linuxという元となる物があり、それに色々な人が趣味趣向に基づいて色を付けて、Ubuntu、Debian、Arch Linux、Fedora、Linux Mintなど様々なOSが生まれました。これらは多くの場合、非商業的に開発され、配布されることが多いです。もちろん商業的に開発・販売されている場合もあります。ここではまとめてLinuxとして語ります。(技術系のクラスタの方々は怒らないで、ここはLinuxについて深く語る場所でもなければ、歴史を語るところでもないのです。)

各OSについて簡単な説明の上で、あなたに適しているOSを考えてみます。初めに大学推奨パソコンに搭載されるOSを確認してみてください。大学推奨パソコンが本当の意味であなたに適しているかは分かりませんが、少なくともその大学において困ることがないパソコンであり、大学推奨パソコンに搭載されているOSは、大学で最も使われており、講義で最も説明に使われているものであると考えられます。ということは、あなたが大学生活を送る上で失敗することのないOSの選び方は、大学推奨パソコンと同じOSを選ぶということになります。

では、大学推奨パソコンに搭載されているOSと異なるOSが搭載されたパソコンを買うと失敗するかと言われれば、そうでもありません。パソコンにどのOSが搭載されていても、このパソコンでこれができて、こちらではできないなんて事は基本的に発生しません。面倒なやり方であったり、似通った代替ソフトウェアで乗り越えられる事が多いです。解決策に向かってちゃんと調べ、行動を起こせる人にとっては、OSの壁は小さな障壁だと思います。

CPU

パソコンの処理速度にダイレクトに影響します。古い型番であれば、それだけ処理速度は落ちますし、新しい型番であればあるほど、基本的には処理速度が上がります。そのため可能な限り新しい物を選ぶことが、比較的重要となります。

世の中に出回っているCPUは、Intel社が作るCPUとAMD社が作る大きく分けて2つの種類のCPUがあります。ここではそれぞれのCPUが最新の型番であるかの見極め方を簡単に説明します。

Intel

IntelのCPUで一般に流通しているものには、Intel Coreシリーズがあります。例として、Intel Core i7-12700FやIntel Core i5-12600Kなどが挙げられます。

ちょっと詳しい方なら分かるように、Intelは初めに大きなカテゴライズとしてCore i9、Core i7、Core i5、Core i3が用意されています。i9が最も処理性能が高く、i3が最も処理性能が低いものであると、考えていただいて大丈夫です。Core i3だから避けるべきであるかと問われれば、そうでもないです。

次のカテゴライズとしてCore i3/i5/i7/i9に続く数字とアルファベットがあります。数字とアルファベットにはそれぞれ細かな意味が含まれていますが、それらは正直あまり気にする必要はありません。重要なのは、数字の最初が重要です。一部例外がありますが、Intel Core i7-12700Fであれば12が重要です。この12はIntel Coreシリーズの第12世代のCPUであることを指しています。例えば、Intel Core i7-10700の場合は、Intel Coreシリーズの第10世代CPUとなり、これがIntel Core i7-8700Kの場合は、4桁なのでIntel Coreシリーズの第8世代CPUとなります。この世代が重要であり、執筆時点でIntel Coreシリーズの最新は第12世代です。世代の中での処理能力は、更にあとに続く数字やアルファベットで分かってきますが、何よりも世代を読み解くできる事が重要です。これだけでやばいパソコンなのかを見極められます。

AMD

AMDのCPUで一般に流通しているものには、Ryzenシリーズがあります。例として、Ryzen 9 6980HSやRyzen 5 5600HSなどが挙げられます。

AMD RyzenシリーズのCPUもIntel Coreシリーズと同様に、大きなカテゴライズとしてRyzen 9、Ryzen 7、Ryzen 5、Ryzen 3が用意されています。Ryzen 9が最も処理性能が高く、Ryzen 3が最も処理性能が低いものであると、考えていただいて大丈夫です。Ryzen 3だから避けるべきであるかと問われれば、そうでもないです。

次のカテゴライズとしてRyzen 9/7/5/3に続く数字とアルファベットがあります。数字とアルファベットには、細かな意味が含まれていますが、正直あまり気にする必要はありません。重要なのはIntel同様に世代です。見方はIntelと同じで、最初の数字に着目しましょう。Ryzen 9 6980HSの場合、6980HSの6です。これはAMD Ryzenシリーズの第6世代CPUである事を指しています。Ryzen 5 5600HSの場合は、5600HSの5で、AMD Ryzenシリーズの第5世代CPUである事が分かります。AMDの場合もIntelと同様に世代が重要です。世代が新しいものが基本的には処理性能が高いです。

最終的にどのCPUを選ぶべきなのか

Intelであろうとも、AMDであろうとも気にするようなことではありません。厳密にいえばちゃんと明確に差がありますが、一般的に使われているソフトウェアのうち99%で、差を感じることなく扱えるレベルになっています。

ただしどちらを選んだとしても処理性能は重要です。可能な限り新しい世代のCPUを買うことをおすすめします。

ストレージ

悩むことが少ない項目ですが、変に選ぶと後悔する可能性が高い項目の1つです。正直、ストレージなんて無くても困らない程度には世の中のテクノロジーは進化しており、その進化の恩恵を、誰もが受けられるような便利な世の中になっています。

一例として、オンラインストレージを挙げましょう。有名なものとしてはGoogle Drive、One Drive、Dropbox、iCloudなどがあります。これらサービスはいずれもユーザー登録をするだけで、無料で誰でもファイルが保存できるようになります。大学生の場合、大学の契約によってGoogle DriveやOne Driveに、ほぼ無制限にファイルを保存できるかもしれません。

こうなってくると、インターネット接続環境さえ整っていれば、ストレージはほぼ必要ないがないと考えられます。では、搭載ストレージが64GBや126GBのパソコンでも問題ないのでしょうか。恐らく、問題があります。考えられる問題点を挙げていきます。

1.インターネット接続環境が必ずあるとは考えにくい。

この世の中インターネット接続環境は沢山あります。しかし、遠方へ行った時に、常にすぐにつなげるインターネット接続環境があるとは言えません。あったとしても、速度が不十分であることも考えられます。となると、ローカルストレージの需要というのは、一定見出すことができます。

2.OSや追加ソフトウェアのためにローカルストレージが必要。

OSや追加ソフトウェアは、基本的にローカル上に存在している必要があります。近年ではクラウドで扱えるものも増えてきましたが、金銭的なコストや実用性の面から、あまり普及していません。そのためやはり、ローカルストレージの需要は一定存在しています。

3.OSのアップデートができない。

これは主にWindowsが搭載されたパソコンで見られる現象です。過去にWindows 7からWindows 10へアップグレードする際、ユーザーは20GBものストレージ容量の確保が必要とされました。もしもパソコンのストレージ容量が32GBだった場合、半分以上です。64GBであっても3分の1程度となります。様々なソフトウェアやファイルがダウンロードされている状況を考えると、20GBも確保するのは難しいかもしれません。そのため予めある程度、大きな容量を確保しておくことが望ましいです。

しかし、ストレージ容量が小さい時に問題点がある一方で、そこまで大きな容量が必要かと問われると、別に必要でもないという答えになってしまいます。オンラインストレージの他にUSBメモリや外付けHDDのような、後付で容量を増やす手段自体は存在しています。

大容量である必要はありませんが、小さいと困ることがあるので、少なくとも216GB、ある程度の余裕を持てるのであれば512GBのストレージを確保することをおすすめします。

Office搭載パソコンは必要か

パソコンを購入するにあたって、確認するべき項目は一通り理解しているかと思います。しかし、その項目の中には大学生活において必要不可欠なソフトウェアであるオフィスソフトに関する言及がされていません。そこでレポートを書いたり、発表を行う場面で大活躍するオフィスソフトとオフィスソフト搭載パソコンについて考えてみます。

あまり知られていませんが、オフィスソフトには様々な種類があります。最も有名なオフィスソフトは、Microsoft Officeです。これはマイクロソフト社が開発・販売するオフィスソフトです。他のオフィスソフトとしては、WPS OfficeやLibre Office、Apache Open Officeなどが挙げられます。一般的に販売されるパソコンにオフィス搭載と書いてあれば、8割の確率でMicrosoft Office、2割の確率でWPS Officeが搭載されています。偏見にあふれていますが、個人的肌感覚としてこのぐらいの確率です。

オフィスソフトについて簡単に知った所で、本題であるオフィスソフト搭載パソコンの必要性について考えてみます。オフィスソフトには様々な種類が存在している事について触れましたが、それぞれのオフィスソフトウェアの価格を比べてみます。

Microsoft Officeは買い切りとサブスクリプションサービスの大きく2つの料金形態が存在しています。買い切りのHome & Business 2021の場合は約4万円であり、サブスクリプションサービスのMicrosoft 365の場合は年間約1万3000円です。大学によっては契約によってMicrosoft Officeが学生に対して無償になっていることが多いです。というよりも、無償になっていない日本の大学機関は見たことがありません。

WPS Officeは買い切りのみです。買い切りのWPS Office 2 for Windows Standard Editionの場合は約6000円です。

Libre Office、Apache Open Officeは、オープンソースで開発が進められており、無償で利用できます。

平時より無料で使えるオフィスソフトが存在しており、最も有名なMicrosoft Officeに至っては、学生である間は無償で利用可能です。学生生活の間だけ使うことをとりあえず考えるのであれば、わざわざオフィスソフト分の価格が上乗せされたオフィスソフト搭載パソコンを購入する必要はありません。

適したパソコンを探す

これまでの過程で、具体的なスペックやどの項目に目を向けて選ぶのが良いのかをある程度理解しているかと思います。そしたら、次に実際のメーカーパソコンなどから自分に適したパソコンを探し出します。

全員にとって最も適したパソコン探しの方法を提示することは非常に難しいです。なので、あなたにとって最善だと思う手段で探すことをおすすめします。

ここではあくまで一例として、インターネットのウェブサイト「価格.com」でパソコンを探す方法を提示します。価格.comは、株式会社カカクコムが運営する様々な商品の価格比較ができるウェブサイトです。

���i.com

今回はノートパソコンを探してみます。このページより、ノートパソコンについて詳細な条件を設定しながら検索することが可能です。

ノートパソコン スペック検索

これまで想像してきた生活に必要不可欠なオプションのみ入力して検索をしてみてください。そうすると、条件に一致するノートパソコンが一覧で表示されます。

どこで購入するべきなのか

ここまでの過程でどのような大学生活を送るのか、そしてそれに適した具体的なパソコンスペックが何であるかも理解しているかと思います。その上でどこで購入するべきなのでしょうか。

答えは非常に単純で、「好きに買えばいい」です。オンラインで買うでも、実店舗で買うでも、どちらでもそれぞれ利点があります。一番の問題とするべきなのは、目当てのパソコンを購入し、手に入れることとができるのかであって、その手段は対して重要ではありません。

個人的には長期間使うパソコンなので、実際に店舗へ足を運び触れて見ることをおすすめします。元も子もないですが、結局の所、気に入って長く使えるパソコンを買うべきです。それを見極めるには、実際に見て触れてみるのが一番効果的です。

新大学生に適したパソコン

正直書いているうちに話しの方向性が分からなくなりました。しかし、ここに書いてあるパソコンの選び方は、数ある正しいパソコンの選び方の中の1つであると思います。

この投稿からあなたにとって最高に適したパソコンを購入できることを願っていますが、最初に述べたように、この投稿はあなたにとっての1つの判断材料に過ぎず、これだけを信じることは新たな間違いへ近づく一歩になる点に注意してください。

最後に信じるべきは自身の判断であり、自身の判断を信じられるものへと昇華させるのは自分自身です。それによって導き出された最高の答えが、あなたにとっての最高のパソコンとなります。

snake

Docker Engineが標準的に提供するオーケストラレーションツールであるDocker Swarmについて、マネージャーノードはいくつが良いのかが分からなかったので、簡単に調べました。それについてちょっとだけまとめておきます。基本的に語っていることは公式のドキュメントと大差ありませんので、より詳細で正確な情報を知りたい場合は、公式ドキュメントをご確認ください。

Docker Documentation

※この投稿で言う「Docker Swarm」は、Docker Engineに標準的に組み込まれているSwarm modeを指しています。

Docker SwarmのマネージャーノードはRaftコンセンサスアルゴリズム(分散合意アルゴリズム)によって状態管理が行われます。通常、このアルゴリズムについて詳しく理解する必要はありませんが、概要を理解することでマネージャーノードの数を決定する役に立ちます。

マネージャーノードの数とパフォーマンス

Docker Swarmでクラスターに追加できるマネージャーノード数には、制限がなく、追加しようと思えばいくらでも追加することができます。基本的な考え方として、マネージャーノードの数が多ければ多いほど、障害耐性が強くなります。しかし、ほとんどの場合でマネージャーノードの増加はパフォーマンスの悪化を引き起こします。これは単純にノードの追加・削除といった処理を多数のノードで行う必要があるためです。数が増えればその分パフォーマンスが悪化します。

マネージャーノードとquorum

Docker Swarmでマネージャーノードが何らかのタスクを実行する際には、quorumと呼ばれるものが必要です。quorumは分散システムでよく利用されるものであり、処理の整合性を保つために使われます。Docker Swarmでは、このquorumが全マネージャーノードの半数を超過する必要があります。これは単純な議決のように考えることができ、参加者の半数を超過した数が賛同しなければ、実行することができません。

注意点:quorumは全マネージャーノードの半数を超過している必要があります。6ノード存在する場合、半数の3の超過、つまり4以上のquorumが必要です。

では、以上を踏まえてquorumが常に半数以上確保できる環境を考えてみます。

マネージャーノードが1つである場合、1つのマネージャーノードが必要です。もしマネージャーノードが1つダウンした場合、クラスターではタスクが実行できなくなります。この場合、必要なquorumが1となる為、1つでもダウンすると必要quorumに達しません。

マネージャーノードが2つである場合、2つのマネージャーノードが必要です。もしマネージャーノードが1つダウンした場合、クラスターではタスクが実行できなくなります。この場合、必要なquorumが2となる為、1つでもダウンすると必要quorumに達しません。

マネージャーノードが3つである場合、3つのマネージャーノードが必要です。もしマネージャーノードが1つダウンした場合、クラスターでのタスクが実行可能です。この場合、必要なquorumが2となる為、1つのダウンまでは許容されます。2つダウンした場合は、必要quorumに達しません。

マネージャーノードが4つである場合、4つのマネージャーノードが必要です。もしマネージャーノードが1つダウンした場合、クラスターでのタスクが実行可能です。この場合、必要なquorumが3となる為、1つのダウンまでは許容されます。2つダウンした場合は、必要quorumに達しません。

同様の考え方でそれ以上の数の場合でも考えていくことができます。

quorumについて、以下に簡単にまとめます。

Docker Swarmでは:

  • 最大 (N-1)/2 までの障害が許容されます。
  • クラスターでのタスク実行には (N/2)+1 ノードのquorumが必要です。

マネージャーノードの耐障害性

これまでの内容を踏まえ、マネージャーノードの耐障害性について考えていきます。

以下はマネージャーノード数が1~9の場合に必要なquorumと、ダウンが許容されるノード数を表にまとめたものです。表は、「Administer and maintain a swarm of Docker Engines | Docker Documentation」から引用しています。 マネージャーノード数quorum許容値110220321431532642743853954 マネージャーノード数が偶数(2, 4, 6, 8~)である場合、耐障害性に対するメリットはありません。例えば、マネージャーノード数が 4 である場合 2ノード 以上がダウンすると、quorumが足らなくなります。しかし、マネージャーノード数が 3 である場合も同様に 2ノード 以上のダウンでquorumが足らなくなります。マネージャーノード数が 3 もしくは 4 の場合のどちらであっても、ダウンが許容されるノード数は 1 です。

そのためマネージャーノード数は奇数(1, 3, 5, 7, 9)であることが、望ましいです。

適切なマネージャーノード数

最後に適切なマネージャーノード数について考えます。とはいえども、ここまで流れで読んできていれば、何となく分かっているかもしれません。

クラスターの耐障害性を確保するために、マネージャーノードが複数であることは必要です。Docker Swarmでは、マネージャーノードがなければクラスターでタスクの実行が不可能になるためです。

  • 通常、クラスターを構築する場合、マネージャーノード数 3 は目指すべき最低限のラインです。
  • クラスターが中規模である場合は、マネージャーノード数 5 を目指すべきです。
  • クラスターが大規模である場合は、マネージャーノード数 7 を目指すべきです。

中規模は数百のノードである場合を指し、大規模は数千のノードである場合を指します。この規模感のノード数は、殆どの場合エンタープライズなので、個人で検証することは難しいです。そのため明確な根拠を出すことができません。

では、上記よりも更にクラスターの規模が大規模であり、マネージャーノードが不足していると感じている場合は、マネージャーノード数を 9 にするべきでしょうか。この場合は、増やすべきではないという答えになります。

Dockerの公式ドキュメントでは、次のように言及されています。

Docker recommends a maximum of seven manager nodes for a swarm.

Important Note: Adding more managers does NOT mean increased scalability or higher performance. In general, the opposite is true.

How nodes work | Docker Documentation 雑に翻訳すると以下のようになります。

Dockerでは、Swarmに対して最大7のマネージャーノードが推奨されています。 注意:マネージャーノードを追加しても、スケーラビリティーの向上やパフォーマンスの向上には繋がりません。通常、その逆が起こります。

一切の効果がないと断言することは私にはできませんが、少なくとも公式ドキュメントで非推奨である旨が明示されています。

参考

Administer and maintain a swarm of Docker Engines

How nodes work

Pros and Cons of running all Docker Swarm nodes as Managers?

How to handle when leader node goes down in docker swarm

snake

本投稿はNoxPlayerの提供会社Noxからの提供で執筆を行っています。

世界には数々のAndroidエミュレーターが存在しています。しかしながら、その多くのエミューレータが共通して、Hyper-VやWSLなどの仮想環境と共存できない問題を抱えていました。

人によってはHyper-Vとの共存が可能であることが重要です。しかし、この問題に対策を行い共存可能とするAndroidエミューレータが現れました。数多くのAndroidエミューレータが存在する市場の中でも、一際大きなシェアを持っているエミュレータである「NoxPlayer」がHyper-Vと共存を可能とするアップデートを公開しました。

NoxPlayerとは

ノックスデジタルエンターテインメントが開発を行うAndoridエミュレータであり、2017年6月から日本での配信が開始されています。動作が軽量で快適であるとして多くのユーザーから、好評なAndroidエミュレータです。

NoxPlayer公式サイト-スマホゲームをPCでプレイ!おすすめの無料なAndroidエミュレーターをダウンロード

アップデート内容について

Hyper-VやWSLといった一部の開発者にとって欠かせない機能と、NoxPlayerが共存可能となります。具体的には、Hyper-VやWSLにまつわる機能をオフにすること無く、NoxPlayerをWindows上で動作させることが可能となります。

Windows 11では、AmazonストアアプリがWindows上でどうさせることが可能になる予定ですが、そのWindowsアップデートにも今後対応予定のようです。また、Windows 10のGoogle Playゲームが動作する環境でもNoxPlayerが動作するよう対応がされる予定のようです。

Hyper-Vとの共存による利点

WSLやHyper-Vを使う事が数多くある開発者のQOLがとんでもなく向上する可能性があります。普段遣いのパソコンと開発用のパソコンが同じで、更にはゲームなどもやりたい場合には、毎回仮想環境をオフにして、再起動をして、場合によってはBIOSから設定を変更して...といった作業をしてますかもしれませんが、そんな面倒な作業がなくなります。

さらにこのアップデートは、開発者でもなんでもない一般ユーザーにも恩恵を与えます。このアップデートにより、仮想化を無効化する作業を必要としなくなる為、PCについて詳しくないユーザーにとって、インストールの敷居が大きく低下します。一般のユーザーにとって、仮想環境がどうのこうのなんて言われた所で正直わからない人が大半です。そんなユーザーが何も気にせずインストールが可能になります。

ちょっと技術的な事が分からないっていうユーザー向けのお話

Androidエミューレータを利用したことがある方であれば、「仮想化を無効にしてください」などという警告を目にしたことがあるかもしれません。これは仮想環境がパソコン内で有効になっているために表示されています。パソコンに詳しくない方にとっては、このエラーが出た時点でインストールを諦めてしまうかもしれません。はたまた、頑張って問題解決を試みる方もいるかも知れませんが、詳しくない人にとって、問題を解消するのは非常に手間です。今回のアップデートで、一部のパソコンで発生するこのようなある種の問題を気にすること無く、NoxPlayerを利用できるようになりました。

実際にインストールして動作するのか?

私が普段遣いしているWindows Pro 64bit環境で動かしてみたところ、特に動作に問題なく動作しました。 画像の通り、Hyper-VでUbuntuを起動しながら、NoxPlayerも起動してみましたが、特に異常は見られませんでした。

注意点

特に私にとっては問題は感じられませんでしたが、Hyper-Vが有効化されているWindowsPC上で動作させるとポップアップがでてきます。 「現在Hyper-Vが有効化されているため、Noxでゲームを遊ぶ時ラグやフリーズが頻発してしまうおそれがあります。より良い体験のため、Hyper-Vを無効化にすることをおすすめします。」といった注意が出されます。Hyper-Vを必要としないユーザーである場合は素直に無効化することが進められています。これまで共存ができなかったのは、嫌がらせではなく技術的な問題や課題などが理由なわけですから、当たり前のように無効化のほうが推奨されてはいます。

ダウンロード先

下記のページ上からダウンロードが可能です。

NoxとHyperV共存させるには(Win11向けバージョンbeta版) | NoxPlayer サポート

この執筆時点ではBeta版となっているため、動作に問題が生じたり一部環境では正常に動作しないおそれがあります。少なくとも、私が確認した限りでは正常に動作してはいますが、十分なテストをすることをおすすめします。

エミュレータでゲームをし、開発もする人にとっては、待望のアップデートと言っても過言ではないと思われます。ぜひこの機会にNoxPlayerをインストールして、開発とゲーム生活を両立してみてください。

snake

個人的な趣味の範疇でやっている研究です。何らかの答えを求めて、この投稿にたどり着いたのであれば、ブラウザバックを推奨します。ここに書かれていることは戯れ言です。

近年、デジタルトランスフォーメーション(DX)という言葉を聞くようになりましたが、結局のところ何なのかが分からない。色々と調べ、上っ面の理解はできているとは思うが、本質的に何であって、結局のところ何を目的としているのかが見えてこない。もしかしたら、無いのかもしれない。上っ面だけの浅い理解でDXを簡単に語ると、おそらく「変化が激しい市場に対応できる組織を作る」あたりになるかもしれないという結論までは出せました。

色々と調べている過程でなぜDXが分かりにくいのかが少し見えてきた気がした。DXの意味が複数存在し、複数の意味のDXを同じ土俵で殴り合わせている為、現代の日本式闇鍋DXが出来上がっているように思える。

技術的な側面のDXと経営的な側面のDX、さらには国や社会と言った集団に置けるDXは、別物であり、それぞれ独自の視点があるのはもちろん見ているところが全然違うとも感じた。

さらに複雑にしているDXとしてマーケティングも存在している。まったくAIなんて関係ないのに、それっぽい感じを出したいからAIという言葉だけを取り出しキャッチコピーとして利用するプロダクトと似たようなもので、DXを求めている企業に何かそれっぽい製品を提供するときに、DXという言葉だけを取り出してキャッチコピーとして利用する。こんなDXも存在するために、もはや言葉の意味が分からなくなっている。

もちろんこれがすべて悪という訳ではないと思う。ニュアンスや雰囲気を伝えるときに、それっぽい言葉があることでスムーズなコミュニケーションが可能となることもあるし、世の中に浸透する。そういう意味で闇鍋DXも悪くはない。

問題は闇鍋DXが浸透しすぎて、本質的なDXに誰も届かなくなっている。というか、本質が何もなくなっている。ついでにゴールもなくなっている。

snake

GhostCMSでシンタックスハイライトする時に読み込むCSSとJSが分からなくなるので、いくつかまとめて書き記しておく。

GhostCMSではPrism.jsが推奨されている為、Prism.jsを利用する。

Prism.js

Prism is a lightweight, extensible syntax highlighter, built with modern web standards in mind. It’s used in millions of websites, including some of those you visit daily.

Prism

GhostCMSにPrism.jsを追加するには、Code Injectionにコードを貼り付ける。

CSSはヘッダー、JSはフッター

prism.min.css

Themeが存在しており、必要に応じてデザインを変更可能。変更する場合は、prism.min.cssに変わってTheme cssを読み込む必要がある。

okaidiaの場合は、以下のコード

prism.min.js

シンタックスハイライトしたい言語に応じて、pluginも読み込む必要がある。

Pythonの場合は、以下のコード


かなりの数のPluginが存在するため、適時cdnjs.comを参照することを推奨

prism - Libraries - cdnjs - The #1 free and open source CDN built to make life easier for developers

snake

Amazonのブラックフライデーセールで安く売られていた6 TBの外付けHDDを購入したので、それにラズパイをくっつけて簡単お家クラウドを作りました。

この組み合わせの話、擦られすぎて書く意味がよく分かりませんが、こんな事やったよという報告程度に見て頂ければと思います。特別なにか尖ったことをするわけではないので、別にこのサイト以外の内容を見ながら、やっても同じ結果を得られるかと思います。

環境

基盤:Raspberry Pi 3 Model B+(以下、ラズパイ)

ストレージ:32GB SDカード

Team microSDHCカード 32GB UHS-1 U1 Switch動作確認済み 読込み最大100MB/s 日本国内10年保証 SD変換アダプター付属 正規品

ストレージ:外付け6TB HDD

【Amazon.co.jp限定】バッファロー 外付けハードディスク 6TB テレビ録画/PC/PS4/4K対応 バッファロー製nasne™対応 静音&コンパクト 日本製 故障予測 みまもり合図 HD-AD6U3

OS:Ubuntu Server 20.04 LTS

(Dockerで動かすのでDebianでもCentOSでも動かせます)

必要なもの:Docker、Docker-compose、やる気、モチベーション

前提

外部からサーバーへアクセスできる環境は整っているという前提で話をしています。例えばポート開放やリバースプロキシ、サーバーのIPアドレスなどは全て設定されているものとみなしています。

OSのインストール

ラズパイで動かすので、まずはOSをインストールします。OSさえインストールされればやり方はお好みですが、今回はRaspberry Pi公式が出しているRaspberry Pi Imagerを利用します。

ダウンロードは下記URLから行えます。

Raspberry Pi OS – Raspberry Pi

下記画像の「Download for Windows」をクリックすることでWindows版をダウンロードできます。macOSやUbuntuをお使いの場合は、下に表示されているリンクをクリックしてください。 インストール後起動すると、下記画像のようなウィンドウが立ち上がります。 ここまで来たら後は簡単です。「CHOOSE OS」でOSを選択してください。今回はUbuntu Serverを選択しますが、もしもこだわりがあれば他のOSを選択してもらっても構いません。ただしその場合、この投稿の手順ではできないかも知れないです。 OS選択後「CHOOSE STORAGE」でPCに刺したマイクロSDカードを選択して「WRITE」でOSを書き込みます。

ここもHDDからブートしたり、ネットワークからごちゃごちゃやったりできたりできなかったりするらしいのですが、今回は面倒なのでやらないというのと、個人的に別用途でも利用するのでSDに書き込んでおきます。

書き込みが終わったら、後はラズパイにマイクロSDカードを挿して、起動させるだけです。

起動後Raspberry Piにモニターとキーボードが接続されている場合は、画面に表示されます。そうでない場合、かつ、Raspberry Pi ImagerのCHOOSE OSでカスタム .imgなどを使用していない限り、初期段階からSSHが有効になっているので、ローカルIPを探し接続してください。

接続後パスワードの設定や必要に応じてユーザーの作成などを行ってください。パスワードの設定は必要ですが、ユーザー作成などの環境面はお好みです。

環境が整ったら、アップデートを行ってください。

Ubuntuの場合、以下の通りです。

$ sudo apt -y update $ sudo apt -y upgrade

時間がかかるのでお茶でも飲みながらゆっくり待ちましょう。

アップデートが完了したらOSの準備が整いました。

Docker、Docker Composeのインストール

初めにDockerインストールしていきます。これは公式ドキュメントに沿ってインストールしていけばいいです。下記は実行するコマンドです。

$ sudo apt install
ca-certificates
curl
gnupg
lsb-release $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt update $ sudo apt install docker-ce docker-ce-cli containerd.io

Install Docker Engine on Ubuntu

次にDocker Composeをインストールしていきます。こちらについても公式ドキュメントに沿ってインストールしていけばいいです。下記は実行するコマンドです。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose

Install Docker Compose

インストール完了後、必要に応じてインストールの確認をしてください。

Nextcloudのインストール

インストールとは言ってもDockerで動かすので、 docker-compose.yml を作成して記述するだけです。

docker-compose.ymlの例は以下の通りです。

version: '3'

services: db: image: mariadb:10.5 command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: always volumes:

  • db:/var/lib/mysql environment:
  • MYSQL_ROOT_PASSWORD=ChangeMe env_file:
  • db.env

redis: image: redis:alpine restart: always

app: image: nextcloud:apache restart: always ports:

  • 80:80 volumes:
  • nextcloud:/var/www/html environment:
  • MYSQL_HOST=db
  • REDIS_HOST=redis env_file:
  • db.env depends_on:
  • db
  • redis

cron: image: nextcloud:apache restart: always volumes:

  • nextcloud:/var/www/html entrypoint: /cron.sh depends_on:
  • db
  • redis

volumes: db: nextcloud:

記述後、ファイルを保存してください。

ディレクトリで以下のコマンドを実行することで、Nextcloudが立ち上がります。

$ sudo docker-compose up -d

起動後、IPやドメインを使ってウェブサイトへアクセスし、指示に従ってインストールしてください。

これで完了です。自分で使いたいように他の設定をいじったりしてください。

NextCloudをRaspberry Pi 3 B+で運用してみて

結論だけ言います。動作が遅い、たまに完全に固まる。だけど、基本的にほっておけば処理は終わってるので、個人宅のファイルサーバー程度使うのであれば、何ら問題ないです。

快適に複数ユーザーであれこれ色々使いたいのであれば、Raspberry Pi 4を使うか、もっとスペックを持ったPCに入れるのが良い気がしますね。

snake

Python3を教えてる時に、基本的なよく使う文法まとめて欲しいと言われたので、チートシート的に簡単にまとめておきます。

この投稿は、C言語など他のプログラミング言語をある程度理解しているPython初学者に向けたものなので、細かい説明は省略しています。

現在進行系で教えたりしているので、随時追記していきます。もしも追記・修正してほしい内容があれば、Twitter @viasnake にリプライかDMをください。返信は約束できませんが、気づいたら更新しておきます。

変数

Pythonは変数の型を自動的に判別します。また、変数の定義も必要もないので、いきなり変数に代入して問題ありません。

_str = "Hello world"
_int = 1
_float = 3.141592

上記の例の場合、 _str は文字列型、 _int は整数型、 _float は浮動小数点型となります。注意してほしいのは、型を明示的に宣言する必要がないだけで、ちゃんと型は存在しています。なので、文字列型を整数型として扱うことはできません。

リスト

Pythonのリストは他言語でいう所の配列に当たりますが違いがあり、要素数は決まっておらず、あらゆる型を入れることができ、動的にメモリが確保されます。

_list = [0, 10, 20, 30, "Apple", 5]
_tuple = (100, "Apple", 50.5, 5)
_dect = {"Apple": 100, "Banana": 50, "Melon": 500}

_list はリスト型、 _tuple はタプル型、 _dect は辞書型です。

リスト型には、複数の型を入れることができます。また、中身を後から変更可能です。(ミュータブル)

タプル型にも、複数の型を入れることができます。しかし、中身を後から変更できません。(イミュータブル)

辞書型は、リスト型やタプル型と異なり、データは順番に管理されず、KeyとValueで管理していく型になります。上記の例では、 Apple というKeyに 100 というValueが入っている形になります。中身は後から変更が可能です。(ミュータブル)

if文

if``elif``else があります。他のよくあるプログラミング言語とあまり差はありません。 elif はelse if の略です。

if score >= 80:
printf("scoreは80以上です")
elif score >= 50:
printf("scoreは50以上です")
else:
printf("scoreは50未満です")

Pythonはインデント(スペースやタブなどによる字下げ)が重要です。インデントによってどこからどこまでが対象の処理であるかを判断しています。ちゃんとインデントしましょう。

while文

while です。他のよくあるプログラミング言語とあまり差はありません。条件を満たす限り、処理を繰り返します。

while i > 30:
print("!!! While !!!")
i += 1
else:
print("!!! While Finish !!!")

if文同様にインデントが重要です。

for文

for です。条件を満たすまで、処理を繰り繰り返します。他のプログラミング言語とちょっと違います。

for i in range(10):
print("!!! For iは" + i + "です !!!")
else:
print("!!! For Finish !!!")

range は組み込み関数で指定された数から指定された数まで順番に取得することができます。

for i in range(10) の場合、10回処理を行い、iに0~9までの数を順番に入れて行きます。よって、1回目の処理ではiに0が、2回目の処理ではiに1が代入されます。

snake

2021年12月9日にSteamへ投稿したレビューです。

Steam Community :: snake :: Review for Dominion

※本家(ボードゲーム)を既プレイです。拡張セットも全てではありませんが、そこそこな数プレイしています。

このゲームはアメリカで生まれたボードゲームのデジタル版です。日本語版のボードゲームがホビージャパンから発売されています。

現状、このゲームの日本語訳は不十分であり、翻訳されていない箇所が通常プレイの中で目に入ります。 そのためDominionを知っているが、ルールを良く知らず、このゲームからやってみようという方や何も知らないけどやってみようという初心者の方は注意が必要です。 ゲーム自体は有名なので、紹介動画やウェブサイトが溢れています。もしも初心者の方であれば、一度外部サイトを見てみることをおすすめします。一度流れが理解できれば、あとは応用でどうにかなるので楽しむだけです。 また、初心者の方が遊ぶ際には基本パックのみで一度遊んでみることをおすすめします。


すでにDominionをプレイしたことがあり、ボードゲーム版で全然遊べる方に関しては、問題なく遊ぶことができるかと思います。一部日本語化されていない箇所がありますが、既存プレイヤーであれば、大体の基本的な動作を理解しているかと思いますので、翻訳されていなくても割となんとかなります。

オンライン化に伴う特有にルールなどは現状ありません。あるとすれば、やり直しぐらいかと思います。 操作に関して、山札へ戻す・捨てる・破棄などの動作がいちいち面倒くさいと思うかも知れませんが、ここに関しては慣れかと思います。

UIはシンプルなので、本家やっていれば何となく雰囲気で分かります。

注意してほしいのは、デジタル版だからといって、今のデッキに何が何枚入っているかなどは見れたりしません。覚えてください。初心者向けに敷居を下げて作っているというよりは、既存プレイヤーが十分楽しめるように作られているという印象です。


ゲームはこちらから

Dominion on Steam