このエントリーはフィヨルドブートキャンプ Part 2 Advent Calendar 2020の9日目の記事です。

プログラミングを始めるにはパソコンが必要ですがMacとかを用意するにはいきなり10万円以上のお金がかかってしまい敷居が高いです。そこで中古のパソコンとLinuxを使って1万円代で環境を用意しようというお話です。WebプログラマーはLinux知識が必須なのでこれを使えばLinux力養成(強制)ギプスとしても働くのでとてもいいです。

パソコン選び

おすすめはThinkPadの中古専門店 Be-Stockで中古のThinkPad X230を買うことです。

Image from Gyazo

大体14,000円ぐらいで売ってます。

Linuxをインストールするパソコンは安ければなんでもいいんですが、ThinkPadは中古市場に出物が多く安定して流通していること、Linuxをインストールして使う人が多いため情報が豊富なことがおすすめの理由です。

HDDをSSDに換装しているものも売っているのでそちらの方がお勧めです。画面解像度がFWXGA(1366x768)なのがネックですが50,000円ほど出せばFull HD(1920x1080)のモデルが買えます。

Image from Gyazo

僕も買ってみました。いやっほう!

SSDに換装されていて15,000円ぐらいでした。Linuxをインストールする場合、パソコンによってWiFiがすんなり動かないとかザラにあるんですが、さすがThinkPad X230はこなれているのでバッチリ動きました。(指紋認証も設定なしで動いたのはびっくり)

バックアップ

いきなりLinuxをインストールしてもいいんですが、もしもの時のためにバックアップを取っておきましょう。これがあれば何かあってもWindowsに戻して使えます。

下記はDVDを使っていますがUSBメモリーを使った方が便利です。16GB以上のUSBメモリーがあればOKです。僕はコンビニで16GBのUSBメモリー買ってきました。

ThinkPad X230 のリカバリーメディアの作り方を解説 | DESIGN.PC

Linuxのインストール

一番無難なUbuntuをインストールしましょう。

本家からよりも日本語の環境が整っているubuntu Japanese Teamから日本語Remixイメージ(拡張子が.isoのファイル)をダウンロードしましょう。

Ubuntu 20.04.1 LTSの方がサポート期間が長いバージョンなので安定していますが、デスクトップ用途なので最新のUbuntu 20.10の方がいいと思います。

これをインストールUSBにしてくれるソフトを使ってUSBに入れます。

上記のエントリーではRufusというソフトを使ってインストールUSBを作っていますが、僕はUNetbootinというソフトを使いました。まあどれも似たようなもんです。

Image from Gyazo

インストールUSBができたらそれを刺して起動しましょう。

パソコンが起動するとき、どこにOSが入っているのかHDDかな?DVDかなUSBかな?と順番に調べていっています。普通はUSBよりHDDの方を先に見にいく設定になっているのでHDDにインストールされているOS(この場合はWindows7)が起動してしまいます。USBから起動したいのでこの順番を変えましょう。こういった設定はBIOSでやります。

X230の場合は起動時のロゴが表示された時にF1を押すとBIOSの設定画面に入れます。

推奨するBIOSの入り方 (Boot Menu) - ThinkPad, ThinkCentre, ThinkStation - Lenovo Support US

Image from Gyazo

素っ気なくてちょっと怖い画面ですが、良く見れば難しいことは書いてありません。矢印の左右で一番上のタブを選択し、上下で選んでEnterで選択できます。

起動の順番はStartupタブのBootのところで設定できます。

Image from Gyazo

僕の設定はこうなっていました。

CDもFDD(フロッピーディスク)もないので4のHDDが選択されてそこからWindowsが起動しているようです。これより上にUSB HDDを持ってくればOKなはず。

Image from Gyazo

右側のHelpに書いてあるように-キーや+キーで順番を変えられたのでUSB HDDを上に持ってきました。そして画面下部に書いてあるようにF10キーで保存して終了。

するとubuntuのインストールイメージが起動するのでしばらく待ちます。

