つれづれなるままに、クソを垂れ流す

JPHACKS2023参加記録(下書き)

JPHACKS2023に出ました

JPHACKS2023に参加してきました。

チーム名はここに書きたくない。継続して名乗れる名前を付けよう。

普段は高校の同級生らとご注文は豆腐職人ですか?というこちらもなかなかにふざけているチーム名でハッカソンに半年に一回くらい出ている。何度も受賞歴がある優秀なチームだぞ。去年のJPHACKS2022もこのチームで出ているぞ。

今年も豆腐職人のほうで出ようと思ったのだがあまりに人が集まらず、バイト先のほうでいい感じに人が集まったのでバイト先の人を集めたチームに普段一緒にハッカソンに出ている高校の同級生を一人ぶち込む暴挙に出る。結果7人というハッカソンでは大所帯に。

JPHACKSって何ぞ

どんなイベントかは上のリンク先を見ればわかると思うので、かるーく書いていく。

全国何か所の各会場で2日間開発を行い発表、優秀な15チームが決勝に勝ち上がり追加で2週間開発という大規模なハッカソンである。スポンサーがたくさんついており、たくさんのスポンサー賞があるのも目玉の一つ。去年はオンラインでの開催。

ハッカソンに出始めたのがコロナウイルス感染症が流行し始めてからで実はオンサイト参加したことがなく、今年からまたオンサイトということでかなり楽しみにしていた。東京会場は東京大学。初めて入った。

事前準備

メンバーを集めてdiscordサーバーをつくる

チーム名を決める(自己紹介で名乗る時のことを考えよう)

各々のスキルセットを洗い出してある程度作れるものを考える

イデアを絞り出す

作るものを決める

分担を決める

という感じでした。何作るかは前々日の夜くらいに決まった。

 

何作ったの?

これ見て

ざっくり言うと、AIアシスタントにキャラクター性とアバターを付与してMR空間に召喚、一緒の空間で過ごしながらスマートホームの家電と連携してより生活を便利にしようというもの。MR空間にアンカーを設置しておき、そのアンカーに触れることで家電を動かしたり、キャラクターに動きがあったりする。

今思うと割と課題感とか解決方法がとっ散らかってると言われても仕方ないなという感じがする。

遅刻した

30分前につくつもりが開場時刻を30分間違えめっちゃギリギリになる。と思ったが、おなかは痛いし迷子になるしでめっちゃ遅れる。東大構内にスタバがあった。広い。北千住激狭大学に通っていると感覚が狂うが普通の大学こんなもんなんだろうか。まああっちはコンパクトなのでそれはそれで嫌いじゃない。そんなことを思いながらガイダンス中に入室。ごめんなさい。

ガイダンスが終わり午前10時に開発スタート。開発に用意されたのは会議室っぽいところ。椅子はよかった。電源もある。逆を言えばそれ以外はあんまりない。

 

自分の担当

私の担当はChatGPTをシバきまわすこと(何作ったの?の項でいうならAIアシスタントにキャラクター性を付与とスマートホームの家電と連携あたり)だったので、とりあえず普段使いしているAPIラッパーを引っ張り出してきてとりあえず必要な機能の追加を検討。

とりあえず逐次的な処理のためにstreamに対応すること。要は公式のページで使えるChatGPTのように、出力を逐次的に渡していくものに対応する。そしてFunctionCallingに対応すること。これはChatGPTにこういう関数があるので困ったらこれ呼んでいいよというのを覚えさせる機能である。ChatGPTは学習データは過去のものであるため天気予報などはできないが、天気予報の関数があることを教えておくと、天気の情報が必要になった時にその関数を用いて情報を取得して天気予報を行うことができるようになる。今回のプロダクトであれば家電に対して操作を行うことができる関数を教えておく必要がある。

FunctionCallingは便利な機能ではあるがなかなか厄介である。本当にリンク先を見てほしいのだが、天気予報一つにとんでもない量の記述である。関数そのもの、引数それぞれに型や説明の記述が辞書型およびJSONの形式で必要になる。これを各家電になど到底考えたくもない。

