【符号化】プログラムは調理に例えると頭に入りやすい?
要旨
本記事で言いたいのは、「プログラムを調理に例えると頭に入りやすいのではないか」です。
調理の工程は大きく以下の3つです。
- 材料をそろえる
- レシピを見る
- レシピの手順を実行する
これをプログラムに置き換えると、ほぼ一緒です。
- 必要な道具をそろえる
- 処理の流れを把握する(明確化して参照する)
- 処理を手順どおりに実行する
一見難しそうに見えて何をしているのか分からなくなったとき、調理に置き換えてみることで、「いやちょっと待てよ。今は材料を集めている段階なんだな」「レシピを作ろうとして②のところで詰まっているんだな」などと、頭の整理をしやすくするのがねらいです。
本記事の目的
新しい技術をインプットするとき、再現性を高める(すぐ取り出して使えるようにする)ためです。
私は人より理解するのに時間がかかるタイプだと自認しています。
そこで、自分が覚えやすくするための工夫(心理学でいう「符号化」)として、「調理への置き換え」を考えました。
具体例
今回は、「Railsでサンプルデータを作る」を調理に当てはめて進めます。
具体的には、Userモデルに100人分のサンプルユーザーを投入します。
必要なものをそろえる ≒ 材料をそろえる
- Faker(gem):架空のユーザーを作成する
- db/seeds.rb(ファイル):このファイルを実行することでサンプルデータが作られる
手順を明確にする ≒ レシピを作る
- Fakerをインストールする
- db/seeds.rbにサンプルデータをを作成するプログラムを書く
-
rails db:migrate:reset
でデータベースの中身を消す -
rails db:seed
でサンプルデータを投入する
Fakerのインストール
Gemfileにgem "faker"
を追加してbundle install
を実行します。
seeds.rbで100人分のサンプルデータ作成
サンプルデータの作成は、モデル名.create!(属性: 値)
と書きます。
Fakerではドラゴンボールやジブリのキャラクター名も生成できます。
# 管理権限をもつユーザーを1人作成する
User.create!(name: "Example User",
email: "example@email.com",
password: "foobar",
password_confirmation: "foobar",
admin: true)
# その他99人のユーザーをまとめて作成する
99.times do |n|
name = Faker::JapaneseMedia::DragonBall.character.name
email = "#{name}@email.com"
password = "password"
User.create!(name: name,
email: email,
password: password,
password_confirmation: password)
end
実行する ≒ 調理する
rails db:migrate:reset
を実行します。
ユーザーが0人になったことを確認します。
[post-app]$ rails c
Loading development environment (Rails 7.1.5)
[1] pry(main)> User.all.length
User Load (1.2ms) SELECT "users".* FROM "users"
=> 0
rails db:seed
を実行します。
100人分のデータが作られました。
[1] pry(main)> User.all.length
User Load (1.3ms) SELECT "users".* FROM "users"
=> 100
usersテーブルの中身を確認します。
ドラゴンボールのキャラクターたちが投入されています。
最後に
プログラミングで新しいことを学ぶときに、「うぅ...なんだか難しそうだな。」と頭が重たくなるときってありませんか?
そんなときに、料理を作ろうとしている感覚で、「そもそも材料はそろっていたっけ?」「レシピに虫食いや曖昧なところはない?」と考えてみると、少し進めやすくなるかもしれません。
ちなみに、私は日常でまったく調理しません。
Discussion