フィヨルドブートキャンプでLinux(Ubuntu)を使うときの実情

この記事は フィヨルドブートキャンプ Part 1 Advent Calendar 2021 の16日目の記事です。 Part2 もあります。
昨日の記事はperoさんの 英語とプログラミングと世界の話 でした。

フィヨルドブートキャンプはMac/Windows/Linuxのうち好きなものでプラクティスを進めることが可能です。
ですが、公式でおすすめされているのはMacであり、実際に受講生のほとんどがMacを利用していると思います。
それ以外のOS、特にLinuxは、扱いが難しいことが示唆されています。

FAQ | FJORD BOOT CAMP(フィヨルドブートキャンプ)

Linuxで学習をしたいのですが可能ですか?
Linuxでも可能ですが条件があります。用意しているカリキュラムは Mac を想定して作られています。そのため、Linux でカリキュラムを行う場合は自分自身でMac用のカリキュラムをLinuxに合わせて操作方法などを変える必要があります。それができるだけのLinuxのスキルがある方のみ、Linuxで学習をすることをOKとしています。

そんな中でLinuxを使用している少数派の立場から、実際にLinuxで学習するとどうなるのか、という実例を書こうと思います。
※あくまで1つのケースに過ぎないので、誰しもに当てはまることを保証するものではありません

なんでLinuxを選んだのか

フィヨルドブートキャンプに入会する以前に、Webエンジニアを目指すならLinuxくらい使えたほうがいいか、ということで、開発用マシンとして既にThinkPadを購入していました。
Linuxだと色々とハマりかねないと気づいたのはその後のことですが、新しくMacBookを購入するのは経済的に大変でした。
また、自分が開発用マシンを調達した当初はWSLが今ほど充実しておらず、Windowsで開発するという選択も取りづらかったです。
フィヨルドブートキャンプに入会した頃には、転職して業務でターミナルを使うようになっていたのもあり、まあなんとかなるだろ精神で突貫して、今に至ります。

入会時の経験値は以下のような感じです。

  • Webエンジニアとして転職して8ヶ月ほど
  • 業務ではMacBookを使って、cdやmv、gitコマンド程度は叩いている
  • Linuxサーバーの運用のような経験はない

ディストリビューションの選択

初心者でも扱えるものが良いと思い、よく話題に上がっていてGUIが充実していそうなUbuntuを選択しました。
この選択は正解だったと思っていて、今考え直しても、初めて使うディストリビューションということであればUbuntuで良いのではないかと思います。

入会してからの感想

それなりにハマるところもありましたが、Ubuntuの操作が直感的に行えることもあり、概ねMacを使うのと変わらないなという印象です。
大体のことはブラウザがあればこなせますし、RubyMineやDiscord、Notion、Zoomなどのツールも使うことができます。
また、フィヨルドブートキャンプではターミナルやLinuxサーバーを扱うプラクティスがあるため、Macで学習をしていようと、結局CLILinuxから逃れることはできません。

Macに比べてものすごい良かったということは特に思いつかないですね…。
フィヨルドブートキャンプ絡みでありそうなのは以下の二つでしょうか。

  • Macよりも安く始められる
  • Dockerを使うならMacよりも早い(ただしフィヨルドブートキャンプのプラクティスにはDockerがないので、自作サービスなどでDockerを使う場合に限る)

一方で、普段からLinuxを使っていることにより、何点か問題に遭遇して解決したことはありました。

標準のキャプチャがやや機能不足

Pull Requestや不明点の質問でキャプチャを取る機会は多いと思いますが、素のUbuntuのキャプチャだと書き込みやgifの取得はできないはずで、若干機能不足です。
ということで、自分が使っているツールを紹介します。

Flameshotの書き込み機能には基本的なものが揃っているのですが、デフォルトだと文字のFont Sizeが小さく読みづらいです。
これはマウスのホイールを動かすことで変更できます。
text size is too small · Issue #327 · flameshot-org/flameshot · GitHub

Ubuntuのアップグレードに失敗する

これは普通にアップグレードしていれば回避できる問題なのですが、自分はUbuntu18.04から18.10に上げたあと、半年ごとのアップグレードを放置していました。
その後20.04がリリースされてアップグレードしようとしたのですが、18.10から20.04へのアップグレードに失敗してハマりました。

調べたところ、LTS(16.04 / 18.04 / 20.04...)にはLTS、もしくは直前のバージョン(20.04なら19.10)からしかアップグレードできないようです。
結局18.10 -> 19.04 -> 19.10 -> 20.04と順繰りにアップグレードすることで、LTSに追いつくことができました。

RubyMineが ~/.bashrc / ~/.bash_profile を読み込んでくれない

自分はIDEとしてRubyMineを使用しているのですが、IDEに付属しているターミナルを開いたときに、~/.bashrc / ~/.bash_profile が共に読み込まれません。
これにより、 rbenv init などの処理が実行されず、ターミナルでの ruby コマンドの実行などに不都合が生じます。
業務用のMacBookでは発生していないので、おそらくLinuxでの問題だと思います。

対策としては、インタラクティブモードでbashを起動することで ~/.bashrc の読み込みができるようです。
具体的には、 Settings -> Tools -> Terminal のShell pathを /bin/bash -i にします。
bash - .bashrc not sourced on Intellij IDEA's terminal - Stack Overflow

最後に

Linuxでの学習はハードルが高く感じられますが、自分のようにLinuxでプラクティスを進めている実例があり、不可能ではないと思います。
(もちろんハマりどころが少ない分、Macがあるならそれに越したことはないです)

また、フィヨルドブートキャンプのメンターのkomagataさんが、Linuxでプログラミングを始める方法を紹介しています。
これを読んで、Linuxで学習を進めてみるのもいいかもしれません。でも最近だとWSL2の方がいいのかな……。
1万円台で始めるプログラミング学習 - komagataのブログ

もしLinuxマシンでフィヨルドブートキャンプに入会したものの困ってしまった方がいれば、
フィヨルドブートキャンプのDiscordサーバーで質問を投げてもらえれば、可能な範囲で答えます〜。