ということでこれらの面倒な機能を楽にしてテキストからIoT家電(APIから制御できる電球)を制御できるようにするのが私の任務1である。結局これが完成するのは翌朝4時だか5時だかになる。たった電球光らすのにどんだけかけてんだという話になるが、まあこいつらがとんでもなく厄介だったのである。

streamについては実装経験があるので大して苦労しなかったが、難しいのはFunctionCallingとそれの複合だった。

眠いので残りは明日書いて推敲します。

まねきねこDDRに行ってきた

要約(これらの情報は2023/02/17のものです)

  • アンケート・AAAキャンペーンはともに終了しておりアマギフはもらえない
  • 電話で予約が取れる
  • 曲目・オプションはコナステの無課金フリープレー準拠(少ない!!!)
  • 難度はDIFFICULTまで(最大12が1曲、次に10が3曲)
  • パネルはAC風のオリジナルのもの(踏み感や凹凸感が違う)
  • それなりに出来る人としてはつまらないかもしれないけど、布教や入門にはすごく良い!!
  • 一応カラオケも普通にできる
  •  

行くぞ!!!

予約するぞ!!!

2/10に突然、TwitterにカラオケまねきねこDDR体験会開催中!というものが流れてきた。なんそれと思って調べてみたら割と定期的にやっているそうで、何度目かの開催らしい。ご要望にお応えして難易度を追加!と書いてあり、DIFFICULTが追加されたとのこと。踊までできるなら割と楽しそう~行ってみてえ~とか思ってたら友人からカラオケの誘いが来たのでノリで電話で即予約(2/14)。金曜日(2/17)の昼頃から3時間、適当に言ったらすんなり通ってしまったので、予約の混雑具合は分からず。その場で料金の見積もりまで出してくれた。

DDR代(人数にかかわらず)

2h1000円,以後300円/30min

それとは別に平日室料

会員なら150円/30min+ドリンク300円ちょい~

で最終的に二人3時間ドリンクバーで4500円。

友人はDDR未経験。(なのでいい体験になりそう、と勝手に連れていく)

そして私はSP7段DP3段、たまにノンバーでSP14、DP13くらいまでやったり。

 

向かうぞ!!!

JR関内駅で下車。友人があらかじめ調べておいてくれた横浜文明堂の喫茶店で一息。アールグレイティーとカステラをいただく。とてもおいしくて、お店の雰囲気もよかった。

そこから徒歩数分のところにコンビニやドンキがあるので、飲み物等の準備は忘れずに!(まねきねこは持ち込みOK)

カステラとアールグレイティー

やるぞ!!!!

入室するぞ!!!

予約した名前を伝え、少し説明があった後に入室。アンケート回答、AAA(990,000)でアマギフ!というキャンペーンをやっていたそうだが、どちらも終了とのこと。

入った瞬間のアングルの写真を撮り逃す。(ネットにいっぱいある。)

本来10人くらい入りそうな部屋の真ん中にパネルがどーんと置かれており、壁際の椅子に合わせて机が並べられていた。スペース的には5,6人までは入れそう。

画面下にカラオケとの切り替えスイッチがあり、カラオケもできるようになっていた。

利用料、室料と別

やるぞ!!!

 

こんな感じ
縛り

実際に触ってみた感じ、コナステの無課金フリープレー、記録残らず、DIFFICULTまでという縛りっぽい。

無課金フリープレーなのでオプションが少なくとんでもなく曲が少ない。FAXXとかエンディミとかやるつもりだったのに……

曲目

曲目としてはコナステ限定のJ-POP等とDDRの曲数曲。

↓こちらのフリープレーのところを参照。

DanceDanceRevolution | コナステ

ACでできない曲がいっぱいなので新鮮ではあったものの、踊までだと12が1曲、10が3曲とノンバー好きとしてはちょっと不満。(できる難度上げすぎるとパネルのダメージでメンテが大変なんだろうなあ……)

