ねこものがたり

プログラミング学習の記録

読書記録用のファイルを作成するコマンドを作りました

今年に入り、GitHubにプライベートリポジトリを作って読書記録を残すようにしてみました。

neko314.hatenablog.com

そのリポジトリはReading-Notesというんだけれど、前回の記事を書いた段階ではcp format.md 2019/01/読んだ本のタイトル.mdとコマンドを叩くことで事前に用意していたformat.mdを複製し、そこに感想を書くようにしていました。

しかしめんどくさい!

以前、Fjord Boot Campの課題で、コマンドのlsやらwcやらをRubyで再現するっていうのに挑戦したことがあったんですけど、それと同じように適当にファイル作るようにしたほうが簡単だと思いました。 それにコマンドを作るという点でいい復習になりますし。

ということでやってみました。

作ったもの

#!/usr/bin/env ruby

require 'date'
require 'fileUtils'
require 'pathname'

class Note < File
  attr_accessor :title

  def initialize
    @title = STDIN.gets.chomp + ".md"

    year = Date.today.year.to_s
    month = "%02d" % Date.today.month.to_s
    path = Pathname.new(year).join(month)
    path.mkpath unless path.exist?

    FileUtils.cp('format.md', path.join(@title).to_s)
  end
end

Note.new

学びになったこと

Pathname

るりまを開くと

パス名をオブジェクト指向らしく扱うクラスです。

だそうです。ふむふむ。わかったようなわからないような。Pathnameクラスがあって振る舞いがあるんだな〜っていうざっくりとした感覚では掴んだ気がします。

mkpathメソッドを使ったらwarningがだーーーーっとでて「ひょえっ」と思いましたが、どうやら鋭意解決に取り組んでおられる模様。自分でも考えたいけどそれは無理なので心から応援しています!w

fileutils conflict in Ruby 2.5.1 · Issue #22 · ruby/fileutils · GitHub

Pathnameは初めて触ったとおもっていたのですが、Rails.root~~がまさにこれらしく、railsでは使ったことがありました!

シバン

久しぶりにやったのでどうやるんだっけなとすっかり忘れちゃっていました。

  1. ファイルに#!/usr/bin/env ruby(これがシバン)と記載
  2. ファイル名は拡張子なしに(今回の場合note.rbとしていたのをnoteに変更しました)
  3. chmod +x noteパーミッションを変更
  4. 実行するときは ./note

感想

夫にコードレビューはしてもらったけど、ほぼ自力で書けたので良かったです! 楽しかったのでこれくらいの簡単な操作は今後も自分でコマンド書いて行くようにしてみようと思いました。

rubygemsのソースコードリーディング

コードリーディング力

「人の書いたコードを読む」というのは今の私にはとても難しいです。 しかも、ついやってしまうこととして、変数名やメソッド名などから「きっとここではこういうことをしている」と目星をつけて理解したつもりになり、コードとしては分かってないまま終わるというのが自分の傾向だったりもします。

だけどこれではいけない。 コード読めるようになりたいし、理解してそのコードを動かせるようになりたいし、自分自身がもっと書けるようになりたい!

あと最近は「OSS活動したい!」っていう目標もあって、自分にはとてもハードルの高いことのように感じているんですが、「何から始めるか」と考えた時にもコードリーディングやりたい!と思う気持ちが高まっています。(OSS活動としては「READ ME読んで使ってみることから」っていうアドバイスをいただいたので、それはそれでちょっとずつやってみています!)

コードリーディングする心得

rubygems コードリーディング」あたりで検索してみるとMatzさんの記事がよく紹介されていました。

第10回 ソースを読もう (1/2) - ITmedia エンタープライズ

他にもコードリーディングについての記事はたくさんあったのですが、このMatzさんの記事を自分の心構えとしてやってみようかと思っています。

前から「良いコードをたくさん読むべし」というのはアドバイス受けていました。 しかし冒頭でも述べたように「何となくこんな感じ」みたいになりがちだったり「やろうとしてもわからん」みたいに諦めたりを繰り返していました。

だけど最近、これまで雰囲気でやってたけど自分の中で「もっと分かりたい!」という意識という生まれるようになりました。

例えば、今で言えば「ネストしているネームスペース使いこなせない」というのが私の中にあって「そもそもシンプルなレベルからほんとにわかってるのか?」と自問していて、「何もわからん・・・」と落ち込んだりしています。

それと同時に「他の人がどんなふうに使っているのか気になる」という気持ちが湧くようになりました。

そんなわけで、Matzさんの「誰かのために、自分のために」っていう目的意識でやっていこうと思います。

「読まなきゃ!」だとできない人間・・。弱い・・・w

何読むか

@komagataさんの'holiday_jp'読んでみよることから始めます!

holiday_jp - 国民の祝日が分かるライブラリ - komagataのブログ

まだやったことないのでやりながら人に質問したり相談したりしていこうと思ってるんですが

  • しってる人が作ってる
  • 自分が使ったことある
  • メジャー(Railsに入ってるとかそういうの)

なgemをやってみようかなと思います!

おすすめがあったら教えてほしいです😊