falseにしたい場合は、どうすればよろしいのでしょうか?ですよね。オプションは指定できない。禁止したければカスタムバリデーションを書くかなぁ、と思った。モデルを書き換える形で書くと、こんな感じかな。なるのがなんとなく見栄えが悪いけど仕方ない。)にするとこの見栄えの悪さを解消できる。いうフィールド名を使っているのでなんとなく良さそう。基本的には眺めているだけだったけど質問したり答えたりできる場があるのは便利だなぁと思った。ついて調べるきっかけになってよかった。質問に答えたTweet広告を非表示にするもっと読むコメントを書く2020-01-10なぜ競技プログラミングを楽しいと感じるのか最近競技プログラミングを始めた。社のバーチャルコンテスト(お昼休み復習回)に参加したまだ始めたばかりだが、なんだか楽しいなぁ〜、と感じている。この問いに対して「競プロは『正解』があるから楽しいのでは?」説がある。年末に同僚とこんな話をした。普段お仕事をする中では、明確な『正解』を定義できないことの方が多いと思う。その中で僕らは「正解とは言い切れないけど『だいたいよさそう』と思える範囲」に物事を持っていくためにお仕事をしている。『正解』というPoint(点)ではなくてArea(範囲)だよねそしてその「『だいたいよさそう』と思える範囲」を決めることもお仕事。普段のお仕事で僕らはすごく高度なことをしているのでは。なんとなくこの話がしっくりきた。普段のお仕事って、結構疲れる。考えることがたくさんある(量)し、ずっと考え続けてる(時間)。考えた末にやったとしても、「『だいたいよさそう』と思える範囲」に入るかどうかは分からないし、その範囲に入ったとしても、本当に良いことだったのかは分からない。すごく高度なことをしている)からなのかも、と思った。その意味では、お仕事が疲れるのは健全なことかも。「仕事疲れた〜!」「いいじゃん!!お疲れ!ビール!!!」で良いなぁと。一方で、競技プログラミングは明確な『正解』がある。その正解に向かって、問題を解くためのコードを書けば良い。あと、問題の状況が明確に定義されていることも、お仕事の現場とは大きく違うなぁと思った。(お仕事は状況の把握だけでかなり大変)そう考えると競技プログラミングはずいぶんと「簡単なこと」に思える。!』『うわっ、WAだ!』『なにっ!?TLEだと!?』『ヨシっ!AC!』と、機械的に正解不正解を判断してくれるのも楽しいんだと思う。お仕事へのヒント競技プログラミングのエッセンスをお仕事に活かすことを考えてみる。「解くこと」だけに集中できる場を作ってみることかなぁ。普段は「解くこと」と並行して「問題の定義」や「正解(よさそうなArea)の定義」を考えている気がするので、そこをしっかり分けること、かなぁ。よさそうかどうかの判断を機械的に(≒定量的に)できるようにすること、とかかなぁ。競プロ、楽しいので継続的にやってみるもともとプログラミングテスト・コーディングテストの類がすごく苦手で、前職で社内スキル調査の一環としてテストを受けた時1つもできなくて情けない気持ちになったことがある。計2時間くらいのテストだったんだけど、他のみんなは1時間くらいで数問を解いて業務に戻るなか、自分は2時間きっかり頑張って1問も解けなかったので「なんかもう無理...」となった。これが3年くらい前の話。それ以降、この類のことは避けてきたんだけど、さすがにエンジニアとして人並みにはこういうこともできるようになりたいなぁという思いはずっとあった。そんな自分が競プロを始めたきっかけは、社で開催されたバーチャルコンテストだった。あと、バーチャルコンテストを開催するよ〜、という感じでハードルを下げてくれていたので参加しやすかった。いえ苦手意識があったので、雑談までやってAtCoderのアカウントを作ったら、コンテストは参加せずに様子を少しだけ見て帰ろう、と思っていた。コンテストの1問目をみると「与えられた3つの数字のうち小さい2つを足した結果を出す」くらいの問題があって、あ、こんな簡単なやつもあるんだ、と解き始めていた。引き続きやっていこうと思う。10種類の新アイテムが追加され、7種類の既存アイテムがリニューアルされた。(12/18)抜け漏れないかな?たぶん大丈夫。この記事では自分が開発に携わったアイテムについて、作りながら考えていたことやいま改めて思うことを書いていこうと思う。両面プリントに対応もともとオモテ面にしかプリントできなかったTシャツをウラ面にもプリントできるようにした。SUZURI(スズリ)オモテウラ両面プリントに関しては、すでに対応済みのコーチジャケットの実装があってそれを参考にしながら実装したので、大きな技術的課題はなかった。新アイテムを追加するのは初めての経験だったので仕様の理解(そのためのコードリーディング)にかなり時間をかけたなぁ、という記憶がある。90~160)ため、単純にその分手間が掛かった。実はこの時、単にウラ面に対応しただけではなくオモテ面画像のリニューアルも行なっていて、それも合わせると結構大変だった(特にデザイナさんは作業が多くて大変だったと思う)。実装しながら思っていたことは、なんかこれミスったら影響でかいよなぁ〜、ということ。TシャツはSUZURIで一番売れるアイテムだから。リリース後に変な問題が起きないように、っていうのを一番考えていたかもしれない。問題なくリリースできて良かった。売れて8月4日には2019年の累計受注枚数が10万枚を突破した。pepabo.comよくわからないけど10万枚はすごそう。10万といえば10まんボルトだから、きっとすごいと思う。🆕クージークージーって何?という感じだった。缶やペットボトル飲料を入れて保温保冷するアイテムで、こんな感じ。円柱形のアイテムなのでクリエータさんがアップロードした画像を円柱形に合成する必要があった。等になっていて可読性が低いという問題があって、まずはこれを解決するためのリファクタリングをした。いうクラスを作り、マグカップの合成処理からこのクラスを使うようにした。クラス内ではとにかく意味のある変数名を定義した。変数名を定義するのは意外と大変で、そもそも何やっているか分からないと名前をつけることができない。ことね!」のように、内容を理解しながら名前をつけていった。クラスを使い、良い感じに実装することができた。クージーの実装を担当することに決まった時はめちゃくちゃ不安だった。「円柱形の合成処理なんて分からんわ〜」という感じだったし、参考としてマグカップの合成処理を読んでも「なるほど(全くわからん)」という状態だったのでヤバかった。心折れそうだったけど「読んでるうちに理解できるはず」と信じて読み続けていたらだんだんと分かるようになってきたし、「途中までだけどここまで分かったかも」というのを誰かに聞いて欲しくてそれを聞いてくれる(&適宜良い感じの質問をくれる)仲間がいたのでなんとか乗り越えることができた。クラスは最近リリースされたグラスにも活用されていて、あ〜実装しておいてよかった〜と思った。ボディリニューアルデザインを印刷するTシャツ自体のことを「ボディ」と呼んでいる。SUZURIのディレクター陣は常に面白いアイテムや良さそうなアパレルを探していて、この時は「今のやつよりも良さそうなシルエットと質感のリンガーTシャツを見つけたからリニューアルしよう」という話になった。SUZURI(スズリ)旧ボディ新ボディ画像を差し替えて合成処理のパラメータを調整し直すだけなので、技術的に難しい課題は特になかった。今回はボディ差し替えと同時にカラー変更(旧ボディの4カラーを全て廃止し、新カラーに変更)も行なったため、旧カラーを表示したいシーン(買ったもの一覧画面など)でエラーにならないように、旧ボディの画像が表示されるようにする対応も必要だった。カラーによって合成処理を切り替えることで旧ボディも表示されるようにした。ちなみに新カラーはスミ、バーガンディ、ジーパンブルー、ヘザーグレーの4種類で、個人的にはこの2色が好き。🆕ジップパーカーその名の通りジップがついているパーカーのこと。個人的には、ジップがついているものを「パーカー」と呼ぶのだと思っていた節がある。SUZURI(スズリ)オモテウラもともとSUZURIではパーカーのことを「フーディ」と呼んでいたけど、このジップパーカーのリリースを機に見直されたりした。🆕きんちゃく小物を入れるきんちゃく袋。SUZURI(スズリ)グレーベージュ合成の調整が難しかった。単純に画像を乗せるだけでは質感や色合いがうまく表現できないので、ざらつき感を出す加工をしたり色合いを調整した。リリース後に、蛍光色を使ったデザインを合成すると微妙な感じになることが発覚し、どうしようかな〜と悩まされた。社内ドキュメントに「こんな感じでやるといいかも?」とメモを残して私用で休暇に入ってしまったのだが、次に出勤した時には仲間がその感じで修正してリリースしてくれていた。🆕ビッグシルエットパーカービッグなシルエットのパーカーのこと。SUZURI(スズリ)オモテウラ(たまたまこの商品はウラ面のデザインがないけど、両面にプリント可能)ビッグシルエットパーカーを触りがなら実装していた。すごくふわふわで気持ちよかった。この気持ち良さを合成で伝えたかったんだけど、なかなか難しかった。買ってない人には、このふわふわさは伝わっていないんじゃないかなぁ、と思う。リリース当時もこんなこと言ってた。手触りふわっふわスウェットていう名前にすればよかったね。2019年11月29日まとめ自分が実装に携わったのは以上の6アイテムだった。ふりかえってみると、チームメンバーの仲間に大いに助けられてリリースすることができたのだなと感じた。2020年もSUZURIは新しいアイテムの追加やリニューアルをたくさんやると思う。ついて10記事を書いたのでふりかえるふりかえりふりかえりをしておく。まとめたが、1ヶ月分を一気に書くのはダルそうと思ったのでざっくり週1のペースで書いてみることに決めた。読むこと(このシリーズ)を続けるかどうか決めるやめても良いかも。おわりにやってみてわかったことがいっぱいあった(主に、わからないことがわかった)ので良かった。何かをやるとき10回継続してみると何か分かる気がする(経験則)。毎日やる系だと10日間でちょうどいいし、平日だけやると2週間になってちょうどいい。毎週やる系だと2.5ヶ月やって、残りの0.5ヶ月でふりかえりをして「次の2.5ヶ月なにやろうか〜」となるのでちょうどいい。使うけどまだあまりやってないのでやりたい、自然言語処理で遊びたい、など)がたくさんあるので、時間の使い方をどうするのか考えたい。