ACでできない曲でスコアタ楽しむのでも十分に楽しいが、数時間貸し切り空間でできる割に曲目が少ない、のはちょっと寂しい。

 

パネル

見た目の雰囲気は完全に金筐体。踏んだ感触がちょっとやわらかめ?ACにはないマルとバツと合わせて操作。カラオケなどによくあるベタベタ床のせいでだんだんパネルがベタベタになる。最初は普通だったので靴に気を付ければ大丈夫そう。感度は良い感じで反応しないとかはない。あとACに比べて平坦めで、踏み感と相まってACに慣れてると気持ち悪いかも。

 

注意点
  • 難易度決定時?にマル長押しでオプションへ(説明がない!!!)
  • オプションは毎回リセット
  • 画面小さめで近めなのでハイスピは少し低めの方がよさそう
  • レーン背景変えられないのちょっとつらい
  • カラオケの機械から音量を弄れる(爆音でできる!)
  • 同じビルの近い階で工事があり、時々すごい音がした

感想!!!

未経験の友人と周りを気にせずに爆音でDDRできたのはかなり楽しかった。休んだり交代しながら自分のペースで出来るし、周りを気にせず会話できるので、実演しながら踏み方のアドバイス喋ったりとかくだらない話とかしながらプレイ出来て楽しかった。最初はレベル5に苦戦していたものの、最後には6でAが出るまでに。友人も楽しんでくれていたようでよかった。

どちらかというとDDRerが楽しむというよりは布教・入門用で、曲目・環境ともにとてもいいので、DDRに触ってもらいたい人と一緒に行くと楽しいと思う。飽きたらカラオケもできる。

ちょっと思うところも多かったので、アマギフもらえなくてもアンケート答えさせてほしかった……

 

公式ページとかもなく、断片的な情報をかき集めて検討している方もいると思うので、これが役に立ったようであれば幸いです。

おまけ!!!

せっかくちょっと出来るようになってきたしACもやろうぜ!!ってことで行くときに見かけたドンキ側にちょっと行った方にある小さいゲーセンに行ったものの流石に置いてなかった……(弐寺LM2台とかボルテVM2台とか以外に新しいのがあった)

今調べてみても近くのゲーセンにはおいてなさそう……?

横浜のラウンドワンが一番近そう。

 

 

ポケモン、難しくね? Part.1

最近、色々あってポケモンのバトルシステムの再現を試みているのだが、難しすぎないか???ということで、こちらのページを見てみてほしい。

見てもらえれば分かる通り、パラメータが多すぎる。なんだ種族値って。なんだ努力値って。(まあある程度調べてはいるので今は理解しているのだが)

私の脳みそではHP・防御力・攻撃力があって、偉大なるアルテリオス計算式によってダメージが導き出されるものくらいしか処理できない。

実際簡単なターン制バトルゲームを作る練習をするような場合ではそれでもいいし、だいたいそれでやっている。そうやって簡単なものを作りながら教えている中でポケモン再現しようぜとなって今に至るわけだが、正直ナメていた。

ポケモン自体はやったことがある(DP,BW,BW2,シールド,スカーレット)し、ルールやシステムはある程度理解していたつもりではあったが、いざ整理してみると生半可な覚悟で実装できるほど簡単ではなくね?となった。

ここではメモがてら、複雑なポケモンのステータスを読み解いていきたい。

 

(ポケモン博士の諸君らには至極当然のことを、さも新たな発見のようにひたすらに書き綴っていこうと思うので、正直そんなに面白い話ではないと思う。)

 

とにかく最初に述べたようにポケモンそのもののステータスが複雑極まりない。大枠としてHP・攻撃、特攻・防御・特防・素早さという6種類のパラメータがある。この6種類のパラメータが適当に決まっていれば楽なのだが、そういう話ではない。これらのパラメータが複数の値の組み合わせで決まるのである。まず1つ、種族値というポケモンの種族のステータスがある。ピカチュウにはピカチュウ種族値(素早さが大きい)が、リザードンにはリザードン種族値(特攻と素早さが大きい)が、という具合である。ポケモンの種族としての特性を反映した値で、かなり重要らしい。たまにネットで見かける"600族"というのは、これの総和が600になる強いポケモンのことらしい。この種族値に、個体値努力値という二つの値が載る。めんどくさ。

