はてなキーワード: Fizzとは
具体的には、Xでちょっと話題になってた若手育成方法なんだけど、今は特にムリ(時代にそぐわない)かなあというやつ。
(特にITエンジニア界隈に限った話でも無くて、回路設計なんかでも昔は良く見た)
以下の手法なんだけど、これ昔は良く見たし、今もまあまあ見るんだけど、周りのフォローが無いともう結構厳しい。
・ベテランが2,3時間くらいで終わるタスクを3日設定でアサインする
・タスクの説明をする時に細かところまで話さない。大枠と、完了条件の詳細だけ伝える。その過程で仕様が曖昧な時に自然に聞けるスキルを鍛える。
・20分自分で考えてわからなかったら聞きにこい。その時は「今何に悩んでて」「どういうアプローチで解決させようとしてるのか」を 両方説明せよ、と伝える。目的と取るべき手段を相談できる癖を叩き込む。
・変な実装し始めてたら、「そもそもこのタスクは何をするんだっけ?」と伝えて、セルフで脱線を検知できるような感覚を身につけさせる。
え!こんなのスゴイ優しいじゃん、良い教育方法じゃんって思うかもしれないんだけど、コレ第三者目線だとそうかもだけど、若手目線だと地獄なんだよね。
これ、「3の倍数はFizz、5の倍数はBuzzって出すようなの作っといて。3時間くらいで」みたいな感じの指示になるんだよね。
で、ぼちぼち実装してたら「あー、そこはそういう関数にするんだ、このタスクの目的ってなんだっけ?」みたいな口出ししてくんだよね。
最悪だよね。
指示出し側にはおそらく正解があるんだけど教えてもらえなくて、自分のやり方で実装してると口出ししてくんの。
さらに、仕様が曖昧で、聞くとそこしか答えてくれない(書いてないけど、教育目的だと先回りして詳細を補足したりしないと思うので)
それで「悩んでること」と「どう解決しようとしてるか」をセットで聞きに来いって、ほぼ完成形で聞きにこさせんだよね。
例えば、「3の倍数かつ5の倍数の場合の仕様に悩んでまして」「FizzBuzzと出すつもりです」みたいな。
若手が効きたいのは「指示された以外の詳細で決まっていることはありますか?」なんだよね。
例えば、「1~100までの間で出力するようにしとくか」みたいな若手が実装してたら、たぶん「あー、依頼したタスクの目的はなんだっけ?」とか割り込んでくるんでしょ。
なら最初から「任意の数に対して対応可能な形で実装しておくように、整数以外が入る可能性あり」みたいな条件付けて出しとけや。
みんな余裕があったから。
「あ、それ教育目的だからガンガン聞きに行って良いんだよ、期待されてるってことだよ」みたいなフォローを入れる同僚とか上司が必ずいた。
あと、そもそも同期がわりと数が居て、昼めし食いながら愚痴を言いあったりすることで、あーどっこもそんな感じなのね、という納得感があったから。
今はどっちもない。
若手をバカにしない。
前述の、ベテランと若手を明確に区別した上で、能力をバカにしてないとできない手法なんだよね。
明確に「これは教育です」「勉強会です」という時間を設けてやるのであれば、パワハラにはならない。
勉強会で、クイズです正解は何でしょう?なら別に問題無いから。
例えば「俺がこの仕様を実装するときに、例えばこんな感じで実装進めるんだけど、タスクの目的から乖離してきたなと思った段階で指摘してみて」みたいなやつ。
権力勾配がある状態で、権力のある側が無い側に対して目的と情報を伏せるから。
「そういう常駐先が多いので、その訓練をします」と宣言して実施しててもご時世的にキツイのに、おそらくそういう宣言すらしてないでしょ。
UNIQLOで冬服選んできてって言われて、外出用、全部で2万以下ねって言われてる感じね。
で、じゃあアウターでも買うか、ヒートテックもいるかなーって選んでたら「あー、そういう色選ぶんだ?」みたいに言われるヤツね。
え?なんか指定ありましたっけ?って聞くと、いやいや外出用だよ?目的考えてみてよ?みたいな正解言わないヤツね。超ウザいでしょ。
教育目的として、これを明確に宣言して結果に差が出ること無いよ。
勉強なのでベテランと違う進め方してるし、クイズだから正解伏せてるって、ちゃんと説明できるから。
ベテランと違って俺は嫌がらせを受けているっていうのがハラスメントだと感じる理由なんだから、嫌がらせじゃなくて目的が明確にあると伝えるだけでずいぶん違うよ。
(ちなみに、コストをかけて勉強会を開催するのが一番イージーです。IT業界じゃないけどウチは余裕が無いからこそ完全教育目的の時間を取ってる)
ただまあ、採用コストかけて雇った若手エンジニアが辞めるというフィードバックを受けてなお手法変えないんだから信念があるんだろうし、それで辞めない若手が入ってくると良いね。
https://anond.hatelabo.jp/20241106140729
音楽ゲームの波に乗って、ポップン版も独断と偏見で書いてみた。一応曲の良さだけでなく、ポップン史的に重要な曲って軸で選んだ。
現在収録曲数は1000曲超え、現在26周年のKONAMI製アーケード音楽ゲームポップンミュージック
初期ポップンを代表する人気曲。ポップン6の人気投票では4位を獲得した。その際1〜3位ももちろんいい曲ではあるが、とかくキャラ人気が高い曲だったのもあって、実際曲だけでいうならこの曲が1番人気だったのでは…という意見も見たことがある。(諸説)
7ではLONG版がプレイできるようになった。ピチカートファイブを想起させる渋谷系の楽曲で、明るい曲調と言葉遊びのような歌詞、そしてボーカル杉本清隆のハニーボイスが魅力的な曲だ。
杉本清隆は初代からボーカル歌唱という形で参加しており、6ではサウンドディレクターも務めていた初期ポップンを支えていたコンポーザーの1人である。
初代の参加曲「ポップス/I REALLY WANT TO HURT YOU」もまたポップンの代表曲として、今でもKAC(公式大会)の表彰などで流れている。
6を最後に退社、個人の音楽活動に集中する形になったものの、その後もたまに曲を提供してくれる
近年だと公式大会で決勝初出・かつパーカッシヴシリーズの続編曲ということで速度変化が大変なことになっている「西馬込交通曲」、ソフトロックの続編曲として発表された「le mal du pays, numéro 1」が収録されている(ポップン25 peace)
ポップン6は様々な要素が従来から変化したシリーズである。サウンドディレクターの変更(5で務めていた杉本清隆が抜け、同職だったwacが1人で担う形に)、メインデザイナーの変更(犬千代、P-CATがチームから抜け、shio中心の体制に)、版権曲の収録、キャラアニメがドットから現在のようなアニメーションになったなど……。
そんな折、突如現れたのがこの曲である。
それまでのポップンではあまりなかった力強い日本語ラップ曲。そして途中で高速になる独特の譜面。
この曲の公式コメントで「この曲に美味しいところを持ってかれちまうであろうことも。…大体当たったよね?」とあったことから当時の人気が窺える。
キャラクターのサムライ男性キャラの六も高い人気を誇っている。ちなみに現在公式大会で11連覇している選手もこのキャラを愛用している。
作曲者のDes-Row自体は5から曲提供していたが、この曲で一気に人気に火がつき、さまざまな名義でpeaceの頃まで楽曲提供をし続けていた。
ヒップロックシリーズはその後もコンスタントに(3の倍数がつくナンバリング)続編曲が作られた。
当時のポップンに少なかった力強い男性ボーカル・少し大人びた歌詞に当時女性を中心に凄まじい人気があったらしい。
また、キャラクターの狼男・アッシュも人気が高かった。ドラムの彼とベースのスマイル、ボーカルのユーリというキャラ、彼らの組んでいる「Deuil」というバンドは当時の女子ポッパーの心を大いに掴んだ。その人気からか、25 peaceでは、「Deuil」として数少ない書き下ろしキャラアニメ枠として新曲を引っ提げた。
新堂曲に関してはどれをピックアップするか悩んだが、多分氏の曲の中でも人気が高い、8でライブバージョンも収録されたということも加味してこの曲を選出。
その後もポップン11に至るまで曲提供をし続けていたが、諸般の事情(詳しくは検索)でポップン12では彼の曲は全削除、ポップンから姿を消すことになった。
その後、ポップン17、ポップン24では氏の曲をオマージュした楽曲が作られた。(24に関しては担当キャラもアッシュ)
beatmaniaの生みの親にしてポップンミュージックの名付け親、南雲玲生作曲。ちなみに前述のポップス
/I REALLY WANT TO HURT YOUの作曲者でもある。
透明感のある女性ボーカルと、アンニュイな曲調は人気が高く、ポップン9ではロング譜面が作られた。
この曲はキャラクターも特徴的である。ポップン7では、キャラクター数名の名前を公募で決めるという試み「PaPa*MaMa 7」を行なっていた。
この曲の担当キャラは「かごめ」という名前に決定し、影のある少女という属性も相まって大変人気のあるキャラとなった。
ポップンでは10のお星様にお願い、20のみんなでつくろう ポップン20などさまざまな形でユーザー公募のイベントを行うが、ポップン7のイベントはそのはしりと言える。
氏の楽曲は退社後のゴタゴタで多くの曲が削除されてしまったが、こちらの曲は運良く削除を免れ、今もプレイ可能だ。
版権曲に関しては初見の人がプレイすることが多いということで低難易度の譜面が作られることが多かった。
ポップで可愛い風体のポップンに収録された筋肉少女帯。同じアーティストの「日本印度化計画」と共に8に収録された。
レベルは最高難易度級、おどろおどろしい歌詞と、ノーツが微妙にずれて非常に押しにくい譜面、おまけの辛判定とまさに(当時のレベルなら)トラウマ級の譜面。
キャラアニメのミミは、本来可愛らしいキャラのはずなのだがこの曲では怪しい雰囲気の絵柄になってしまっている。キャラ説明文を見ると「不思議な夢」ということらしい…。
長らく収録されていたが、版権曲の定めか、ポップン21にてついに削除されてしまった。
ポップンで1番有名な曲。
作曲はbeatmaniaやギタドラでヒット曲を生み出していたTOMOSUKE、作詞はポップン12で雫というヒット曲を出したあさきというBEMANI的には豪華なメンツ。和風ロックなこの曲は大ヒットし、ポップンは知らないけどこの曲は知っている、なんて人もいるくらいだ。他機種にも移植されまくり、ひなビタもカバーしている。近年だとVtuberもカバーしたりしており、人気の高さが窺える。
16では初のAC出身最高難易度43・トイコンテンポラリーという曲が作られ、その譜面の超密度部分は「わけのわからないもの」と恐れられた。
ピアノの濁流がノーツとなったその譜面は「どうしようもないもの」と呼ばれる。スタッフはそんなに難しくないと思ったらしく、レベルは最高難易度一個下の42に設定されていたのもユーザーを恐怖に陥れた。
その反省か、次のポップン18のボス曲(ふること)は譜面難易度が大幅に下げられた。
その結果、当時の音ゲー板では「ポップンはガチ機種じゃないからこれくらいでいい」派vs「トイコンサイレント並みの譜面をよこせ」派で論争が起きていたのを見かけた。
KONAMI公式大会9thKACではポップン14からのボス曲(+J-テクノ)がメドレーとなったPopperz Chronicleという曲がお披露目され、ランカー達を驚かせた。
前述でポップン公募企画の話をしたが、こちらの楽曲は「みんなでつくって20」という企画でボーカル募集をしたものである。
可愛らしく元気な曲調とボーカル、そして何より乙女がいきすぎてストーカーの域に入っているようなキャラ、かおりんが当時話題となっていた。
みんつく20で募集したボーカルはその後も今に至るまでBEMANIに参加してくれているのだが、特にこちらのNU-KOの躍進は凄まじい。
ポップン以外にもオトカドールというACでは全曲のボーカリストを担当、BEMANIのプロリーグでは監督や解説を担当するなど、様々な形で関わっている。近年では声優としてもデビューしている。
昔のポップンはスタッフコメントや質問コーナー等の影響でスタッフとユーザーの距離が近かったゲームであり、まさにポップンだからこそ生まれた曲といえる。
また、作曲のPONは16よりポップンスタッフとなり、おそらく今も主要なサウンドディレクターとしてポップンを支えている。BST騒動以降、スタッフの詳細が隠されてしまったため憶測となってしまうが…。
当時「つぎドカ!」というBEMANI作曲家4人が4機種に1曲ずつ曲を提供し、選曲回数を競うという企画があった。
その中でポップン出身のPONの曲が見事1位を獲得したという曲である。
経緯的にポップン史10選に入れていいのか?と今気付いたが気にしない。
曲はストレートに熱く、少年漫画のOPのような曲。この時期のPONは作曲スピードがとても早く、サウンドディレクターとなった22、ラピストリアでも多数の曲を書き下ろしていた。
また、このつぎドカの曲を担当した4人のキャラ(烈・風雅・鈴花・氷海)はそれまでポップンにいない毛色だったこともあってか人気が高かった。
その結果、ポップン22 ラピストリアのストーリーでは主役級に抜擢される。
ラピストリアは等身高めな絵柄に改変(メインデザイナーもshio→ちっひに変更)、インスト曲の減少とキャラに沿ったボーカル曲の増加、濃いストーリー、ジャンル名の廃止……etcなどポップンのテコ入れと言わんばかりに様々な変化を取り入れた作品。
つぎドカのキャラ4人は、そのラピストリアの変化を象徴するキャラ達と言える。
ちなみにラピストリアの画風(通称ラピス絵)は、現在ではpeaceでは従来のデフォルメ(+厚塗りにした感じ)に戻っている。
こちらはポップン史に大きな影響…という感じではないが〆にふさわしい感じだったので載っけた。
20周年記念ということで、初代より参加していたsana、杉本清隆がボーカルを務め、23くらいまで長らくポップンに関わっていたwacが作曲をしている。こちらの名義も初期の楽曲と同じものが使われている。(メンバーは多少異なる様)また、初代ポップンのBGMが引用されている。
サントラのスタッフ欄はそれまでポップンに関わっていたアーティストやキャラ(!)がクレジットされており、往年のプレイヤーにはグッと来るものとなっている。
peaceの時のポップンには末期感が漂っていた。前作のうさ猫の途中からポップンの最大の特徴とも言えるキャラアニメの書き下ろしがなくなり、次作として発表された「peace」というサブタイトルは、ポップンのスタッフロールの最後によく使われる言葉だった。
稼働前に公式が25のサブタイトル案として出した中にも「climax」「ありがとう」があり、本当に最終作だったのではないか…?と考えるプレイヤーも多かった。
歌詞には「さよならさえも言えないのなら 今その分の思いを込めて歌うんだ」とあり、スタッフからユーザーへの、いつか来る別れのメッセージが込められている。
リフレクビートの様に、実質サ終だが別れの機会を逃してしまった機種があるからこそ、歌という形でさよならを託したのかもしれない。
peaceに関しては、絵柄の回帰、昔の楽曲のオマージュ曲や、人気曲の追加譜面、そして新たな難易度UPPERなどを追加したことで好評な作品となった。
peaceはレッスンやベビーメタルの追加譜面も話題になっていたので本来ならそっちを入れるべきかもしれない。
また、新たなポップンとしてスライダーを追加、ボタンサイズを縮小などされて開発されていた新筐体「NEW pop'n music Welcome to Wonderland!」がおそらく既存プレイヤーから不評+コロナ禍でお蔵入りしたことで、現在に至るまでさよならすることなく無事に続くこととなった。
ポップン初期〜中期を凄まじい曲数と幅広いジャンルで、サウンドディレクターとしてもポップンを支えていた村井聖夜による楽曲。
特にこの曲は初音ミクもまだ開発されていない頃に、PCに歌わせた革新的な曲である。
ボーカリスト、そしてキャラの「Alt」はポップンユーザーの中では人気があったが、他機種においては数年後にjubeatに収録された「隅田川夏恋歌」にて大きな注目を浴びることになる。
可愛らしい曲調と、ロリ天使がおむつを履いているという、絵柄がデフォルメだから可愛く見えるものの、なかなかすごいキャラデザのポエットは人気を博し、その後のシリーズでも新曲・新アニメが作られていった。
特にパーキッツの作曲の方は、ブタパンチなどの名義でパーキッツの可愛い楽曲とは裏腹にハードでちょっとイロモノっぽい曲を収録していくのであった……。
パーキッツに関してはどの曲を入れたらいいかも悩んでしまった…。順当に入れるなら初代かなあ。個人的にはウィッシュが好き。
あとはDJ YOSHITAKAの曲も入れようかと悩んだ。でも他機種に沢山代表曲あるからいいか。
一応最新作まで低頻度なもののプレイしているのだが、昔の曲多めになってしまった。
ただ、ネットの評判やポップンのリアルイベントの開催状況等を見る感じおそらくブームだったのが1〜8、14〜15だったので、その辺に偏るのはさもありなんかも。
ふしぎなくすりは本当に忘れてた…
でも人気と外に与えた影響を考慮するなら絶対に入れるべきだった。と言うわけで書いてみた
撫子ロックにポップンで1番有名な曲と書いたが、こちらも同等レベルで有名な曲。
作曲者の上野圭市は主に弐寺で独特な作風の曲を提供しており、前作の16からポップンにも提供を始めた。
こちらの曲についても「ふしぎなくすり飲まされて、渋谷で海を見ちゃったの」という歌詞からお分かりになる様に、なかなかの電波曲である。曲調も相まって大変中毒性が高い。
そんなネタ度の高い歌詞は、曲が出た2009年頃はまだまだ勢いのあったニコニコ動画で大ヒットした。
この曲を使った手描きMAD「ふしぎなくすり のまされて」シリーズはブームを起こし、色んなジャンルで作られたのだった。
こちらのMADで知名度をあげたため、ポップン初出ということを知らない人も多いかもしれない。
上野氏はその後も参加し、peaceでは続編曲とも言える「いつまでやったって、別にいいじゃない!?」を提供。ポップンはいつまでやったっていいんだ。
1.Peter, Paul and Mary‐Puff, the Magic Dragon(1963)
2.The Beach Boys‐Wouldn't It Be Nice(1966)
3.ザ・キング・トーンズ‐グッド・ナイト・ベイビー(1968)
4.ヘドバとダビデ‐ナオミの夢(1970)
10.Queen‐Somebody To Love(1976)
12.The Buggles‐Video Killed The Radio Star(1979)
15.Queen feat. David Bowie‐Under Pressure(1981)
16.Bucks Fizz‐The Land Of Make Believe(1982)
19.Billy Joel‐The Longest Time(1984)
20.TOM★CAT‐ふられ気分でRock 'n' Roll(1984)
27.Bee Gees‐You Win Again(1987)
28.THE BLUE HEARTS‐青空(1989)
30.TM NETWORK‐THE POINT OF LOVERS' NIGHT(1990)
31.Flipper's Guitar‐偶然のナイフ・エッジ・カレス(1990)
32.徳永英明‐壊れかけのRadio(1990)
35.たま‐かなしいずぼん(1991)
40.篠原美也子‐ひとり(1993)
41.友部正人‐夕日は昇る(1993)
42.小沢健二 feat. スチャダラパー‐今夜はブギーバック(1994)
43.奥井亜紀‐Wind climbing ~風にあそばれて~(1994)
45.斉藤和義‐歩いて帰ろう(1994)
48.ソウル・フラワー・ユニオン‐満月の夕(1995)
50.H jungle with T‐WOW WAR TONIGHT ~時には起こせよムーヴメント~(1995)
51.My Little Lover‐Free(1995)
52.玉置浩二‐田園(1996)
53.高橋真梨子‐ごめんね…(1996)
55.サニーデイ・サービス‐NOW(1997)
56.globe‐FACES PLACES(1997)
57.伊織‐キミがいれば(1997)
58.たま‐パルテノン銀座通り(1997)
61.川本真琴‐桜(1998)
62.柳原陽一郎‐きみを気にしてる(1998)
64.ブラブラブラボーズ‐クラスで一番スゴイやつ(1998)
66.19‐あの紙ヒコーキ くもり空わって(1999)
74.My Chemical Romance‐Welcome To The Black Parade(2006)
79.神聖かまってちゃん‐ロックンロールは鳴り止まないっ(2010)
80.ハンバートハンバート‐虎(2010)
81.テンテンコ‐Good bye, Good girl(2014)
84.The Witcher 3‐Wolven Storm(2015)
85.大森靖子 feat. の子‐非国民的ヒーロー(2016)
86.never young brach‐明るい未来(2016)
88.TWICE‐BDZ(2018)
94.Brave Girls‐RED SUN(2021)
96.MAISONdes feat. 和ぬか,asmi‐ヨワネハキ(2021)
ワイ:
#include<stdio.h> int main(){ for(int i = 1;i <= 100;i++){ if(i%15 == 0){ printf("FizzBuzz\n"); }else if(i%3 == 0){ printf("Fizz\n"); }else if(i%5 == 0){ printf("Buzz\n"); }else{ printf("%d\n",i); } } return 0; }
ワイ:考えるのが面倒くさいから
Boi:ここまとめられるでしょ
#include<stdio.h> int main(){ for(int i = 1;i <= 100;i++){ if(i%3 == 0)printf("Fizz"); if(i%5 == 0)printf("Buzz"); if(i%3 != 0 || i%5 != 0)printf("%d",i); printf("\n"); } return 0; }
Boi:ああっ
ワイ:ww
色々縁が合って学部名に情報が入る大学3―4年生の面倒を見てるんだけど,驚くほど英語が出来ない
一応授業である程度習ったらしいけどコーディング能力は低い.具体的にはFizzBuzz問題解けないくらい
しかしそれ以上に問題があるのは英語と基本的な知識で,例えば次の2つのエラー文がどちらからも何が問題なのかわからない
NameError: name 'Fizz' is not defined
IndentationError: unexpected indent
defineもIndentも単語として知らない以前に,変数と文字列リテラルやインデントを理解できてないからエラーコードでググっても解決できないんだよね
同じ理由でDeepL等で訳しても無理.ただ,ChatGPTとかに説明してもらうとわかるらしい
5人中2人がこのレベルなんだけど,本人の希望通りの業界に就職したら0から叩きこまれるんだろうなって思って子牛を見ている気分になったよ
P-221-B:ドライブスルー薬局(東京都)
✅待ち時間は同等でも、ドライブスルー利用者の方が「待たされている」と感じる人が多い
・・・"実際の待ち時間"と"待たされている感"、実は全然別物なんですよねぇ(´・ω・`)#日本薬局学会— Fizz-DI@比較と使い分け-Yushi Kojima (@Fizz_DI) November 6, 2021
なんか書いとけ
テキストの説明が理解できないとき、学習者がすべきなのは自身の理解を正すことであって、自己流の解釈を思い付くことではない。つまり、
といったことをすべきなのであって、自分の腑に落ちるQiitaの記事とかを探すことは、全く理解に近づいていない。むしろ遠ざかっている。
というか、「明らかに分からない用語などがあるのに、そこを回避して全体を理解しようとする」のは、プログラミングに限らず勉強法として根本的に間違っている。
かつて、どうしても「コメント」の意味が理解できない新人がいた。
要するに彼は、プログラムの処理に関係の無い機構が存在する意味が理解できなかったらしい。
「コメントは、コードでは表現できない実装の意図をソースコード中に記述するときに用います」
などと説明してみても、
... // 15の倍数を先に判定しないと、たとえば15がFizzになってしまう if (n % 15 == 0) { return "FizzBuzz"; } else if (n % 3 == 0) { return "Fizz"; ...
「コメントは、処理をコメントアウトしてデバッグするための機構である」
と言う結論に達したようだった。勿論、普通のプログラマなら誰でも知ってるように、そういう使い方は良くない。
「プログラミング言語のあらゆる機能が、プログラムの何らかの処理と対応している」
という誤ったメンタルモデルを正すことである。それを放棄して、自分にとって都合の良い出典不明の情報を鵜呑みにしたのが、そもそもの間違いである。
こういうことは、何も新人に限った話ではない。自分では一丁前のつもりのプログラマにも、ライブラリ等の全く見当違いな使い方をしてくる奴がよくいるのである。
そういうのは、自分の経験のある別の言語の○○という機能に対応している、と勝手に思い込んでいたり、あるいは、実装とセマンティクスの区別ができず、インタフェースのような処理と直接関係ない機能が理解できなかったりする。
要するに、不明点を正しく理解することを放棄して、自分に都合の良い解釈を得て早合点しているのである。
そういう人はプログラマには向いていない。
コピペチンパンジーはFizzBuzzを知らないしたぶん解けない。
この知らないというのが本当にヤバくて、普通プログラマとして飯を食ってたらFizzBuzzくらい知ってるじゃん?
解いたことはなくてもなにかしらの技術記事で触れたりするじゃん?
知らない。
コピペチンパンジーなんだから人間よりググってるはずなのになぜ…?
0から100までの数字を表示する。3で割り切れるならFizzと表示する。5で割り切れるならBuzzと表示する。3と5で割り切れるならFizzBuzzと表示する。
と言われたらたぶん実装してくるし、それで動くからOKを出してもらえる。コピペできるから。
でもこうだと実装できない。
1から999までの数字を表示する。5で割り切れるならDogと表示する。7で割り切れるならCatと表示する。5と7で割り切れるならBirdと表示する。
「自分で考えて作ってみる」ことが、コピペチンパンジーは、マジで、できない。
コピペしてからキーボードを叩くので、猿が書くシェイクスピアより人間が書いたっぽいものに仕上がっているだけなのだ。
プログラミングで何かを作る際には、当然だけど厄介で難しい部分があって、所謂「自分しかメンテできない」状態のコードがどうしても出来上がってくる。
それじゃ困るので、コメントもひときわ丁寧に書いているし引き継ぎ資料も作っている。
たまにマンツーマンで教える必要があったりもするが、ちょっとイケてるプログラマが相手ならばバトンを手渡すことができる。
彼は「誰でもその箇所を引き継げる」ことを、努力目標じゃなくて達成すべき項目と考えている。
いや、無理でしょ…。
厄介で難しい箇所は、どう噛み砕いたところで、厄介で難しいから、厄介で難しいのである。
突破するために必要なのは「知っているか、知らないか」ではなくて「考えられるか、考えられないか」なので、
いくら知識を残したところで、人間にはできるがコピペチンパンジーにはできない。
ましてや普通レベルのプログラマでは手に負えない箇所を、どうしてFizzBuzzを知らないコピペチンパンジーが…。
「いや、無理でしょ…」が今のPLには不誠実な態度に見えているようだ。自分しか知らない情報を独占している、と受け取られている。
他の人に教えているのはノーカンらしい。
コピペチンパンジーを差別していると言われてしまえばそうかもしれないが、でも、コピペチンパンジーはマジでコピペチンパンジーなのでマジでどうやって教えてもいや、無理でしょ…コピペチンパンジーだから…。
use strict; use warnings; use feature 'say'; sub fz { my @pattern = @_; return sub { $pattern[(shift() - 1) % @pattern] }; } my $fizz = fz("", "", "fizz"); my $buzz = fz("", "", "", "", "buzz"); foreach my $i (1..100) { say ($fizz->($i) . $buzz->($i) || $i); }
# use 5.xxxが使えない罠。
具体的に1から15までの例で考えてみる。
集合で考えるとして、集合Aを3の倍数、集合Bを5の倍数とする。
U = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
A = { 3, 6, 9, 12, 15 }
B = { 5, 10, 15 }
A∩B = { 15 }
¬(A∪B) = { 1, 2, 4, 7, 8, 11, 13, 14 }
ベン図は次のようになる。
+-----------U----------+ | | | +---A------+ | | | 3 6 | | | | 9 12 +--+---B---+ | | | |15| | | | +-------+--+ 5 10 | | | | | | | +----------+ | | | | 1 2 4 7 8 11 13 14 | +----------------------+
¬(A∪B) = ¬A∩¬B
よって、FizzBuzz問題は次のように読み替えられる。
表にしてみる。
5の倍数 | 5の倍数ではない | |
---|---|---|
3の倍数 | "FizzBuzz" | "Fizz" |
3の倍数ではない | "Buzz" | 元の数字 |
よくあるコードのスタイルをWikipediaから借りることにして、使用する言語をCとする。
https://ja.wikipedia.org/wiki/Fizz_Buzz
#include <stdio.h> int main(void) { int i; for (i = 1; i <= 100; i++) { if (i % 3 == 0 &amp;&amp; i % 5 == 0) { printf("FizzBuzz92;n"); } if (i % 3 == 0 &amp;&amp; i % 5 != 0) { printf("Fizz92;n"); } if (i % 3 != 0 &amp;&amp; i % 5 == 0) { printf("Buzz92;n"); } if (i % 3 != 0 &amp;&amp; i % 5 != 0) { printf("%d92;n", i); } } return 0; }
ここで、元増田が発想したような「3の倍数の後に5の倍数を判定させて"Fizz"と"Buzz"を連続出力すれば"FizzBuzz"の段は要らないんじゃね?」作戦を発動する。
"FizzBuzz"の判定をごっそり削り、"Fizz"と"Buzz"の条件が同時に起こることを考慮する。
forの終わりに改行するようにする。
#include <stdio.h> int main(void) { int i; for (i = 1; i <= 100; i++) { if (i % 3 == 0) { printf("Fizz"); } if (i % 5 == 0) { printf("Buzz"); } if (i % 3 != 0 &amp;&amp; i % 5 != 0) { printf("%d", i); } printf("92;n"); } return 0; }
プログラミングの問題だけど高校一年生までの数学の考え方で解決できる。嬉しい。
1 から順に数を数えていく。但し、その数が 3 で割り切れるならば数字の代わりに Fizz と、5 で割り切れるなら Buzz と言うゲーム。3 でも 5 でも割り切れる場合は、FizzBuzz の順に言う。
これをプログラミングするのがFizzBuzz問題です。
1から15までの例を考えてみる。
入力 | 出力 |
---|---|
1 | 1 |
2 | 2 |
3 | Fizz |
4 | 4 |
5 | Buzz |
6 | Fizz |
7 | 7 |
8 | 8 |
9 | Fizz |
10 | Buzz |
11 | 11 |
12 | Fizz |
13 | 13 |
14 | 14 |
15 | FizzBuzz |
入力と出力の関係を考えると、入力が定まれば、出力も一意に定まることが分かる。つまり、入力と出力の関係を関数にすることができる。この関数をf(x)とする。
関数f(x)は、入力が3の倍数なら"Fizz"、5の倍数なら"Buzz"、3と5の公倍数なら"FizzBuzz"、その他は入力値を返す。
公倍数は最小公倍数を整数倍した値なので、ある値が公倍数であるかどうか判断するには、最小公倍数で割ってみて、割り切れるかを調べることにする。
3と5の最小公倍数は15なので、15で試しに割ってみて、割り切れるかどうかを見る。
3と5の倍数の判定も、それぞれ、3と5で割り切れるかどうかを見る。
Perlは、上から順に命令を実行する命令型言語なので、3や5の倍数の判定の前に、15の倍数の判定を持ってくる。
逆にすると、15の倍数は3の倍数であり、5の倍数でもあるため、"FizzBuzz"が必要な所が"Fizz"や"Buzz"だけになってしまう。
use 5.024; use warnings; sub f { my ($x) = @_; if (($x % 15) == 0) { return "FizzBuzz"; } if (($x % 5) == 0) { return "Buzz"; } if (($x % 3) == 0) { return "Fizz"; } return $x; } foreach my $i (1..100) { say f($i); }
2021/04/25用
%:include <stdio.h> %:include <stdlib.h> %:define 三つ子と五つ子の協奏曲 main %:define ☯ ; %:define 環 while %:define 異名 typedef %:define 終焉 101 %:define 伝承(詩) printf(_Generic((詩), int: "%d\n", char *: "%s\n"), 詩) %:define 純白を漆黒に漆黒を純白に(色) (色 = 終焉 - 色) %:define 終わりは、斯く示された。 return 0 異名 int 無限整数の幻想を維持せぬ整数 ☯ 異名 char 世界の言葉を扱うには不十分な箱 ☯ 異名 void 虚無 ☯ 無限整数の幻想を維持せぬ整数 破滅の刻 = 終焉 ☯ 虚無 三つ子と五つ子の協奏曲(栞, 慈悲深き終身独裁者の注文) 無限整数の幻想を維持せぬ整数 栞 ☯ 世界の言葉を扱うには不十分な箱 **慈悲深き終身独裁者の注文 ☯ { 環 (0 <-- 破滅の刻 && 純白を漆黒に漆黒を純白に(破滅の刻) && ((破滅の刻 % 3) * (破滅の刻 % 5) ? 伝承(破滅の刻) : 伝承(破滅の刻 % 15 ? 破滅の刻 % 5 ? "Fizz" : "Buzz" :"FizzBuzz")) && 純白を漆黒に漆黒を純白に(破滅の刻)) ☯ 終わりは、斯く示された。 ☯ }
プログラマの実力図るのに、コードを書かせる流れが最近あってそれはとてもいいことだと思うんです。
ただ、すごいぼんやりしてるなと思って違和感を感じます。コードを書かせるって具体的に何ですかね?Fizz Buzzみたいなのですかね。
たしかにプログラマがコード書けないのは論外だと思いますけど、そんなの書かせてもやっぱり実力はわからないと思います。
話をweb系に限らせて書くと、そもそもそういうアルゴリズムが必要なコードを書く機会ってそんなになかったりしませんか?
開発環境作ることから始まって、DBも使うし、当然フロントの知識も必須だし、他にもチームで仕事するための技術だったり
結構横断的に覚えることが多いわけで、実はコードを書くのはほんの一部だったりするんです。
心配なのは、コード書くのは得意だけどサーバもフロントも全くできなくて、最終的なプロダクトは作りきれないって人が評価されて
アルゴリズム的なのは苦手だけど、きちんとプロダクトは作って仕上げて納品までできるって人が評価されなくなることです。
実際働きだしたら後者が評価されるに決まってますが、採用試験で後者の採用を逃すことはありうるのかなと思っています。
1時間か2時間の面接の間にそういうコード書かせるよりは、面接前に何か作ったもの提出させる方がいいんじゃないですかね。
簡単なサイトだったりアプリも作りきれない人って案外多いし、そこで足きりしちゃっていいと思います。
でもそれだと応募の敷居が高すぎて、人が来なかったりするんでしょうか。難しいところですね。