Eat, Play, Nap and Code

食とあそびと昼寝とプログラミング学習

npmが何か分からない人がemoji-grassをインストールした手順

f:id:eatplaynap329:20210608165503p:plain

はじめに

こんにちは。輪読会で毎朝一緒にチェリー本を読んでいるブートキャンプの仲間のyana_gi (id:yana_g)さんが、emoji-grassというnpmを作ったそうです!

www.npmjs.com

yana-g.hatenablog.com

めっちゃかわいくないですか!?GitHubの草をコマンドライン上で好きな絵文字(や文字)に変えて表示できるんです!

↓は私のGitHubアカウントで試してみた様子です。恥ずかしながら閑散としてますが、かわいさは伝わるんではないでしょうか!?

f:id:eatplaynap329:20210604163250p:plain

f:id:eatplaynap329:20210604163316p:plain

かわいすぎるので、npmが何かもJSのことも何も分かってないのに頑張ってインストールして使っています! ぜひ皆もインストールしてコマンドラインに草(や🍺やお好きなもの)を生やしましょう🌱

…なんですが、やなぎさんのブログを参考にいきなり$ npm installをしたらエラーが出てしまったので、JS初心者向けに私がインストールした方法をまとめておきます〜〜! (※私は参考URLに貼ったブートキャンプの先輩のchiroruさんと、emoji-grass作者のやなぎさんのブログを見てインストールしました。おふたりのブログを見れば100%事足りるのですが、emoji-grassのファンガールなのでemoji-grassに特化した手順一覧となっています…😆)

もくじ

想定読者

  • Homebrewはインストール済み
  • JavaScriptの開発環境を構築してない
  • npmが何かわからない
  • 1回くらいはGitHubに草を生やしている
  • emoji-grassを使ってみたい

手元の環境

  • macOS Big Sur バージョン 11.3.1
  • zshを使ってますので、bash等を利用されている場合は適宜読み替えてください(zshrcbash_profileとか)

手順

その1: nvmのインストール

HomebrewでNode.jsのパッケージ管理ソフトのnvmをインストールします。chiroruさんのブログ記事を逐一参考にさせていただきました。

$ brew install nvm

インストールが完了すると、次に取るべき手順が↓のように表示されているので、そのまま従います。

You should create NVM's working directory if it doesn't exist:

  mkdir ~/.nvm