個体値は、そのポケモンを捕まえたり孵化させたりしたときに決定する先天的な値で、あとからの変更はほぼ不能(一応アイテムを使って最高値にすることができる)な、いわゆる天性の才のステータスである。種族値ほどではないにせよ、影響が大きいのでとても重要らしい。各パラメータで0~31があり、最大の場合Vと呼ばれ、6種類のパラメータがVのポケモンを6Vと呼ぶ。ポケモンプレイヤーが血眼になって厳選という作業をしているのは色違いとこいつのせいらしい。今ではアイテムで最大には出来るようになったが、場合によっては低い方がいいケースがあるらしく、まだ厳選が要るらしい。あと、タマゴを産ませると遺伝するらしい。うわあ。

そして次が努力値である。バトルやアイテムを通して得られる後天的な値で、バトルでは倒す敵によって伸びるパラメータが変わり(つまり、実装上どのポケモンがどの努力値を伸ばすかという概念もある、めんど)、アイテムを与えた場合は与えた物によって伸びるパラメータが変わる。そして伸ばせる値の一つのパラメータあたりの限界と総和の限界が決まっている。努力値とは言い得て妙である。これも個体値と同程度以上にパラメータを伸ばせるのでとても重要らしい。結局全部重要じゃん。

種族としての値、先天的でランダムな値、後天的な値、これらを組み合わせてパラメータの値が決まるのだが、実はまだ一つ値を決める要素がある。性格である。

おくびょうだとかすなおだとかの性格があり、それぞれの性格により若干パラメータの値が上下する。(一つが1.1倍、一つが0.9倍、ステータスが変化しない性格もある)これもアイテムで変化するパラメータを変えられるようになった。

個体値といい性格といい、昔は完全にランダムな中でゴリゴリに厳選が行われていたということで、今は理想的なポケモンを生み出しやすいいい環境なのだろう。(その分厳選の優位性は失われるが)

最終的に、’(種族値個体値努力値)×性格 )×レベルでステータスが決まる。(細かな係数はいったん無しで!)

ここまで来てまだステータスの話である。正直ここまで再現するのでも小課題の域を超えている気がする。

ここに、わざ、特性、天候、バフ、もちもの、状態異常などの様々な要素が絡まってダメージが決定し、バトルが進行していく。まだ細かい条件が出きっていないが、この時点で再現の実装が憂鬱である。

 

バトルの話まで切り込むと本当にとんでもない文量になりそうなので今日はここで終わり。

今後もちまちま書いていこうかなと思う。

自己紹介、どうする?

大学に上がってから、やたらと自己紹介をする機会がある。大学のグループワークのアイスブレイクだとか、バイトやインターンなどで新しい組織に参加するときだとか、雑に集まったパーティの時だとか、前よりは社交的になったのもあり自己紹介のタイミングが死ぬほど増えた。今日もSlackの自己紹介チャンネルに自己紹介を置き忘れてたのを思い出してそこに自己紹介を綴っていてこのテーマを思いついた。

そもそも人の前で喋るのが苦手なのもあり、何度やっても慣れない。プレゼンも下手なので、前もって言いたいことを決めていてもそれを遂行できないので、救いようがない。特に大学のグループワークの時は高校の頃の感覚で技術スタックとかを話してたら全然伝わらずえらくスベった。苦しい。逆に、技術的な話ができる場での自己紹介はまだ楽ではある。が、やはりオタクなので喋る文量を間違えて場を冷やしてしまう。

例えば、新しいSlackやDiscordなどのコミュニティに参加したときに自己紹介のチャンネル等に自己紹介を置くとする(まさに今日あったケース)。大体の人が

  • 名前(HN)
  • 基本的な情報
  • 他の所属
  • そのコミュニティでの立ち位置・所属
  • 趣味
  • よろしくお願いします!