Image from Gyazo

インストーラーが立ち上がりました。インストーラーで聞かれる内容はWindowsやMacと大差ありません。

萌え萌えmoebuntu Ubuntu 20.10(Groovy Gorilla) のインストール手順

Image from Gyazo

インストールできした〜!やった〜!

Ubuntu 20.20はコードネームGroovy Gorillaなのでゴリラがマスコットみたいです。

ThinkPadのトラックポイント(赤いポッチ)やトラックパッドも問題なく動いています。WiFiも問題なし。SSDに換装されている影響か、画面の解像度の狭さ以外は結構快適です。

開発環境構築

プログラミングの勉強に必要なソフトをインストールしていきましょう。

Ubuntu Software

Image from Gyazo

Snap Store

Image from Gyazo

Ubuntu SoftwareがWindows StoreやMac App Storeみたいなもんです。Snap StoreがUbuntu Softwareにとって変わられる予定みたいですが今のところ過渡期のようです。Snap Storeはソフトが豊富です。

ターミナル

最初から 端末 という名前で入っています。

Image from Gyazo

ブラウザ

Firefoxが初めから入っています。Chrome好きはオープンソース版のChromiumを使うと良いです。

プログラミング用エディタ

迷ったらVisual Studio Codeでいいんじゃないでしょうか。

Image from Gyazo

チャット

SlackとDiscordがちゃんと動きますね。

Image from Gyazo

ruby & rails

さすがLinuxはプログラマー向けの各種ツールはバッチリ動きますね。railsもバッチリです。

Image from Gyazo

プログラミングを学習できるサイト

ハードとソフト、準備が揃ったらプログラミング学習をスタートしましょう。

ドットインストール

ドットインストール - 3分動画でマスターできるプログラミング学習サービス

無料で色々学べて便利。僕もいくつもやったことありますし、有料版を社員研修に使ったこともあります。

Progate

Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

プログラミングってどういうものだろう?と思っている方はこれをやってみるとわかると思います。Progateをやってみて「プログラミングって楽しい!」と思ったら他の方法も合わせて本気で取り組んでみるという流れは僕もお勧めです。

フィヨルドブートキャンプ

Image from Gyazo

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

はい、長々と書いてきたオチでございます。

「プログラミングって楽しい!」と思って本気でプログラマーとして就職を目指そうと思ったらぜひオンラインプログラミングスクールのフィヨルドブートキャンプへ。Linuxもカリキュラムできっちりやるのでubuntuにも最適です。

すでにフィヨルドブートキャンプで学ばれている方もLinux矯正ギプスを手に入れてLinux力をアップしてみてはいかがでしょうか!

フィヨルドブートキャンプというプログラミングスクールのEラーニングアプリをCloud Run + Railsで動かしています。

1ヶ月使ってみた結果、8,000円ぐらいでした。

Image from Gyazo

Cloud Runが300円でCloud SQLが7,000円って感じです。Cloud Buildとかちょこまかしたのはありますが誤差の範囲。

Cloud Runは1コンテナだったら1日10円ぐらいなんですよね。信じられないほど安い。

これでDockerイメージ放り込んでおけば自動スケールの環境が手に入るならほとんどの仕事のアプリはこれでいい気がします。パフォーマンスもいいし、これからのアプリは全部これで行こうと思います。

@bluerabbit777jpさんが使ってるのを見て良さそうだったので使い始めたTablePlus

MySQL、PostgreSQL両方行けるし、最近落ちまくりで困ってたSequel Proと違って落ちないし、Free Trialでしばらく使っていい感じだったのでライセンス購入しました。

Image from Gyazo

Cloud SQL Proxy経由でCloud SQLもしっかり使えております。便利〜。

Image from Gyazo

フィヨルドブートキャンプのrailsアプリをherokuからGCPのCloud Runに移行しました。

GCPに詳しい@bluerabbit777jpさんにやってもらいました。僕もこれを参考にしながら他のサービスも移行しようと思います。

