Web-dive.log

うみざるさんのプログラミング学習

VSCodeのターミナルのデフォルトの表示位置を右にする

VSCodeを使うときに、ターミナルの位置を右側に固定しているがデフォルトでは下側になっている。 ターミナルを開いたときに最初から右側に来るようにデフォルトの設定を変更したい。

このような場合は以下の手順を踏む。

  1. setting.jsonを開く qiita.com

  2. setting.jsonに"workbench.panel.defaultLocation": "right"を追記する

以上で設定は完了。

リモートの最新のmainブランチをローカルブランチに反映させる

チーム開発のプラクティスで以下のエラーに直面。

bootcamp % bin/rails test test/system/reports_test.rb
bin/rails:3: warning: already initialized constant APP_PATH
/Users/yohei/Desktop/bootcamp/bin/rails:3: warning: previous definition of APP_PATH was here
/Users/yohei/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems/bundler-2.4.21/lib/bundler/runtime.rb:304:in `check_for_activated_spec!': You have already activated stringio 3.1.0, but your Gemfile requires stringio 3.0.1. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)

リモートのmainブランチとローカルブランチに差異があると、 GemfileのGemバージョンに不整合が起きてエラーに繋がるので注意。

これを解消するために、以下を実行してリモートの最新のmainブランチをローカルブランチに反映させる。

- mainブランチに移動する
`git checkout main`
- git pullでmainを最新にする
`git pull origin main`
- 開発用ブランチへ移動
`git checkout be-webtest`
- mergeコマンドでmainの内容を取り込む
`git merge origin/main`

以上の手順でエラー解消を確認した。まだまだGitに関して分かっていないので学習あるのみ。

チェリー本の輪読会を終えて

このエントリーはフィヨルドブートキャンプアドベントカレンダーVol.220日目の記事です。

昨日19日目の記事はwataさんのRailsのform_forとform_withの違いを調べてみたでした。

フィヨルドブートキャンプアドベントカレンダーVol.1はこちらです。

はじめに

私は今、オンラインプログラミングスクールのフィヨルドブートキャンプ(https://bootcamp.fjord.jp)でWeb開発を学習しています。2022年8月から学習を開始し、早いもので入会から1年4ヵ月、500日ほどが経ちました。

フィヨルドブートキャンプに限らず、何らかの学習を進めるときには「輪読会」という、ある特定の本について複数の人が文章を声に出しながら読み、互いに意見や解釈を議論する会があります。フィヨルドブートキャンプでも技術書を中心にして盛んに輪読会が行われています。

今回のエントリでは、今年の8月から12月まで行った輪読会について、輪読会を始めたきっかけや得たこと、これからの目標などを書いています。

輪読会の概要

輪読会をやろうと思ったきっかけは後述するのですが、輪読会は以下ように開催しました。タイトルは「早朝チェリー本輪読会」、時間が朝早めです。

  • 日時 : 平日の朝5:45-6:45、土日祝日はお休み。
  • 輪読本 : プロを目指す人のためのRuby入門[改訂2版] ※表紙のイラストから、よく「チェリー本」と呼ばれています。
  • 場所 : フィヨルドブートキャンプのDiscordの輪読会チャンネル
  • 参加者 : フィヨルドブートキャンプの受講生
  • 当日の流れ
    • 5:45-5:50 集合、雑談
    • 5:50-6:30 2ページほどで区切って各自が輪読、都度、意見交換。
    • 6:30-6:45 学んだこと、気づいたこと、分からなかったことなどをHackMDに記入し、各自発表
    • 6:45 終了

きっかけ

輪読会をやろうと思ったきっかけは以下の3つです。

1つ目は、とにかく早起きを習慣にしたかったことです。本業でフルタイムの会社員をしながらフィヨルドブートキャンプに通っていますが、日中に働いていると学習時間をいかに確保するかが大きな課題です。

学習をさくさく楽しく進めるには、技術をしっかり理解する必要があります。ですが、それには深い集中力が必要。しかし本業から帰ってくると疲れているときが多く、集中力が下がってなかなか学習が進まない…早起きを習慣化する前はそう感じていました。

なので、始業前のすっきりした頭でプログラミング学習をしたかった。いずれWebエンジニアとして転職することを視野に入れているので、時間の使い方の優先順位を本業 < プログラミング学習にするのは理に適っていました。

2つ目は、Rubyを深堀りしたかったことです。輪読会をやろうと思い立った2023年7月頃、私はフィヨルドブートキャンプでJavaScriptを学習していました。が、そこで思っていました。「自分のRubyのスキル、低くないか?」

JavaScriptのプラクティスが終わり、Reactを学習するとチーム開発でバリバリRubyを使っていくことになる一方で、RubyRailsのプラクティスをこなしたものの、Rubyについての自分の知識に不完全さを感じていました。今の理解度だとまずい気がする…。なので、もう一度イチからしっかり学ぼうと思ってチェリー本をテーマ本にすることにしました。

3つ目は、2023年6月にフィヨブーフェス(現役生や卒業生がフィヨルドブートキャンプの楽しみ方や学習継続のコツをプレゼン形式で伝えるオフラインイベント)に参加したことです。

その中で、フィヨルドブートキャンプの受講生のお二人が輪読会をテーマに発表していました。やってよかった!初めての輪読会主催(moegi)、主催しなくても大丈夫!輪読会のススメ(sugie)の発表ですね。

こちらを現地で見ていて、とてもこう背中を押されるされるというか「よっしゃ、自分もやってみよう!」とモチベートされた感じです。自分にもできるかも?とハードルが下がったのもよかった。それまで参加するばっかりだったので、自分で主催してみたい!という気持ちもありました。

あと、すごくヨコシマな気持ちなんですが、5:45に輪読会を主催して誰か参加するようになれば「寝坊できない」プレッシャーで強制的に目覚めるようになるだろう、というハイパー他力本願寺な気持ちもありました。

進め方

8月28日に1回目の輪読会がスタートしました。「イベントを作ったはいいけどだれか来るのか…?」と思っていたところ、初回から2名の受講生が参加してくれました。参加者がいないと輪読会が成立しないのでとても感謝です…。

輪読会では、声を出しながらチェリー本をめくっていき、分からないところを質問したり、ときにはirbを起動させてコードを試したりして進めました。一日だいたい7〜8ページぐらいのペース。

体調が悪かったり別件があったときは開催をスキップしましたが、基本的に平日の朝に毎日実施。8月下旬からスタートさせて12月中旬に完走しました。通算61回実施。輪読会各回のメモはこちらです(Read Onlyにしています)

途中でラジオ参加いただいた受講生がいたり、最後のほうはフィヨルドブートキャンプのメンターさんも参加いただいてワイワイ楽しく輪読会を進めることができました。最終日にあとがきを読み終えて「…終わりですッ!」と言ったときは物凄く達成感がありました。

”輪読”の良さ

輪読会をしているときも思ったのですが、1冊の本を腰を据えて深く読み進めていく”輪読”の良さを改めて実感できました。

実際に声を出しながら読んでいきますが「ん、ここ分からんな?」と感じたポイントを輪読会の参加者にすぐに確認できる、これが大きかったです。

もし一人で読んでいても調べたりはすると思うのですが、その場で確認できると相手から「なるほど!」な回答をいただいてすぐに疑問を解消できました。

参加者同士の知識・スキルにはもちろん差があるのですが、輪読を通じて発話することで、お互いに知らなかった点を保管できるのも良い点だと思いました。

しかも今回は参加者が自分含めて2人。あまり気を使うことなく分からない点をぶつけ合うことができました。

学習と早起きを習慣に

輪読会で自分以外の誰かが待っている、と思うと不思議と頑張れるものです。というより、迷惑をかけちゃうから早起きせざるを得ない、という感じに近い。私自身、意思が弱いと自覚しているので、何か物事を続けようと思ったらまず仕組みを作りたい派なのです。気合いに頼らずなるべく仕組みでカバーしたい。

その意味で早朝の輪読会は大きく功を奏しました。初めて3週間ほどで自然と朝早くに起きてそのまま輪読会に参加することができるようになりました。朝早く起きて参加する輪読会は、仕事が終わった夜に疲れた頭で学習するよりも気持ちよく学習できました。

朝の静かな時間帯に、ゆったり自分のペースで進められて好きです。そして、4ヵ月間ちゃんと早起きして学習できたという実績を得られてすごく自信になりました。これからも朝の時間を有効活用して学習していきたいな、と思います。

ただし、次の輪読会をやるとして早朝にやるのはどうか?と聞かれると…うーん、はっきりYesとは言いにくいかなぁという印象です(急な手のひら返し)

当たり前ですがとにかく眠い。前日にあまりうまく寝られずに輪読会が終わってそのまま寝てしまう日もありました。やるならちゃんと睡眠時間を取れることが前提だなぁと思いました。

残業で帰宅が23:00を超えるときは、次の日の輪読会はお休みにしてもらっていました。頭が動かないときに輪読会やるのはけっこうシンドイ。

チェリー本 = スルメ本?

フィヨルドブートキャンプのプラクティスでは、チェリー本を1冊通しで読むというインプット系のプラクティスがあります。私もRubyのプラクティスで去年の秋頃にチェリー本を読んでいたので、今回で2度目の通読になります。

2度目だからある程度は本の内容を分かってると思いきや、覚えていない箇所がもう多数。最初のほうのまだ基礎的な章でも「そうなの?!?!」と目から鱗な発見がたくさんありましたし、1回目に読んだときに引いた赤線を見て「ぜったい分かってなかったやろ」と過去の自分にツッコミを入れたりしていました。

ですが2回目に読むから何も学びがない、なんてことは全くなく、むしろ1回目よりも吸収できたものは多かったと思います。これは自分自身が、例えばオブジェクト指向を学ぶことでクラスの章を、JavaScriptのコールバック関数を学ぶことでProcとyieldの章を理解しやすくなったのが背景にあると思いますが、それ以上に、読むたびに新しい発見を得られるチェリー本の奥行きの深さにあるのだと思いました。こう表現するのが適切か分かりませんが、チェリー本は私にとっていわば「スルメ本」でした(噛んでも噛んでも味がある)

その意味でさらに楽しみなのが、3回目に読むときです。 チェリー本のあとがきにこうあります。

筆者としてはできれば「1回読んだら終わり」ではなく、少し間を空けてもう一度読み直してほしいと考えています。読み直すタイミングは「Rubyプログラミングの経験値が上がってきたころ」が最適です。

オリジナルのWebサービスを作ったり、業務で四苦八苦しながら新機能を作り上げたりしたあと(もしくはその最中に)本書を読み直すと、最初に読んだときには気づかなかった新たな発見があるはずです。

次は自作サービスを作り終えたときに、通しでじっくり読みたいと思います。「自作サービスもっとこういう書き方できたなーー」とか今とは違った印象を受けるのかなぁ(そのまたリファクタリングすればよし)

これからの目標

Ruby技術者試験のひとつである「Ruby Silver」の試験を受けることにしました。申し込みは済みです。試験日は来年の1月29日(日)です。こういう試験はとりあえず申し込んでしまって自分にプレッシャーをかけるのがコツです(どや)

せっかく輪読会をしたのだから何か形に残したいし、まだまだ分からないことがたくさんあるのでRubyをもっと深堀りしたい。合格に向けてコツコツ継続したいと思います。あと、一部のWeb系企業が入社の条件に「RubySilver取得」を求めていて、転職活動のときに焦って取るよりもまだ余裕のある今のうちに取っておこうとと思いました。

最後に

輪読会をスタートさせたときは「これ終わるの?」と思ったほど長い道に見えましたが、今は無事に完走できてホッとしています。そして、次に読むときにはもっとWakaran!な箇所に出会えるのかも?と思って楽しみです!(来年5月のRubyKaigiの前後に読むのもいいかも?)

フィヨルドブートキャンプアドベントカレンダーVol.2、明日21日はsiso255さんです。

ここまでお読みいただき、ありがとうございました!

Kaigi on Rails2023に参加しました

10月27日(金)〜28日(土)の2日間にかけて東京で行われた、Kaigi on Rails 2023に参加しました。 公式なカンファレンスに参加するのは、今年5月のRubyKaigi2023以来でした。

去年のKaigi on Rails 2022のときはすでにフィヨルドブートキャンプで学習を始めていて存在は知っていたのですが、 そのときは今ほどの熱もなく「なんか盛り上がってるな。でも自分は初学者すぎて関係ないか。レベル高そうだし」と思って参加をスルーしてました。

ですが今回は初めてのオフライン開催、そして自分もフィヨルドブートキャンプである程度はRailsに親しんだ身。すぐに参加を決めました。 会社への有給申請はチケット取った後です(この辺、ゆるい会社でよかった)

さて結論ですが、行ってよかったなと思います。講演の内容をある程度理解することができ、面白さを感じられたのが良かった。 RubyKaigiでは講演で話されていることをほとんど理解できなかったのですが、Kaigi on Railsでは「分かる…!!分かるぞ…!!!」と感じられてとても楽しかった。

もちろんすべての内容を理解できたわけではないんですが、 それでも、これからの学習に対するモチベーションが大いに喚起されました。触発された感じ。

技術面で言えば、ActiveRecordとHotwireをもっと深堀りしたいと思いました。講演を聞いていちばんワクワクしました。 自作サービスでRailsとHotwireを取り入れていきたいと思っているのでちょっとずつ勉強したい。

しかし輪読会などに参加しても思うんですが、知れば知るほどやりたいことや知りたいことがドンドン出てきて収集が付かなくなってしまいますね。 輪読会では正規表現とかオブジェクト指向ももっと深堀りしたいって思ったんだよなぁ(そして家に技術書が無限に積まれていくという)

フィヨルドブートキャンプの卒業生の方が多く講演していました。日頃から持つ自分の考え、想い、業務を通じて得た知見をイキイキと分かりやすく話していてすごくかっこいいなぁと思いました。 ペアプロしようぜ!の講演は、あんすとさんのハイパープレゼンテーションや残り1秒でテストが通ったブザービートが特に…!

卒業生ということは、僭越ながら自分のような現役生の延長線上にいると言えなくもないのではと考えると、Kaigi on Railsはじめカンファレンスで講演している未来の自分を夢想してしまいます。今やってることの延長線上にこの妄想はセットされていたらいいなぁと思いながら、学習に励んでいきたいもんです。

いろんな参加者の方との交流も、大きな収穫でした。フィヨルドブートキャンプ関係者にたくさんお会いすることができました。 2日目の夜の懇親会では30人ぐらい?!集まっていて会場の中でも一大勢力だったのではと思います。

楽しかった2日間でしたが、ただただ「楽しかった!」で終わらせるのはもったいない。 これからやることをまとめました。鉄は熱いうちに打て。少しずつ着手していきたいと思いますー。

・Hotwire.love(Hotwireの勉強会)に参加する ・チーム開発でペアプロ/モブプロをやってみる(これは詰まったときかしら) ・ActiveRecordのドキュメントをしっかり読む ・フィヨルドブートキャンプのtogoさんに就活相談する ・気になった講演の資料/アーカイブを見て復習する(Qiitaにまとめ記事がある)

node_modulesを誤ってGitHubにpushしてしまったら

JavaScriptのプラクティスで、node_modulesをGitのトラッキング対象に含めてはいけないことを知らず、node_modulesをGitHubにpushしてしまいました。

その結果、File Changedが5,000件以上になりGitHubが大変なことになってしまいました。

GitHub上のnode_modulesを削除する方法を備忘録として書いていきます。

1. .gitignoreファイルの作成

エディタから、もしくは、ターミナルからならば以下のコマンドで、空の新規.gitignoreファイルを作成します。 既に存在している場合は既存のものを流用しましょう。

$ touch .gitignore

2. .gitignoreにnode_modelesを記述

.gitignoreのDependencyに、以下のようにnode_modules/を記述します。

# Dependency directories
node_modules/
...

3.node_modulesをGitのトラッキング対象から除外

ターミナルで以下のコマンドを打ち、node_modulesをGitのトラッキング対象から外します。

git rm -r --cached node_modules

あとは、node_modulesを管理対象外にすることによって生じた差分をGitHubへ取り込むためにコミット&プッシュすればOKです。

RubyKaigi2023に参加しました

はじめに

2023年5月11日〜13日に長野県松本市で行われたRubyKaigi2023に参加してきました。

RubyKaigi2023@まつもと市民芸術館

自己紹介

私は2022年8月1日から、オンラインプログラミングスクールのフィヨルドブートキャンプでRubyを中心としたWeb開発を学んでいます。

今はJavaScriptを使ったCLI上で動くメモアプリや、自分でアイデア考えて実装するnpmを作ったりしています。

 

参加するに至った経緯

RubyKaigiに参加するのは今回が初めてでしたが、私が昨年8月にフィヨルドに入会して1ヵ月後に三重県津市でRubyKaigi2022が行われていて、フィヨルド内やTwitterがとても盛り上がっていたのを覚えています。

ですが正直なところ「すごく興味はあるけど国際的なカンファレンスで自分みたいな初心者にはハードル高いな…」と思っていました。

しかし今年FBCでフィヨブーハウスという企画をしていただきました。これはFBCがRubyKaigiの近くのシェアハウスをまるっと1棟借り上げて、受講生に向けて宿泊料無料で用意しようというものです。

フィヨブーハウスのおかげで金銭的なハードルも下がり、他の受講生との交流できるようになりました。フィヨブーハウスの案内が出た当日に申し込んだと記憶してます。

また、行きはクックパッドさんが新宿から松本までの特急列車の1号車を貸し切る「Rubyisit on Rails」に乗せてもらいました。

隣のひとと何を話せばええんや状態でしたが隣の方もフィヨルドブートキャンプでの受講生で、しかも数日前にフィヨルドブートキャンプ内で開催されたLT会で一緒になった知り合いの方で安心しました。

フィヨルドブートキャンプの課題の話や、RubyKaigi期間中の予定、自作サービスのアイデアなどを話すことができました。

講演

1日目〜3日目にかけてRubyKaigiの会場でさまざまな講演が行われました。基調講演やLTなどもあり、1つの講演がおおよそ30分ほど。A〜Cの3会場に分かれて10:00〜17:00頃まで続きます(11:30〜13:30までお昼休み)

さて講演ですが、ほとんど内容が分かりませんでした。プログラミング用語は単語の意味として耳に入ってくるんですが、文章全体として理解しようとすると「?」が続いてほとんど理解が進まず…。全体の理解度は10%も無いんじゃないかなと思います。

それでも、英語の講演を聴いていたら以前海外駐在していたときの英語の耳が蘇ってきたのか「おっ!ちょっとだけど何言ってるか分かるぞ!」みたいなときもあり嬉しかったです。

また、自分はどうも「SQLite」「N+1」「DB」みたいなデータベース周りの講演に興味を惹かれることが多かったです。こっちの関心が強いのかな?

今年はほとんど歯が立たなかったのですが、次に参加したときは理解度が上がっているといいなぁと思います。

 

夜の過ごし方

1日目の夜はオープニングパーティ、2日目の夜はAgileWareさんのDrinkUpに参加しました。

オープニングパーティは会場に500人はいるんじゃないかと思うぐらい盛況で、フィヨルドブートキャンプの現役生や卒業生、メンターの方ともお話しできて嬉しかったです。フィヨルドブートキャンプの関係者の数の多さにびっくりしました。

1日目に最後の講演を聴いていると、偶然、隣に座っていた方と夜に飲みに行くことになったり、2日目にはDrinkUpで話が弾んだ方といっしょに2次会に行ったりしました。

ご縁というか偶発性というか、2日連続で今まで会ったことのない方とご一緒する機会に恵まれました。その飲み会でも話題が多岐に渡ってとても楽しかったです。

 

観光

2日目に会場近くの「松本市民美術館」、「あがたの森公園」へ行って観光しました。天気にも恵まれてとてもリフレッシュできました。

松本市民美術館
あがたの森公園

まとめ

Rubyコミュニティの熱量の高さ、Rubyというプログラミング言語の奥深さと裾野の広さ、Rubyisitの方のNiceな人柄を感じる3日感でした。

平日勤めの会社員としてはGW明けの3日間、会社を休んで参加するのはとても勇気のいることでしたが、参加してほんとうによかったです。来年の沖縄までにもっと力を付けて、Niceに活動できるようになりたいです。

RubyKaigiオーガナイザー、スタッフ、関係者の皆さま、本当にお疲れさまでした&ありがとうございました!

VSCodeオススメ拡張機能Top20(Qiita記事引用)

今後同じように設定するときのための備忘録として。フィヨルドブートキャンプのメンター・伊藤さんから教えてもらった。すべての拡張機能をインストール。

qiita.com

Code Spell Checkerをインストールしたものの、Rubyプログラムには標準でチェッカーが効かないようなので以下の手順で有効化させた。

  1. 拡張機能 > Code Spell Checker > 設定 >  拡張機能の設定
  2. 画面下部「Enabled Language Ids」
  3. 項目の追加でrubyを追加

 

 

スペルミスに青の波線が出るようになった。便利そう。よしよし。