Add the following to ~/.zshrc or your desired shell
configuration file:

  export NVM_DIR="$HOME/.nvm"
  [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

.nvmというディレクトリを作れと言われているようなのでその通りにします。

$ mkdir ~/.nvm

シェルの設定ファイル(私の場合.zshrc)を開いてexport以下の文章を書き加えて保存します。

$ vim ~/.zshrc

パスを通します。

$ . ~/.zshrc

インストールの確認をします。

$ nvm --version
0.38.0

バージョン番号が出てきたらちゃんとインストールできています!

その2: Node.jsのインストール

次に、nvmを使ってNode.jsをインストールします。

$ nvm install node

安定版のNode.jsをインストールします。

$ nvm install --lts

インストールの確認をしてみましょう。

$ nvm ls

↑のコマンドで↓のような情報が返ってきたらインストールできてます!

       v14.17.0
->      v16.2.0
         system
default -> node (-> v16.2.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.2.0) (default)
stable -> 16.2 (-> v16.2.0) (default)
lts/* -> lts/fermium (-> v14.17.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.1 (-> N/A)
lts/fermium -> v14.17.0

Node.jsがインストールできればnpmコマンドも使えるはずなので、チェックしてみます。

$ npm -v
7.13.0

バージョンが返ってくれば問題なさそうです。

その3: emoji-grassのインストール

グローバル環境にemoji-grassをインストールします。(※ここから先はやなぎさんのブログの方が詳しいです。一応自分がやったことを記録しておきます)

$ npm install -g emoji-grass

GitHubのアカウント情報を取得するため、Personal Access Tokensアクセストークンを取得します。 適当に名前をつけて、権限には何もチェックを入れないで取得します。 ↓のような画面でコピーできます。

f:id:eatplaynap329:20210607120420p:plain

$ emoji-grass settoken アクセストークン

これで設定は完了してるはずなので、↓でコマンドライン上に草やいろんな絵文字を生やせます。

$ emoji-grass GitHubのアカウント名

試しに私のアカウントでやってみると、

$ emoji-grass eatplaynap
                                                                                                      🌱
                                                        🌱                  🌱🌱                      🌱
                                                🌱        🌱                🌱
                                                🌱            🌱
                                                🌱        🌱        🌱    🌱                        🌱
                                                🌱                      🌱
                                                🌱            🌱
$ emoji-grass eatplaynap -c 🍣
                                                                                                      🍣
                                                        🍣                  🍣🍣                      🍣
                                                🍣        🍣                🍣
                                                🍣            🍣
                                                🍣        🍣        🍣    🍣                        🍣
                                                🍣                      🍣
                                                🍣            🍣
$ emoji-grass eatplaynap -c 🤡
                                                                                                      🤡
                                                        🤡                  🤡🤡                      🤡
                                                🤡        🤡                🤡
                                                🤡            🤡
                                                🤡        🤡        🤡    🤡                        🤡
                                                🤡                      🤡
                                                🤡            🤡

かわい〜〜!!

参考URL

週報 2021/5/24(月)〜2021/5/30(日)

📚 1週間の感想

こんにちは〜。暑い暑い! 私の住む関東はまだ梅雨入りしていないですが、関西や九州に住むブートキャンプの受講生から梅雨入りした話を聞きました。

前職で船便で商品を輸入していたときは、台風が来ると船の到着が遅れ、納期がズレるので今からの季節はヒヤヒヤしてました。でも、台風が物流に影響があると初めて知ったときは、ちょっと感動したのを覚えています。 自分の身近にある事象が、国際物流のようなブラックボックスと思いこんでいたものに直接関わっていることを知るのって、世界が有機的に繋がっていることの証のようでなんか感動的だな〜と思います😆

Webアプリケーションのプラクティスは、自分にはほんと〜〜に難しくて心が折れまくっているんですが、こうやってブログを書いたり、オンラインで知り合った人と心の通った交流ができたりするのもWeb技術のおかげなので、ちょっとずつ理解を深めてブラックボックスじゃなくなればいいな〜と思ってます💪

📚 もくじ

📚 今週やったフィヨルドブートキャンプのプラクティス

  • Sinatra を使ってWebアプリケーションの基本を理解する

📚 目標と成果

目標 成果 来週の課題
Sinatraメモアプリ動作版完成 OK 合格
疑問を1つ解決する JSONの挙動分かった 不明点出てきたら質問して解決しよう
輪読会全出席 OK 引き続き!

📚 学習時間

日付 時間
5/24(月) 03:45
5/25(火) 05:45
5/26(水) 05:15 ​
5/27(木) 04:30
5/28(金) 02:45
5/29(土) 01:45
5/30(日) 05:00
合計 28:45

📚 週報

📅 5/24(月)

💪 やったこと

🍕 感想

  • なんか昨日1日Sinatra触らなかったら全然分からなくなってしまった!?!?土曜日ちょっと分かったと思ったのにな〜。
  • コードが汚くて落ち込む。ちょこちょこリファクタリングしたくなるけど、とりあえず動くものを作ってからかな。
  • 日報を書いてないから週報が書けない😡

📅 5/25(火)

💪 やったこと

  • チェリー本輪読会1日目!とても楽しかった&勉強になった。主催者の自分が1番無知で冷や汗をかいたけど、積極的に分からないを伝えられる場にしていきたい。
    • HackMDに輪読しながらまとめてるのだけど、自分の感想部分だけScrapboxにまとめなおしてこの日報に貼れるようにしようかな?
  • シナトラは、削除機能を実装させられた。感動して登録→削除を何回もやった。早く編集機能を実装したい。
  • Sinatradeleteメソッド、中にファイルを開く処理を書けばそのままDELETEされるのかな?という勘違いをしていた。ちゃんとRubyでファイルを削除する処理を書いて、その処理をHTTPリクエストで実現する。

🍕 感想

  • 競プロもブログ(週報)も勉強のために始めたんだけど、だんだん趣味になってきている。楽しいから続けている感じだ。輪読もそういう趣味の一環になったらいいな。
  • 全国のRubyコミュニティって何で存在するだろう?仕事のコネクション作りですらなくてプログラミングで遊ぶって何?意識高すぎてついていけない、と思っていたけど、輪読会でRubyのことを話すのや聞くのは確かに楽しい。真剣に向き合っているものについて同じ志の人と意見を交わすのは、対象が何であっても楽しいんだろう。

📅 5/26(水)

💪 やったこと

  • チェリー本輪読会参加。ブートキャンプ生の日報でのまとめのおかげで、丸め誤差について理解が深まった。
  • Sinatraメモアプリ、なんとか動くものができた。ファイルを編集する処理はブートキャンプの卒業生id:masuyama13 さんのブログがググったら出てきたので参考にさせていただいた🙏

masuyama13.hatenablog.com

JSONファイルを更新するには、全てを読み込んで更新したデータを丸ごと上書きすることになる。追記や削除、一部変更というのはできない。

  • ↑これが分かっていなかったので、一部変更をする処理を書いて詰まっていた。ありがたい〜
  • あとはXSS対策をして、コードをきれいにして、CSSを付けて、GitHubで提出すればOK!(こう書いてみるとやること多!!)

🍕 感想

  • ここまで来るの長かった〜。何も分からん状態からよくやった!
  • 余談だけど、自分はDiscordのチャンネルの未読は基本ゼロ(趣味チャンネルでミュートにしてるものもあるけど)。なぜならめちゃくちゃめちゃくちゃ気になってしまうから。たまに「頑張って未読をゼロにした」とおっしゃってる人は自分にとって不思議な存在だ。逆に私は読まないように頑張るべきなのかも…。

📅 5/27(木)

💪 やったこと

  • チェリー本輪読会参加。
  • メモアプリのリポジトリようやく作成。久々にリポジトリ作ったりしたのでGitHubの復習もした。
  • Hey社の公開カジュアル面談見学イベントに参加。

hey.connpass.com

🍕 感想

  • カジュアル面談ってよく聞くけど何?と思っている中、擬似カジュアル面談(ほぼ初対面のHeyの勝亦さんとRettyの常松さんが、常松さんがHeyを受けに来ているというテイで、勝亦さんが採用担当として質問に答えているところを見るイベント)を開催していただいて、就活の心構えや質問の仕方などがとても参考になった〜!
    • 普段自社の採用面談もされている常松さんが「自分が聞かれたら困ることを聞いてみた」と仰っていて、たしかに知りたいけど聞くのはためらわれるような質問が飛び交っていてエンタメとして見応えもあった!
  • 私はあんまり万人受けしない性格だと自覚しているので、カルチャーマッチを重視と言われるとかなり心細い気持ちになる。技術力でNGと言われるのは仕方ないかなと思うんだけど、カルチャーマッチしないことで落ちたらかなりへこみそうだし、自分に合うカルチャーの会社なんてあるのかな?とも思うので就活は憂鬱😢
  • Heyで働いているエンジニアの方が、「やっと働きたい会社に出会えた」とおっしゃっていて、かなり意外な気持ちだった。技術と経験のあるエンジニアは引く手あまたと聞くし、IT企業もたくさんあるので、たくさんある選択肢から給与とかポジションで選んで転職しているのかと思っていた。エンジニアになったら「エンジニアクラブ」の一員になり、利益や合理性だけを追求する、画一的な価値観になるのではないかという偏見があったからかもしれない。
  • 仕事の楽しさか、待遇か、人間関係か、会社の理念かどれかひとつを選ぶのが就活だと思っていたので、全部選べることもあるというのが私は心底驚いた。
  • Hey社の事業内容や理念を聞くと、私もHeyのプロダクトのあるほうの世界線に住みたい!と思ったから、Heyの皆さんが自社のプロダクトを大好きなのも納得。
  • 話を聞いていて、1社最高に自分に合った会社に出会えれば別に万人にウケなくてもいいか!と思えた。だからこそカルチャーマッチが重要なのかも。そしてカルチャーマッチを知るためにカジュアル面談があるんだな〜。
  • 私はジュニアだからそんなになんでも選べるわけじゃないと思うけど、自分の価値観を理解して発信しつつ、人やものごとのいいところを見るようにすれば自分に合う会社できっと働けるはずだと信じている😄

📅 5/28(金)

💪 やったこと

  • チェリー本輪読会1週目終了。
    • 最初のメンバー5人から、本参加の方が3人くらい増え、ラジオ参加の方も数名来てくださるようになった。ワイワイ!
    • 今日は文字列について。一人で読んだとき使う場面が思いつかなかった%記法、ヒアドキュメント、空文字を使う場面について、Railsのプラクティスや他言語での実務経験から実例を教えてもらえてとても勉強になった。
    • 月曜日が待ち遠しい!
  • 昨日の日報を書いた。
  • 用事があったのでSinatraはお休み。週末中に1度提出したいのでがんばるぞ。

🍕 感想

  • Discordで最近お見かけしなくて寂しい…と思っていた方の近況を知れてホッとした。
  • 輪読会メンバーやツイッターで知り合った方々もだけど、直接会ったことない人たちが自分の中で本当に大きな存在になっているのを実感する。インターネットに感謝🙏
  • エモい日報のほうが後から読むと面白いこともあるな〜と思ったので、恥ずかしいけどエモい感想文を昨日の日報(↑のHey社の感想)にしたためた。まああとで読んだらこんなこと思ってたんだな〜という記録になるし。

📅 5/29(土)

💪 やったこと

🍕 感想

  • なんかダラダラ日報を書くだけの学習になってしまって残念。
  • 仕事をせずに勉強してるとメリハリをつけるのが難しいなと思う。気晴らしもNetflixをダラダラ見てるだけになりがちだし。最近はアニメの美味しんぼを見ている。

📅 5/30(日)

💪 やったこと

  • メモアプリの動作版ができたので、PR作って修正したりちょっとずつコミットしたりした。
  • Git、難しいから敬遠していたけど、これ本当最初にリポジトリ作るべきだった‥提出用に必要だからとかでなく。作業しながらコミットしつづけて、履歴が残るのがすごいありがたいと思った。履歴があると思うと大胆に色々変えられるし。
  • 『達人プログラマー』を聞いてなかったらGit怖い…のまま提出用にイヤイヤPR作ってただけだと思うので、便利さを使って知れてよかった。
  • Sinatraメモアプリは自分で壊さないで出来る範囲で
  • リファクタリングして、XSS対策をしてみた。あとREADMEだけ書けば提出できるはず…(歓迎要件のCSSは諦めました😇)!
  • AtCoder Beginner Contest 203(Sponsored by Panasonic) - AtCoderに参加。結局Bまでしか解けない。C問題で10億円くれる友達が何人もいる太郎君が妬ましくて寝た。

🍕 感想

  • ABC、C問題は毎回解けないけどたま〜〜に解けるやつもあるから諦めずに続ける。とりあえず素朴なロジックでTLEさせられるとこまで書ければ解説も頭に入るので、一旦はそれが目標かな。
  • Sinatra、READMEだけ書いたら提出しちゃお!

📚 来週の目標

  • メモアプリ(JSON版)合格
  • メモアプリ(DB版)動作版完成
  • YouTubeをサボらずアップする

週報 2021/5/17(月)〜2021/5/23(日)

📚 1週間の感想

こんにちは。もうだいぶ暑いっすね!自分は暑いのが苦手なのでこれからしばらく憂鬱です〜😭 今週は後半になってSinatraメモアプリのコードをやっと書き始められました。まだ動作版の完成には至ってないですが、やるべきことが分かってきたのでコードを書くのが楽しいです。

あとは、Twitterでこんなことを呟いてみました。

何の気なしに呟いただけなんですが、思ったよりたくさんの方にご興味を持っていただき、最終的にブートキャンプ生5人でチェリー本輪読会をスタートすることになり、今日(5/25)初回を行いました😆 すっごい楽しかった!皆で読むと色んな意見が出て、理解も深まるしかなり面白いです。

イベントを主催するとか全く想像してなくて何も分からん…状態だったんですが、色んな方に助けてもらいながらなんとかできたので、なんかやりたいことがあると気軽に呟いてみるといいかもしれないですね。Twitterってそういう場所だと思ってます!!(クリフハンガー)

📚 もくじ

📚 今週やったフィヨルドブートキャンプのプラクティス

  • Sinatra を使ってWebアプリケーションの基本を理解する

📚 目標と成果

目標 成果 来週の課題
Sinatraメモアプリ動作版を完成させる 完成してないけど終わりは見えてきた がんばれ〜
1回質問する(形式問わず) した! 週1回は質問タイム参加しよう

📚 学習時間

日付 時間
5/17(月) 00:15
5/18(火) 03:30
5/19(水) 07:00 ​
5/20(木) 05:30
5/21(金) 02:30
5/22(土) 02:30
5/23(日) 00:15
合計 21:30

📚 週報

📅 5/17(月)

💪 やったこと

🍕 感想

  • 兄の結婚式で遠出していたんだけど、やっと家に帰ってこられた!
  • 学習は、やらないよりましと思って15分だけやった。全然頭に入ってないけどまあいいや。

📅 5/18(火)

💪 やったこと

  • メモ詳細ページを作ろうとがんばるが、各メモを識別するIDの振り方が分からず悩む。
  • paizaの通りtxt形式で保存させていたが、日報を見ると、ほとんどの人がJSON形式で保存しているようなので、JSONについて調べた。

    JSONについて

  • JSONは構造化したデータを表すためのデータ記述言語のひとつ。
  • データを階層的に並べることで構造を表現する。
  • 文字列以外に、数値や空を表すデータも扱うことができる。
  • データファイルは小さめなので、ネットワーク転送速度は速くなる。
  • XMLと比べ、人間には読みにくい。
  • JavaScriptで書かれたプログラムではJSONをそのまま(XMLのようにDOMを利用せず)JavaScriptとして読み込むことができる。
  • Rubyではライブラリのひとつとして用意されている。 library json (Ruby 3.0.0 リファレンスマニュアル)
# requireでJSONモジュールが使えるようになる
require 'json'

# to_jsonメソッドで、ハッシュをJSON形式に変換
p ({name: eatplaynap}.to_json) #=> "{\"name\":eatplaynap}"

# JSON.parseメソッドで、引数で渡したJSON形式の文字列をハッシュへ変換
result = "{\"name\":eatplaynap}"
hash = JSON.parse(result)
p hash #=> {"name"=>eatplaynap}

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

🍕 感想

  • 部屋がごちゃごちゃで学習の妨げになっていたので、気合を入れて片付けた。
  • 2日間サボっていた競プロYouTube再開できてうれしい。

📅 5/19(水)

💪 やったこと

🍕 感想

  • Sinatraやっと何すればいいかが分かってきて嬉。getメソッドでブラウザで'Hello World!'を表示させるハードルは確かに低いけど、その後はめちゃくちゃ難しい気がする…。あと資料が少ない…😭
  • ポモドーロをまた再開させた!今使ってるアプリは自分で25分→5分→25分→…のタイマーを押す必要があり、休みを伸ばしたりしがちだから何か別のアプリを試してもいいかも。

📅 5/20(木)

💪 やったこと

  • JSON形式で保存したファイルを開き、タイトルを一覧ページに表示させることに成功した。

isshi-hasegawa.hatenablog.com

  • 自分の書いたlsコマンドのコードも参考になった。でも久々に見たらめっちゃリファクタリングしたい!!というお気持ちになった。
  • 一覧ページから各行のリンクを作ろうとして、IDとマッチするURIをリンクするコードを書いてて、そもそも各メモ詳細ができてないことに気づく。
    • 久々に参加した質問タイムで、 File.openをget /memos/:id doの中でやるというヒントをもらったので、明日実装していきたい。
    • ファイルを開く処理は、一覧ページを取得するメソッドの中ですでに書いていたので、切り出して再利用すべきか?と思って難しくて分からなくなっていたので、一旦重複する処理を書いて動くものを作るという当たり前の視点が欠けていた。

🍕 感想

  • 質問・雑談タイムへの参加時間を学習時間に含めることにした。というのも、16時から1時間学習を中断することになり、ただでさえ少ない学習時間が更に減ってしまう!というのが参加のハードルになっていたため。1時間質問したり、他の人と交流したり、質問を聞いたりするのも立派な学習だもんね。
  • チェリー本輪読会、Discordで募集してみた。数年前の自分だったら自意識過剰で誰も参加しないんじゃないかと思ってこういうこと出来なかったな。YouTubeも無理だっただろうし。成長してるな。

📅 5/21(金)

💪 やったこと

  • ほぼずっとためてしまった日報を書いてたみたい。
  • チェリー本の輪読会のオリエンテーションの日程を決めた。

🍕 感想

  • Rubyを始めたばかりというフィヨルド外の方にYouTubeを見てもらった感想をいただいた!めちゃくちゃ嬉しい…🥺(フィヨルド内の方の感想もめちゃくちゃ嬉しいです!!)
  • チェリー本の輪読会楽しみだ〜!でも自分が主催することになると思わなかったので、大丈夫か?という気持ちでいっぱい。

📅 5/22(土)

💪 やったこと

  • Sinatraメモアプリ、一覧からメモ詳細に飛べるようにできた! get '/memos/:id' で詰まったのは、このメソッドの中で、ファイルの中身のID情報からURIを指定する処理をしようとしていたから。考え方が逆だった。URIのID情報が先にあって、開くファイル名をあとから指定するという考え方でうまく行った💪
  • チェリー本輪読会の打ち合わせDONE💪 平日毎日やってるはずなので、興味がある方はぜひ覗いてみてください😆
  • エイシングプログラミングコンテスト2021(AtCoder Beginner Contest 202) - AtCoderに参加。C問題歯が立たなくてかなし〜😭

🍕 感想

  • チェリー本輪読会の方向性決めの話し合いを行った。参加してくれる皆さんが良い意見をたくさん出してくださり、主催者として本当にありがたかった。とりあえずワイワイ楽しくRubyを学んでいければいいな〜(自分はあわよくばAtCoderで書いてるコードも洗練させたい)。
  • Sinatraは分かった!→分からん!→分かった!→…を繰り返してる。『Webを支える技術』のHTTPのところまた読み直してみるか。

📅 5/23(日)

💪 やったこと

🍕 感想

  • マサカリというものについて、投げる自由もあるのと同時に無視する自由もあるので、その上で正しければ取り入れることもあるんでは?という認識。なんでも技術的に正しければ素直に聞き入れるべきだとは私は思わない。
  • しかし、全角と半角を混同させて使う昔の職場の先輩に対して抱いていた憎しみを思い起こすと、自分はマサカリについて何を言える立場でもないかもしれない。

📚 来週の目標

  • Sinatraメモアプリ動作版完成
  • 疑問を1つ解決する
  • 輪読会全出席

週報 2021/5/10(月)〜2021/5/16(日)

📚 今週の感想

今週というかもう水曜になってしまいました…! Discordのニックネームをaddcommitpushに変え、ハチャメチャに勉強するつもりだったんですが、案の定というべきか慣れないことをしたせいか夜寝れなくなり、メンタルの調子とプラクティスの進み具合がメキメキ悪くなってしまいました。

もうeatplaynapに戻ったので、こうやって週報書けるくらいまで回復しました。 自分がいつまでも変われないのはちょっと悲しいですが、楽しく勉強するのが1番なので無理せず自分のペースでやります。

📚 もくじ

📚 目標と成果

目標 成果 来週の課題
Sinatra課題のタスクをもうちょっと詳細に詰める OK -
HTMLの復習を軽くやる OK -
Sinatra課題1度提出する NG 動作版完成
ActiveRecordのドットインストールの講座を流し見 1話だけ 全部見てみる
やる気を失わずにやるべきことをやる ? 引き続き

📚 学習時間

日付 時間
5/10(月) 05:00
5/11(火) 06:00
5/12(水) 05:15 ​
5/13(木) 04:00
5/14(金) 04:15
5/15(土) 03:15
5/16(日) 00:15
合計 28:00

📚 週報

📅 5/10(月)

💪 やったこと

🍕 感想

  • ドットインストールよりもpaizaを見ればよかったかもしれない。
  • 週報毎週書いてて偉い。

📅 5/11(火)

💪 やったこと

  • Sinatra | Webapps for Beginnersを読んでみる。Sinatraが自転車だとしたら、Railsは車。Rackは靴みたいなものらしい。RackってXSS対策のときに書いてたやつだ。
    • このサイト、コードもたくさん載っていてメモアプリに使えそうだけど、Rubyの文法知識の穴のせいで分からない箇所が多い。
    • ハッシュをしっかり学ばないとダメっぽい。チェリー本で復習しようかな。
    • Groups of routes | Webapps for Beginnersの表をURI設計とerbファイル名に参考にしよう。membersをmemosに変更すればそのまま使えるな。
  • Yusuke (id:yskmtg) さんがオーガナイズしてくれた前々回のLT会でYusukeさん自身が発表した内容がSinatraだったな…と思い出し、スライドを見てみる。機能を言語化、図を書いてイメージ。よさそう。 speakerdeck.com
  • いざページを書こうと思ってもHTMLがよくわからないので、freeCodeCampで復習した。paizaやドットインストールの無料動画分でもかなり勉強できるし、Duolingoもあるし、無料で色々教材にアクセスできてインターネットはすごい。
  • A - Placing MarblesYouTube用に解いた。これは競プロ始めて最初の頃解いた問題なので、コードを見比べてみた。比べると、実行速度は全然変わってないけど、Rubyでできることは増えたのがよく分かる😆
# 😄 3月31日のコード
input = gets.to_s.chomp.split("")
output = 0
input.each do |x|
  if x == "1"
    output += 1
  end
end
p output

# 😄 5月11日のコード
def cal_sum_of_ones(s)
  puts s
end
 
cal_sum_of_ones(gets.chomp.to_s.chars.map(&:to_i).sum)

# 😄 今考えるとto_sいらないし、ここまで短くもできるな
s = gets.chomp.chars.map(&:to_i).sum
puts s

🍕 感想

  • 前提知識が足りていないのか、何をすればいいのかが分からなくて、調べる→分からない→更に調べる→分からない…のループを繰り返していて進歩が感じられず辛い😭
    • メンターさんより、「n回ループを繰り返したら質問する」というふうに機械的に質問ルールを決めるのをオススメいただいた。学習が進むにつれ質問のハードルを自分で無意味にあげてしまっているので、「もうちょっと調べれば分かるかも」という時点で聞くことを心がけるべきかもしれない。瀕死になるまで自力でがんばるのではなく、まだ元気とやる気があるうちにセーブしておくようなイメージだ。
  • ER図の課題も何を読んでも何も分からん状態から課題合格できるくらいまで行けたので、毎日諦めずに取り組んでいれば現状打破できると信じたい。

📅 5/12(水)

💪 やったこと

  • チェリー本でハッシュとシンボルの復習をした。
    • 単位変換プログラム、最初に読んだときはただ写して試すだけだったけど、今回説明を読んで自分でコードが書けたのはうれしかった。lsコマンドやwcコマンドでRubyの基本動作が理解できたのと、毎日A問題を解いているからだと思う。
  • ハッシュで繰り返し処理をするとき、ブロック引数を1つにするとキーと値が配列に格納されることを知った。というのも先週ABCのC問題の復習でeach_valueメソッドを使って値を取り出すコードを書いたばかりだったので。前のコードの方がいいと思うけど、↓のような書き方で値を取り出しループされることができる。
n = gets.to_i
a = gets.chomp.split(" ").map(&:to_i)
array = a.map {|element| element % 200}
hash = array.group_by(&:itself).map{|key,value| [key, value.count]}.to_h
ans = 0
hash.each do |key_value|
  ans += key_value[1] * (key_value[1] -1) / 2
end
 
puts ans

🍕 感想

  • あまり元気が出ないけど、とりあえず日報を途切れさせないようにしたい。
  • 分かってないことと分かってることを整理したい。
  • Sinatraが分からなくて辛い分、競プロがめっちゃ楽しい〜。

📅 5/13(木)

💪 やったこと

  • 分かってないこと、今できないことを紙に書いてみた。
  • erbがわからないので、とりあえずHTMLで実現できる部分(一覧、新規作成画面)だけ実装した。

🍕 感想

  • ほどほどに楽しむことを忘れずに取り組みたい。
  • わからないし質問する元気が出なくてつらい…と書いてたんだけど、書いてたら更につらい気持ちになってきたので消した😭

📅 5/14(金)

💪 やったこと

  • paizaのSinatra講座を見た。ちゃんとコード読んで理解しないと。
  • 動画講座そのものというより、参考リンクが思ったよりたくさんあってありがたい。↓を読んで、rubyのプログラムを書くファイルとerbのファイルにそれぞれ何を書くかが少しイメージついた。
  • テンプレートシステム入門 (1) 歴史編
  • テンプレートシステムとは、テンプレートとなるファイルをメインプログラムから読み込み、必要な箇所を書き換えて出力する仕組みのこと

    • ふーむ。だから変数はrubyのプログラムを書くファイルの方に書いて、erbのファイルでは変数をどう展開させて表示させるかを書くのかな。

🍕 感想

  • ラクティスも進まないしメンタルの調子もよくないのは、ちゃんと寝れてないのが全ての元凶と分かったので、睡眠第一で行こうとおもった。
  • 明日明後日は兄の結婚式で遠出するので、プラクティスのことはあんまり考えないで過ごす。

📅 5/15(土)

💪 やったこと

  • 5時間車に乗ってたので、Audibleで3時間くらい『達人プログラマー』を聞いていた。内容は面白いけど、他の人と乗ってる車の中で聞くと、集中できなかったり他の人に気を使わせたりと色々良くなかったのでもうやらない。

  • 車の中でふと「Sinatraのプログラムを書くファイルって、Sinatraという言語じゃなくて、Rubyのコードを書けばいいんだ!」と気づいた。こうわざわざ書くと何当たり前のことを言ってるの?という感じだけど、Sinatraのプラクティスに入って、全く新しいことをやっている気持ちになって分からない状態が続いていたようだ。
  • 上記が分かったら、paizaの講座も理解が進んで、txt形式でフォームから入力を受け取り一覧画面にメモのタイトルを表示させるコードが書けた。

🍕 感想

  • Audibleを初めて聞いてみたけど、簡単な内容なら読むより理解しやすいかもと思った。本買うより安いし。著者注が著者の声で挟み込まれてるのもいい。ただ、技術的な話になると聞いてるだけだとちゃんと理解できない。
  • さわやかでハンバーグを食べたのでいい日🟤

📅 5/16(日)

💪 やったこと

🍕 感想

  • 兄の結婚式に参加した。もともと去年の予定がコロナで延期になって、結局今年も家族だけの式になってしまったので残念だなと思った。
  • 結婚式でつかれたので勉強は最低限。

📚 来週の目標

  • Sinatraメモアプリ動作版を完成させる
  • 1回質問する(形式問わず)