この辺りのサービスの機能は日々進化してる感じなんですが、Cloud BuildのトリガーががGitHub Reposの特定のブランチにpushされたら動くというのに対応したので、masterにpushされたらCloud BuildでDocker ImageをビルドしてCloud Runにデプロイされるという感じです。

設定はちょっと面倒ですが、好きなDocker Imageをデプロイすればオートスケールってのは自由度が高くていいですね。

bootcampの規模では常に1インスタンスで夜中に1〜2回ぐらい0インスタンスになる感じです。0からの立ち上がりの初回は16秒ほどかかっています。最低インスタンス数の設定項目自体はあるのでもうすぐ有効になりそうです。そうなったら1にしておけはbootcamp的には問題なさそう。

Herokuからの移行で一番のメリットはやはりTokyoリージョンが近くて速いって点です。基本的に全てのページで200〜300msぐらい速くなった感じです。他の部分が遅ければ200msぐらいすぐに遅くなっちゃうのでアプリの高速化はやってましたが、全てのページが一律早くなるのは体感できるぐらいでした。

キャッシュどうすんだとか、cronどうすんだとかあるあるな点についても順次対応しつつブログに書いていこうと思います。

「映画好きを名乗るからには見とかなきゃいけないとか、斬新とか通好みとかじゃなくて、単純に一番面白い映画ってなんですか?」

って聞くと、俺みたいな映画に詳しくないヤツが見ても「う〜ん、難しくて良くわからなかった」となる映画を教えられがち。(小説でも同じ)

すごく映画詳しいと思われる@machidaさんに昔この質問をした時、

「 バックトゥザフューチャーじゃないすかね。」

と即答された。

こりゃ信用できるわぁ〜

fjordcop作った - komagataのブログ

これをgemにしました。

rubocop-fjord

gemにした理由は、gistだと適当感があってこれにしたがってくださいと言い辛いからです。 メンテについては腹を括ったのでやっていきます。

とにかくエディタ論争とこういうルールについての議論をするのが辛い。

プログラミングスクールで使うことを念頭に置いているので他にも教育やスクールをやっている方には便利かも知れません。

group :development do
  gem 'rubocop-fjord', require: false
end

.rubocop.ymlにこう書く。

inherit_gem:
  rubocop-fjord:
    - "config/rubocop.yml"
    # - "config/rails.yml"

ネット回線をNURO光に移してから問題無く使っているんですがどうせだったらその速さをもっと味わいたいということでルータのある部屋から作業部屋まで有線で繋いてみました。

Image from Gyazo

Image from Gyazo

俺の配線の苦労の跡を見よ!

Image from Gyazo

ウェーイ!

NURO光の僕のプランとしては普通ぐらいの速さが出ているようです。

先月までは90Mbpsぐらいで生活していましたが安定はしていたし作業用のmacを使っている限り大した違いは感じないです。

明日以降のビデオ会議での活躍に期待したいと思います。

厳密には昇降デスクの脚であるFlexiSpot E3を書いました。

元々の机は作業部屋に妻と並べてぴったりのサイズになるように天板を発注して、脚はIKEAのOLOVを使っていました。

Image from Gyazo

教えてリモートワーク komagataさんの場合

その脚だけを変えた感じです。

座った状態

Image from Gyazo

スタンディング状態

Image from Gyazo

(高さが変わってくときでも猫は意外と動じない)

使い心地

まず、スタンディング状態だと座った状態のように作業に入るときに、

「さて、作業するか…」

みたいな心理的なハードルが低いです。

フラッと立ち寄れる作業場所みたいな感じなのでこまめに気楽に作業できる気がします。

また、やはり座った状態もスタンディングも同じ状態だと疲れますが、体の使ってる場所が違うので切り替えると引き続き作業できるようになって休まず作業できる時間が長くなりました。

数日使ってますがかなり気に入りました。

電動+メモリ機能付きを買え

そして強く感じているのが、「電動+メモリ機能(設定を覚えておいてくれて1ボタンでその高さになる)」がなかったら動かさなくなるだろうなということです。