のような感じであると思う。エンジニア的なコミュニティだとここに技術スタックだとか経験・経歴などが入ってくる。

一般的なものだと

  • XXです!(名前)
  • XXのX年で、XXを勉強しています(基本情報・経験・経歴)
  • XXXXに参加することになりました!(所属)
  • XXやXXXなどができます!(技術スタック)
  • 普段はXXやXXXをしています!(趣味)
  • よろしくお願いします!

という感じだろうか。おお、なんて簡潔なのだろう。自分で書いていて感動している。これが書ければいいのだが、実際にできたものは

  • はじめまして!(XXでお会いした方はお久しぶりです)(挨拶)
  • XXです!(名前)
  • くろまなどと呼ばれます!(HN)
  • 今大学2年で、先日20歳になりました!(基本情報)
  • XXに参加していますが、追々他の物にも参加するかもしれません!(所属)
  • 守備範囲としてはXX、XX、XX、XXやXXなどもできます!(広く浅くやってるのでちょっと怪しいです……)(技術スタック)
  • あとはXXやXXでXXXXなどもできます!(技術スタック2)
  • 趣味はXXXやXXXX(補足補足補足!)などです!(趣味)
  • よろしくお願いします!

などと、こんな惨状である。酷い。今からでも編集したい。するか。

 

した。

 

まず、括弧で補足するのがよくない。本文に入らない程度の情報は不要。もしくは、本文に組み込めばよい。(見てるかTwitterのオタク)

名前とHNを分けるのはしょうがないが、ここは逆に括弧で使っても良いかなと思う。

そしてこの程度の基本情報、いるか?

所属のかもしれない程度の情報、いらない。

技術スタックは自信があるものに絞れ。

ただでさえ取っ散らかってるのに技術スタック2いらんだろ。

趣味の補足も要らん、オタク丸出しか?

よろしくお願いします!

 

自分でも笑ってしまうくらい直せる部分が多すぎる。多すぎる。酷い。自分を少しでも良く、強く見せたいという気持ちが見え見えである。正直自分で分析していて恥ずかしくなってきた。苦しい。自己紹介は謙虚に推敲しながら書こう。終わり。

 

 

日記を書き始めるついでにブログを書き始めるなど

とんでもなく病み散らしているのをTwitterに垂れ流していると、そういった気持ちと向き合う方法として日記を書くことをよく勧められるので、重い腰を上げてようやく日記を書き始めた。

で、なんだかんだ面白くなってしまい、勢いでブログを開設するに至った。もともと文章を書く行為自体は好きな方なので、Qiitaでたまーに記事を公開したりはしていたが、技術系のブログは自信が持てないので、ほとんど限定公開だ。

思考を垂れ流す肥溜めとしてTwitterを使ってきたが、やはり140文字には収まらない気持ちだとか、思うことだとかがある。なので、ここではそういうこととか、自己満足の趣味記事とかを、適当に無責任につづっていきたいなあ、と思う。

雑に思考を垂れ流すことのメリットとして、自分が思ってることの整理だとか記録だとかがある。が、まあただの垂れ流しなので脈絡なくだらだらと続いていくので、出来ればここでは読むに堪えるような文章を綴っていきたい。と思ってはいるがそもそもこんなもの誰も読まないし、この時点でくどい。

そもそも、こんなゴミみたいな思考を他人に見せびらかすという行為自体が不可解であるが、正直私でも何故こんな事をしているのか分からない。自慰行為に近い所はある。おそらく根本には構ってほしいだとか承認欲求があるのだろうが、こんな気持ちの悪い行為をしていて誰も寄ってくるはずもない。そもそも私は極度の人見知りなので急に寄ってこられても困る。(現在あまりにも苦しいので、いい感じに私の人見知りを突破してくれる人を募集しています。)

結局私は、承認欲求に溺れながら人を拒絶してしまう歪に育った精神性を持つ悲しき化け物もとい、ただの野生の残念なオタクにすぎない。

なんか文章が全体的に厨二の日記っぽくなってしまった。終わり。