2020-01-01から1年間の記事一覧

Git HEAD~ と HEAD^ の違い

Git

Git でコミットを指定するとき、HEADの一つ前ならHEAD^、二つ前ならHEAD^^のようにしていた。一方、Git の公式ドキュメントを見ていたら、HEAD~やHEAD~2が使われていた。 ただ書き方が違うだけで同じものだと前にどこかで読んだので特に気にしていなかったの…

Sendai.rb に参加

8月20日にオンライン開催された Sendai.rb #10 に参加した。参加者は7人。ツールは Google Meet と Slack。 Sendai.rb ではもくもく会をやっているそうだが、今月はミートアップの回ということで、2チームに分かれて AtCoder の問題をモブプロした。 A - Pay…

Ruby require と require_relative の違い

Gem やファイルを読み込むために使う require と require_relative。違いは以下の点だけかと思ったら、そこまで単純でもないらしい。 require はカレントディレクトリからのパス(絶対パス)で指定する require_relative は実行ファイルからのパス(相対パス…

Git checkout と switch / restore

Git

ブランチを切り替えるときに必ず使う git checkout。リセットっぽい機能もあったりしてちょっととっつきにくい。 そんなcheckout、いずれ使わなくなるかも?? 2019年8月(バージョン2.23)、checkout の機能を2つに分けた switch と restore が実験的なコマ…

truthy の意味を考えた

truthyという単語は英和辞書には載っていない。ネットで英英辞書もいくつか見てみたが載っていなかった。 trueっぽい、というような意味だと思ってはいたが、きちんと調べたことがなかったので調べてみた。 この言葉を知ったきっかけは、Minitest の refute …

Rails システムテストを書く(RSpec 不使用)

システムテストでは、ユーザーのブラウザ操作をテストする。Rails プロジェクトでは Capybara(カピバラ )という Gem によって、ブラウザ(ヘッドレスブラウザ指定可)で実行される。 Rails では RSpec というテスティングフレームワークが使われることが多…

VSCode タブ関係のカスタマイズ

この前下の記事を書いた。ついでにやってみたらよかった、タブに関する設定いろいろを紹介。 VSCode ターミナルやサイドバー移動もキーボードだけでできる - No Solution for Life 常に新しいタブで開くようにする VSCode でサイドバー(Explorer)のファイ…

Rails テストファイルの作成・実行

Rails では、rails generateコマンドでモデルなどを作成すると、テストのスケルトン(ひな形)も自動で作成される。 テストだけを作成する場合は、以下のコマンド。 テストのスケルトンを作成 # モデルテストを作成(userモデルの例) $ bin/rails g test_un…

Rails カラムのデフォルト値や not null 制約を変更する

既存のデータベーステーブルの特定のカラムについて、マイグレーションファイルを使って後からデフォルト値や not null 制約を設定する方法。 (共通手順) マイグレーションファイルを作り、 マイグレーションファイルを編集。 bin/rails db:migrate でデー…

Ruby 「true」と「真」、「false」と「偽」の違いを考える

これまで「true」と「真」、「false」と「偽」を特に区別せずに使うことが多かったが、たまにモヤモヤすることがあった。テストを書き始めてそこら辺が気になってきたので、この機会にはっきりさせてみることにした。 結論から言うとこういうこと(注:Ruby …

test-unit、Minitest、Rails の refute / assert_not エラーメッセージを比較

masuyama13.hatenablog.com 昨日上の記事を書いたが、今度は test-unit の refute のコードとエラーメッセージはどうなっているんだろうと気になって調べてみた。 test-unit で失敗するテストを書く blog.rb class Blog end blog_unit_test.rb require "test…

Rails refute と assert_not を使ってみる

前回、refuteとassert_notはエラーメッセージが違うことがわかった。 masuyama13.hatenablog.com assert_not_equalなどは Minitest のrefute_notなどのエイリアス(別名)なので、assert_not_equalを呼び出すとrefute_notが実行される。つまり動作としては全…

Rails assert_not が定義された経緯を調査

この記事の続き。 masuyama13.hatenablog.com 前回の疑問 assert_not_equalなどはエイリアスとして設定されてるっぽい。なんでassert_notはエイリアスじゃだめなんだろう。 コードを見比べる Minitest の refute def refute test, msg = nil msg ||= message…

Machida.rb #04 に参加(FizzBuzz コードレビュー)

8月7日にオンライン開催された Machida.rb #04 に参加した。Machida.rb は先月に続き2回目の参加。参加者は約10人、ツールは ZOOM と esa。今回はコードレビュー会。 自分はコードレビューしてもらう枠で申し込んでいなかったのだが、運よくコードレビュー枠…

Ruby refute と assert_not の違いを調査

Rails のテストと Minitest を学習していて、refute と assert_not は同じものなのか違うものなのか気になったので調べてみた。 アサーション アサーション(assertion)とは、オブジェクトや式を評価して、期待された結果が得られるかどうかをチェックする…

Ruby test-unit でテストを書いてみる(FizzBuzz)

FizzBuzz 問題を題材に TDD(テスト駆動開発)を学んだので、実際に動画の流れに沿って、Ruby でテストを書いてみた。 (動画はこちら:TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング - YouTube) Ruby 標準のテスティングフレームワークである…

はじめて学ぶテスト駆動開発(TDD)

テスト駆動開発(Test-Driven Development)とは、テストファースト、つまり最初にテストを書いてからコードを書く開発手法。日本における TDD の第一人者、@t_wada さんのライブコーディングを見て勉強したのでまとめる。 TDD Boot Camp 2020 Online #1 基…

『採用・人事担当者のためのITエンジニアリングの基本がわかる本』を読んだ

1週間(8月9日まで)限定で無料公開されていたので読んでみた。 hrzine.jp 非エンジニア向けに書かれているので技術についての詳細な説明はないが、エンジニアに関する用語説明が豊富でざっくりとした業界の全体像をイメージすることができた。 まず、Web ア…

Sendagaya.rb #324 に参加

8月3日、オンラインで開催された Sendagaya.rb に参加した。2回目の参加だった。 参加者の自己紹介で出た Ruby や Rails 関係の話題について話した(といっても自分はまだ聞くだけで精一杯)。 テストについて RubyMine での RSpec のテスト作成方法の話から…

VSCode ターミナルやサイドバー移動もキーボードだけでできる

できるだけマウスを使わず、キーボードだけで操作したい、と願うのは私だけではないと思う。Vim プラグインは諦めたが、こういう方法もあるということでまとめておく。 デフォルトで使えるショートカットキー(Mac) キー 動作 control + 数字(タブの番号)…

VSCode カーソル移動やテキスト選択に矢印キーを使わない方法

VSCode のショートカットキー(Mac) デフォルトのショートカットキー ショートカットキーのカスタマイズ 矢印キーを P / N / B / F に変更 単語ごとの移動 テキスト選択のショートカットキー キー割り当てがかぶったとき VSCode のショートカットキー(Mac…

Ruby %記法

%記法を使うと、要素の中にクォーテーション記号が入っている場合にエスケープせずに書けるなど、便利な場面がある。 基本的な書式 %w!文字列など! %w(文字列など) 要素を囲む記号は!以外に?や()、[]など英数字以外の記号を使うことができる。 種類 記号 文…

リードエンジニアから学ぶMedPeerのプロダクト開発 に参加

7月30日にオンラインで開催されたリードエンジニアから学ぶMedPeerのプロダクト開発に参加した。主にリードエンジニアやそれより少し若いぐらいのエンジニアを対象としたイベントだと思われるが、以前ヘルスケア関係の仕事をしたこともあり興味があったので…

Rails の思想

Rails でアプリを作ってみて、Rails の考え方が少しわかってきたのでまとめる。 CoC(Convention over Configuration) 設定より規約 ユーザーからすれば同じように見えるプログラムでも、その実装方法は無数にある。Rails では、合理的で効率的なプログラム…

Rails 初心者に優しい本:独習 Ruby on Rails

『独習 Ruby on Rails』を読んだ。 独習Ruby on Rails作者:小餅 良介発売日: 2019/06/19メディア: Kindle版 Rails って簡単って聞いてたけど、コマンド1個実行しただけでいっぱいファイルができて怖い。Progate をひととおりやって「わかった!」ってなって…

Rails モデルについて学ぶ(Active Record)

Rails は、MVCアーキテクチャを採用している。MVCアーキテクチャとは、プログラムをモデル(Model)、ビュー(View)、コントローラー(Controller)の3つに分けて設計する手法のこと。 モデル(M)の役割は、データベースとのやり取り。 命名ルール モデル名…

Git エイリアスで便利にする

Git

開発に欠かせないGit。プログラマは毎日使うのでエイリアスを設定している人が多いそうだ。alias とは「別名」という意味で、コマンドを別な文字で実行することができる。Git のサイトにも、"きにせずどんどん新しいエイリアスを作りましょう。" とあったの…

Tama.rb に参加

7月25日にオンラインで開催された Tama.rb #21 に初めて参加した。 参加者は20名弱で、ツールはSpatial Chat。全員の自己紹介のあと各自好きなところに移動して自由に話す形式で、私は Ruby のところへ行ってみた。 Ruby にパッチを投げたりしているという強…

Git を1からやり直す(stash編)

Git

Gitを1からやり直す(目次) stash とは、「隠す」という意味。 作業中、まだコミットしていない状態で他のブランチで作業したいことがある。そういうとき、stashを使えば変更内容を一時的に退避させることができる。 コマンド 動作など git stash 作業ツリ…

Git チェリーピックとリベースの練習

Git

チェリーピックの後リベースしたらどうなるのか試してみた。 develop ブランチで作業中に、別な作業のために master から topic ブランチを切った topic ブランチでは、develop ブランチの変更(コミットC・D)をチェリーピックで取り込んでから、 1回コミッ…