このエントリーはフィヨルドブートキャンプ Part 2 Advent Calendar 2020の9日目の記事です。
プログラミングを始めるにはパソコンが必要ですがMacとかを用意するにはいきなり10万円以上のお金がかかってしまい敷居が高いです。そこで中古のパソコンとLinuxを使って1万円代で環境を用意しようというお話です。WebプログラマーはLinux知識が必須なのでこれを使えばLinux力養成(強制)ギプスとしても働くのでとてもいいです。
パソコン選び
おすすめはThinkPadの中古専門店 Be-Stockで中古のThinkPad X230を買うことです。
大体14,000円ぐらいで売ってます。
Linuxをインストールするパソコンは安ければなんでもいいんですが、ThinkPadは中古市場に出物が多く安定して流通していること、Linuxをインストールして使う人が多いため情報が豊富なことがおすすめの理由です。
HDDをSSDに換装しているものも売っているのでそちらの方がお勧めです。画面解像度がFWXGA(1366x768)なのがネックですが50,000円ほど出せばFull HD(1920x1080)のモデルが買えます。
僕も買ってみました。いやっほう!
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に入れます。
- WindowsにUbuntuをインストールするのは気持ち良いゾイ!!~導入編~ - Qiita
- Linuxをインストールできる「ライブUSBメモリ」をWindowsで作成する方法【スクリーンショットつき解説】 | LFI
上記のエントリーではRufusというソフトを使ってインストールUSBを作っていますが、僕はUNetbootinというソフトを使いました。まあどれも似たようなもんです。
インストールUSBができたらそれを刺して起動しましょう。
パソコンが起動するとき、どこにOSが入っているのかHDDかな?DVDかなUSBかな?と順番に調べていっています。普通はUSBよりHDDの方を先に見にいく設定になっているのでHDDにインストールされているOS(この場合はWindows7)が起動してしまいます。USBから起動したいのでこの順番を変えましょう。こういった設定はBIOSでやります。
X230の場合は起動時のロゴが表示された時にF1を押すとBIOSの設定画面に入れます。
推奨するBIOSの入り方 (Boot Menu) - ThinkPad, ThinkCentre, ThinkStation - Lenovo Support US
素っ気なくてちょっと怖い画面ですが、良く見れば難しいことは書いてありません。矢印の左右で一番上のタブを選択し、上下で選んでEnterで選択できます。
起動の順番はStartupタブのBootのところで設定できます。
僕の設定はこうなっていました。
CDもFDD(フロッピーディスク)もないので4のHDDが選択されてそこからWindowsが起動しているようです。これより上にUSB HDDを持ってくればOKなはず。
右側のHelpに書いてあるように-
キーや+
キーで順番を変えられたのでUSB HDDを上に持ってきました。そして画面下部に書いてあるようにF10キーで保存して終了。
するとubuntuのインストールイメージが起動するのでしばらく待ちます。
インストーラーが立ち上がりました。インストーラーで聞かれる内容はWindowsやMacと大差ありません。
萌え萌えmoebuntu Ubuntu 20.10(Groovy Gorilla) のインストール手順
インストールできした〜!やった〜!
Ubuntu 20.20はコードネームGroovy Gorillaなのでゴリラがマスコットみたいです。
ThinkPadのトラックポイント(赤いポッチ)やトラックパッドも問題なく動いています。WiFiも問題なし。SSDに換装されている影響か、画面の解像度の狭さ以外は結構快適です。
開発環境構築
プログラミングの勉強に必要なソフトをインストールしていきましょう。
Ubuntu Software
Snap Store
Ubuntu SoftwareがWindows StoreやMac App Storeみたいなもんです。Snap StoreがUbuntu Softwareにとって変わられる予定みたいですが今のところ過渡期のようです。Snap Storeはソフトが豊富です。
ターミナル
最初から 端末 という名前で入っています。
ブラウザ
Firefoxが初めから入っています。Chrome好きはオープンソース版のChromiumを使うと良いです。
プログラミング用エディタ
迷ったらVisual Studio Codeでいいんじゃないでしょうか。
チャット
SlackとDiscordがちゃんと動きますね。
ruby & rails
さすがLinuxはプログラマー向けの各種ツールはバッチリ動きますね。railsもバッチリです。
プログラミングを学習できるサイト
ハードとソフト、準備が揃ったらプログラミング学習をスタートしましょう。
ドットインストール
ドットインストール - 3分動画でマスターできるプログラミング学習サービス
無料で色々学べて便利。僕もいくつもやったことありますし、有料版を社員研修に使ったこともあります。
Progate
Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
プログラミングってどういうものだろう?と思っている方はこれをやってみるとわかると思います。Progateをやってみて「プログラミングって楽しい!」と思ったら他の方法も合わせて本気で取り組んでみるという流れは僕もお勧めです。
フィヨルドブートキャンプ
はい、長々と書いてきたオチでございます。
「プログラミングって楽しい!」と思って本気でプログラマーとして就職を目指そうと思ったらぜひオンラインプログラミングスクールのフィヨルドブートキャンプへ。Linuxもカリキュラムできっちりやるのでubuntuにも最適です。
すでにフィヨルドブートキャンプで学ばれている方もLinux矯正ギプスを手に入れてLinux力をアップしてみてはいかがでしょうか!
フィヨルドブートキャンプというプログラミングスクールのEラーニングアプリをCloud Run + Railsで動かしています。
1ヶ月使ってみた結果、8,000円ぐらいでした。
Cloud Runが300円でCloud SQLが7,000円って感じです。Cloud Buildとかちょこまかしたのはありますが誤差の範囲。
Cloud Runは1コンテナだったら1日10円ぐらいなんですよね。信じられないほど安い。
これでDockerイメージ放り込んでおけば自動スケールの環境が手に入るならほとんどの仕事のアプリはこれでいい気がします。パフォーマンスもいいし、これからのアプリは全部これで行こうと思います。
@bluerabbit777jpさんが使ってるのを見て良さそうだったので使い始めたTablePlus。
MySQL、PostgreSQL両方行けるし、最近落ちまくりで困ってたSequel Proと違って落ちないし、Free Trialでしばらく使っていい感じだったのでライセンス購入しました。
Cloud SQL Proxy経由でCloud SQLもしっかり使えております。便利〜。
フィヨルドブートキャンプの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さんに昔この質問をした時、
「 バックトゥザフューチャーじゃないすかね。」
と即答された。
こりゃ信用できるわぁ〜
これをgemにしました。
gemにした理由は、gistだと適当感があってこれにしたがってくださいと言い辛いからです。 メンテについては腹を括ったのでやっていきます。
とにかくエディタ論争とこういうルールについての議論をするのが辛い。
プログラミングスクールで使うことを念頭に置いているので他にも教育やスクールをやっている方には便利かも知れません。
group :development do
gem 'rubocop-fjord', require: false
end
.rubocop.ymlにこう書く。
inherit_gem:
rubocop-fjord:
- "config/rubocop.yml"
# - "config/rails.yml"
厳密には昇降デスクの脚であるFlexiSpot E3を書いました。
元々の机は作業部屋に妻と並べてぴったりのサイズになるように天板を発注して、脚はIKEAのOLOVを使っていました。
その脚だけを変えた感じです。
座った状態
スタンディング状態
(高さが変わってくときでも猫は意外と動じない)
使い心地
まず、スタンディング状態だと座った状態のように作業に入るときに、
「さて、作業するか…」
みたいな心理的なハードルが低いです。
フラッと立ち寄れる作業場所みたいな感じなのでこまめに気楽に作業できる気がします。
また、やはり座った状態もスタンディングも同じ状態だと疲れますが、体の使ってる場所が違うので切り替えると引き続き作業できるようになって休まず作業できる時間が長くなりました。
数日使ってますがかなり気に入りました。
電動+メモリ機能付きを買え
そして強く感じているのが、「電動+メモリ機能(設定を覚えておいてくれて1ボタンでその高さになる)」がなかったら動かさなくなるだろうなということです。
まず自分のしっくりくる高さに合わせるのはかなりシビアなので、切り替えるたびにそんなことする必要があったらストレスが溜まります。(微妙にずれたまま作業するのもすごいストレス)
1日の中で何度も切り替えるものなので手動でやるのも高さの変更が少しでもダルかったら使わなくなると思います。
ポチッと押したら自分のベストの高さにピッタリ合うようになってると楽しいし気持ちいいです。
気になる点
それでも唯一気になっている点が、座ってる状態とスタンディング状態ではベストなカメラの角度が違う点です。
ビデオ会議で使うカメラの調整がいちいち必要になるのが少し面倒ですね。
今の家に3月に引っ越してから約5ヶ月。途中やりとりで何度もブチギレそうになりながらやっとNURO光が開通しました〜🎉
前の回線(NTTフレッツ光マンションタイプ)
NURO光
「わーわー」
84Mbpsから560Mbpsと約6倍も速くなって大満足です・・・と言いたいところですが・・・。
ルーターのメーカー問題
いや、全然問題ないんですがなんかちょっと・・・
回線のせいではなかった説問題
元々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が一個あれば良かった説)