Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
頑張ったところ
「DRYなコード」を書くことに頑張りました。
普段から「車輪の再開発」をしてしまうところがあり、そうならないように頑張りました。
・苦労したところ
内容を理解するのに苦労しました。
いただいたテストファイルから読み始め、書かなければいけないコードはなんなのかを想像しました。普段は1人で開発しているため、実装したいこととテストコードはおおよそ想定の範囲でおさまりますが、今回のようにテストが先にできているというのは初めての経験で苦労しました。
自慢したいところ
約4000個のなかから該当する値を変換することがこのコードの目的になります。
最初に以下3つのことが頭に浮かびました。
・Hashを使用
・ キーを検索して値を表示
・値を検索してキーを表示
keyを数字にしvalueをローマ数字にしたHashを作成し、数字からローマ数字に変換する場合は「キー(数字)」を検索して「値(ローマ数字)」を使用すればいいことがわかります。それができれば「値(ローマ数字)」を検索して「キー(数字)」を求めることも可能になります。
あとはどうやってそのHashを用意するかですが、すでにファイルが準備されていましたのでこれを使用しました。ルールをよく読み該当ファイルを使用しても問題がないことを確認できたことが自慢になります。
コードを書くのにかかった時間(ざっくりでよいです。10分、1時間、3日、etc.)
30分ぐらいで完成しました。そのほとんどがDebugを有効にするための方法に費やしました。
だいたいのプログラミング歴
Rubyを始めて10年ぐらいです。趣味で行っているので全くコードを書かない期間も3-4年あります。
実際に解いてみた感想
どうやったらルールの範囲内で最も短いコードを書くかを考えるのがとても難しかったです。
自分のロジックを詳しく解説したブログ記事(もしあれば)
ありませんのでここに詳しく書きます。ロジックというよりは考え方になります。
プログラムを書いていて問題に直面するとそれを力技で解決しようとしてしまいます。出来上がったときは気持ちいいんですが、後でよくよく調べてみれば自分で実装したものとおなじメソッドやgemがすでにあったりすることがこれまでに多々ありました。そしてそれらと比べてみて自分で作ったものがいいと感じたことは一度もありません。
いろいろなメソッドやgemを使用していく中で最近は「使えるものは積極的に使った方が効率的だ」という考え方になってきました。
プログラムは何かを表現するための手段でありプログラムを書くことが目的ではないと感じ今回のコードとなりました。
伊藤さんにメッセージ(こちらももしあればw)
Railsのコードを書いていてこまったときに検索するとほとんどの場合、伊藤さんの記事にたどり着きまず。いつもありがとうございます。いつか実際にお会いしてお礼を言えればなと思っています。
今回私が提出したコードは正攻法とは言えず、どちらかというと邪道なのかもしれませんがそういった方法を選択できる状態で出題された伊藤さんの慈悲深さに感銘いたしました。趣味でプログラムを書いていますので誰かと一緒にコードを書いたりレビューを受けたりすることはなかったのですが、これを機会に一歩踏み出せたらなと思っています。そういう意味では貴重な経験をさせていただきました。ありがとうございます。