本カレンダーは、Qiita Top Contributor の @jnchito さんからのお題です。
みなさまの素敵な記事をお待ちしています。
この企画では「プロを目指す人のためのRuby入門」の著者である伊藤淳一(@jnchito)から、Rubyを使ったプログラミング問題を出します。「我こそは!」という人は解答となるコードを書いて、アドベントカレンダーの記事として投稿してください。
提出されたコード(記事)中から、僕・伊藤淳一が「これはイケてる!!」と思ったコードを表彰します。
「あれ?アドベントカレンダーってそういうもんだったっけ?」
特別企画なので細かいことは気にしないでください!!
告知:銀座Rails#41で僕の解答例を公開します!
(2021-12-21追記)
2022年1月25日(火)に開催される銀座Rails#41にて、僕の解答例を公開します。アドベントカレンダーに参加してくださった方はもちろん、そうじゃない方もぜひこのイベントに参加してもらえると嬉しいです😄
参加資格
初心者から上級者までどなたでもOKです。書籍「プロを目指す人のためのRuby入門(通称チェリー本🍒)」を持っていてもいなくても構いません。「解答したい!」と思った人から早いもの勝ちでアドベントカレンダーに参加登録していってください。
動画でわかる!参加方法
このページで説明している参加方法や「お題」の仕様をYouTube動画で詳しく解説してみました。こちらもぜひご覧ください💁♂️
今回のお題「点字メーカープログラム」
この企画ではみなさんに「点字メーカープログラム」を作成してもらいます。このプログラムでは入力されたローマ字に対応する点字をテキストで出力します。以下はこのプログラムの実行例です。
tenji_maker = TenjiMaker.new
puts tenji_maker.to_tenji('A HI RU')
#=> o- o- oo
# -- o- -o
# -- oo --
puts tenji_maker.to_tenji('KI RI N')
#=> o- o- --
# o- oo -o
# -o -- oo
「はい、先生!点字のしくみがわかりません!!」
点字のしくみは以下のサイトでわかりやすく説明されているので、こちらを参考にしてください。
コード提出用の雛形リポジトリと詳細なプログラム仕様について
コード提出用の雛形リポジトリをこちらに用意しています。また、点字メーカープログラムの詳細なプログラム仕様についてもこの中のREADMEで説明しているので、参加される方はREADMEをよく読んでください。
参加方法
「よっしゃ、やったるでー!!」という方はまず、このアドベントカレンダーに参加登録してください。
コードが書けたら、自分が書いたコードを解説する技術記事を書き、そのURLを自分の担当日に貼り付けてください。
コードの提出方法は2通りあります。
プルリクエストの作り方がわかる場合
- 前述の雛形リポジトリをフォークする
- コードが書けたらプルリクエストを作る
- GitHub ActionsのテストがパスすればOK
- プルリクエストのリンクをアドベントカレンダーの記事に載せる
プルリクエストの作り方がわからない場合
- 前述のリポジトリのコードをローカルにダウンロードする
- ローカルでコードを書く
- rakeコマンドでテストが全部パスすれば完成
- アドベントカレンダーの記事に自分が書いたコードとrakeコマンドの実行結果(テストが全部パスしていることの証明)を載せる
「あれ、ちょっと待って!これだと、他の人のコードが見えちゃうんじゃ??」
はい、見ようと思ったら見えちゃいますが、この企画に参加する人は自分のコードを提出するまで、他の人のコードはなるべく見ないようにお願いします!(今回は「性善説」でいきます)
アドベントカレンダーの記事に書いてほしいこと
アドベントカレンダーの記事には以下の内容を記載してください。
- プルリクエストのリンク、または自分が書いたコード
- ロジックの解説
- コードのアピールポイント
- 頑張ったところ
- 苦労したところ
- 工夫したところ
- 自慢したいところ
- etc
- 伊藤さんにメッセージ(もしあればw)
プレゼント内容
以下の2つの賞があり、表彰者にはプレゼントが贈られます!
LGTM賞(1名様):Qiitanぬいぐるみ1体
投稿された記事の中で、最もLGTM数が多かった記事の投稿者に贈られます。
Top Contributor賞(1名様):Qiitanぬいぐるみ1体
僕が「いいね!」と思ったコード(記事)を表彰します。
僕が重視するのは以下のようなポイントです。
- 可読性が高いコードであること
- 簡潔なコードであること
- ロジックの解説や記事全体の内容が読者視点を意識したものになっていること
なお、提出してもらったコードのうちいくつかは、僕のQiita記事や勉強会等で僕がコードレビューさせてもらうかもしれません。あらかじめご了承ください。
2022-1-22追記:プレゼントの対象者が決まりました!
Top Contributor賞は @haruguchiyuma さんのこちらの記事(コード)です!
僕が評価した点(表彰理由)は以下の3つです。
- コードがシンプルで短くまとまっている
- コードの書き方にクセがなく読みやすい
- 変換ロジックは少し独特だが、記事内で考え方が丁寧に説明されており、なおかつ「今回の仕様のみ使える方法だと割り切って考える」とトレードオフがあることもちゃんと自覚できている
@haruguchiyuma さん、どうもおめでとうございます!🎉
なお、LGTM賞は @universato さんに贈られます。
@universato さんもおめでとうございます!
そして最後に、当アドベントカレンダーに参加してくださったみなさんに感謝します。
この企画がみなさんにとって少しでも「楽しかった or 勉強になった」と思ってもらえれば幸いです😄
まとめ
この点字メーカープログラムですが、拙著「プロを目指す人のためのRuby入門」の知識があれば、ほぼ解答可能なはずです!2021年12月2日に 改訂版が発売 されるので、この改訂版をざーっと読んでから解答に着手するのも良いと思います
過去の日付が空いていたら、その日付にあとからその日付に参加登録してしまうのもアリです。みなさんからカッコいいコードがたくさん届くのを楽しみにしています〜😄
追記:投稿されたコードをレビューしました
投稿してもらったコードは僕の方で何回かに分けてレビューしました。レビュー記事はこちらです👇