まず自分のしっくりくる高さに合わせるのはかなりシビアなので、切り替えるたびにそんなことする必要があったらストレスが溜まります。(微妙にずれたまま作業するのもすごいストレス)

1日の中で何度も切り替えるものなので手動でやるのも高さの変更が少しでもダルかったら使わなくなると思います。

ポチッと押したら自分のベストの高さにピッタリ合うようになってると楽しいし気持ちいいです。

気になる点

それでも唯一気になっている点が、座ってる状態とスタンディング状態ではベストなカメラの角度が違う点です。

ビデオ会議で使うカメラの調整がいちいち必要になるのが少し面倒ですね。

今の家に3月に引っ越してから約5ヶ月。途中やりとりで何度もブチギレそうになりながらやっとNURO光が開通しました〜🎉

前の回線(NTTフレッツ光マンションタイプ)

Image from Gyazo

NURO光

Image from Gyazo

「わーわー」

84Mbpsから560Mbpsと約6倍も速くなって大満足です・・・と言いたいところですが・・・。

ルーターのメーカー問題

Image from Gyazo

いや、全然問題ないんですがなんかちょっと・・・

回線のせいではなかった説問題

元々Google Nest Hubを使ってメッシュネットワークを組んでいました。(本体+拡張ポイント2個)

NURO光のルーターは無線LAN機能が付いていたのでそれを使ったら560Mbpsでした。もちろん回線がNUROになったのでNUROの回線+Google Nest WiFiのメッシュネットワークで速くなるぞ〜と思ったんですが、NUROのルーターの無線LAN機能を切ってGoogle Nest WiFiの無線LANを使うことにしたところ、以前と同じ80Mbpsしか出ませんでした。

これはもしや、元々回線のせいで遅かったのではなく、Google Nest WiFiが問題だった説が・・・。

まとめ

結局NUROのルーターに付いてる無線LANで家中どこでも速かったので嬉しいは嬉しいのですが、Google Nest WiFiが無駄になったのが微妙です。

Google Nest WiFiの無線LAN機能をPCやスマホからは使ってないですが、妻がキッチンでGoogleアシスタントとして使うので一応残してあります。(Nest Hubが一個あれば良かった説)

ここ最近で一番感動したサービスきました。(rono23に教わったサービス)

ビデオ会議のブッキング面倒問題

コロナでビデオ会議が増えてます。でもビデオ会議のブッキングはクッソだるい。

「私達の可能な日時を調整して3つほど候補日をお伝えします。」(本当はもっと大丈夫な時間あるけどキリがないので3点だけ伝える)

(社内の参加者で調整…)

  • 08月3日(月) 10:00〜12:00、13:00〜15:00
  • 08月5日(水) 13:00〜15:00
  • 08月6日(木) 10:00〜12:00

上記いずれかでご都合の良い時間帯があればお知らせください。

「私どもも社内で調整して折り返します」

(お客さん側の参加者間で調整…)

08月5日(水) 13:00〜15:00

こちらでお願い致します。

では当日、宜しくお願い致します。

コレ。

何ターンもやりとりが発生してやってられない。

気軽にビデオ会議ができない。もっと楽だったらテキストよりビデオで話せばすぐ解決することも多いのに。

神サービス

それを解決してくれる神サービスがyou can book me

こういうブッキングがURLを1つ送るだけで完了する。

Googleカレンダーと連携できて、スケジュールが入ってる場所は選べないようにしてくれる。 (自分がアクセスできてる社内の他の人のカレンダーもまとめて考慮してくれる)

Image from Gyazo

お客さん側は自分の都合のいい時間を選んで、

Image from Gyazo

このように登録すると、俺のGoogleカレンダーに予定が入る。(申し込んだ方のカレンダーにも簡単な手順で登録できる)

Image from Gyazo

zoomの場所も自動で決まっている。

もちろん登録されたタイミングで俺にメールでの通知も来る。

神だわ。