ネイルの工程をプログラミングで書いてみる〜その1〜

ネイルの工程をプログラミングで書いてみる〜その1〜

最近ようやくプログラミングをかじれてきました。見習いのイハです。
PCが突如としてお亡くなりになったり、IDとパスワードを忘れたりしてて、
投稿しないまま放置してしまった半年前に書いた記事の処遇をどうするか悩んでいる今日この頃です。

ようやくプログラムが書けるようになってきて楽しいんだけど、
動くんだけどオブジェクト指向じゃないんだよね〜と指摘を受けたので、
いくつかその手の本を読んでみたんですね。

例とかあって分かりやすいんだけど、なんとなく分かるんだけど、イマイチピンとこない。
そもそも例が自分にとっては全然身近じゃなくて、よく分からないんだなと気付きました。

私に読解力がないのではないかという説はありますが、分からないんだから仕方ない!
自分で自分に分かるように書いてみるしかない!

ので、身近なことをプログラミングしてみるよ!

普段は何も考えずにただ推しを追いかけているだけなので、
身近なことで何をプログラミングしてみるのがいいか考えたら、
唯一趣味と言えるレベルでやってたのがセルフネイルだったので、
セルフネイルの工程をプログラミングしてみることにしました。

どこの層に刺さるのか全くもって不明ですがそもそも刺す気はないのでいいです。

大体のネイルの手順(ざっくり)

1.爪の形を整える
2.ベースコートを塗る
3.ベースの色を塗る
4.ラインを引く
5.パーツを乗せる
6.トップコートを塗る

とりあえずざっくり

class Nail
def apply
['hand_right', 'hand_left'].each do |_parts| # 右手と左手
5.times do # 指の数分繰り返す
爪の形を整える
ベースコートを塗る
ベースであるネイビーを塗る
ゴールドのラインを引く
白のストーンを乗せる
トップコートを塗る
end
end
end
end

これは敢えてただやることを並べたので、悪意はあります。
さすがにここまでやばいことはしません。

問題点を考えてみる

class Nail
  def apply
    ['hand_right', 'hand_left'].each do |_parts| # 右手と左手
      5.times do # 指の数分繰り返す
        爪の形を整える
        # 毎回形を変えたくなるかも?
        ベースコートを塗る
        # これはほぼ不変だろう
        ベースであるネイビーを塗る
     # 全部の指が同じ色じゃないこともあるしそもそも全体塗らなかったりするかもね
        ゴールドのラインを引く 
     # 違う色にしたいかもしれない・そもそもラインは不要な場合があるかも?
        白のストーンを乗せる
        # 不要な可能性・逆に一つの爪に対して複数乗せるかも
        トップコートを塗る
      end
    end
  end 
end

親指だけちょっと違うデザインとか、指ごとに色が違うとか、一口にネイルと言ってもいろんなデザインがあるので対応できないですね。
いろんなデザインに対応できるように、いろんな指定ができるように、リファクタしていきます。

とりあえずメソッドに分ける

class Nail
  def apply
    ['hand_right', 'hand_left'].each do |_parts| # 右手と左手
      5.times do # 指の数分繰り返す
        format(square) # 爪をスクエア型に整える
        fill_basecort # ベースコートを塗る
        paint_basecolor(navy) # ネイビーでベースのカラーを塗る
        add_line(gold) # ゴールドでラインを引く
        add_object(white_stone) # 白のストーンを乗せる
      end
    end
  end
 
  # 爪の形を整えるメソッド
  def format(type)
    typeの形に爪を整えるよ!
  end
 
  # ベースコートを塗るメソッド
  def fill_basecort
    ベースコートを塗るだけ
  end
 
  # ベースのカラーを塗るメソッド
  # カラーは指定できる
  def paint_basecolor(color)
    colorで色を塗るよ
  end
 
  # ラインを引くメソッド
  def add_line(color)
    colorでラインを引くよ
  end
 
  # 装飾物を乗せるメソッド
  # 乗せる装飾物は引数で渡す
  def add_object(object)
    objectを乗せるよ
  end
end

とりあえず色違いのデザインは流用して作れるようになりました。

でもそもそも1つの指ごとに全行程を実行するこの構造微妙じゃない?
全ての指で同じ作業はまとめてやった方が楽じゃない?

ということでまた次回。

TAG

  • このエントリーをはてなブックマークに追加
イハ
エンジニア イハ iha

仮面ライダーになりたかった最年少ポジティブゆとり世代です。ここの文章が短いとレイアウトが崩れるので書いておきますが、沖縄ファミリーマートの泡盛コーヒーは美味しい。