けものみち

まったりと、きのむくままに。

で、結局6年間あんたはなにしたん? ~苦悩しながら過ごした一匹のこぎつねのお話~

この記事は「Kyoto University Advent Calendar 2021」の6日目の記事です。

adventar.org

こんにちは。白狐(びゃっこ)と申します。

12/05 の午後8時にツイッターから京大のアドベントカレンダーをやっているという情報を見つけて、12/06 の枠が空きっぱなしなのもなんかよくなさそうだなと思って、手軽にかけそうなネタを爆速で書き起こしたものです。

簡単に自己紹介をすると、現在、京大の情報学研究科の修士2年で、いまは修論執筆に向けて実験データ収集やら理論整備やら読書やらいろいろこなしながら、片手間で趣味(たくさん)、TA、サークルのお手伝い(イラスト制作など)をこなしている人です。まあ、なんかいろいろやってる人なんだな~って感じでいいと思います。

そんな私の、6年間の生活、苦悩、努力、のダイジェストみたいなものを書いていこうかなと思います。完全に個人の話です。

楽しい大学生活の始まり ~桜が咲いたら、一年生~

f:id:WhiteFox-Lugh:20211205202703j:plain

北海道出身のわたしは、入学シーズンといえば、雪と雪解けでできた泥水たまりの殺風景しか思い浮かばなくて、なにが桜が咲いたら一年生だよ、なんて思っていましたが、京都に降り立ってようやく桜が咲いたら一年生、を経験することができてちょっぴりうれしかった記憶があります。

さて、晴れて京大生となって、その次です。

快適に大学生活を送るために多くのことがすることといえば、友達作りなわけです。

この友達づくりの過程で、ああ、全然違う環境に飛んできてしまったのだな、と痛感するわけです。

まず絶対といっていいほど話題になる出身地、出身校の話題。

出身地はやはり関西圏が多いなとそこまで驚くことはなかったのですが、出身校はテレビとかで聞くような有名な私立、中高一貫がかなり多く、この時点でうっすらと「格差」みたいなのは感じてしまいました。 また、わたしが北海道出身と自己紹介すると、多くの人が「北海道!?!?」と驚きを隠せないような反応をされていてちょっと面白がっていた記憶があります。飛行機で数時間程度でいけるのにね。

そして、話題のネタがなくなってうっかりするとどっぷり話し込んでしまう入試のお話。

今年の数学は簡単でしょ、国語はウォーミングアップといった話題だけで話し込める人ばかりでした。正直入試は突破してしまえばどうでもいいと思っていた人なので、なんで終わったことをこんなに思い出話のように面白そうに話すんだろう...とか、この人たちは入試で苦労をしないのか...みたいな、なんというかある種の「敗北感」を入学してすぐに感じてしまったわけです。

この先、ちゃんとやっていけるんだろうか、という不安が募ります。

楽しい日々

友人と図書館で課題をこなしたり飯を食べに行ったり、サークルにいったり、たまには観光地に行って癒しを得たり、と大学生活の自由度の高さに心地よさを覚えていました。

学業もちゃんとついていけるのか、という不安を取り払えるくらい十分な単位数、成績をとれていましたし、工学部情報学科では学部2年でコース配属があるのですが、無事に進みたいコースに進めるといったように、順調に進んでおりました。

サークルでの活動は特に力が入っていました。

わたしは生協のサークルに所属しており、受験生のサポートを行ったり、大学のオープンキャンパスやホームカミングデーの担当をしていました。

f:id:WhiteFox-Lugh:20211205210853j:plain

入試で生協の人が配布している資料の中に以前はこんな学生がオリジナルで制作した冊子が入っているのですが、わたしは2017年度の冊子の座談会ページを担当したり、校閲・校正作業をしていました。作業のために深夜残って朝帰りすることもしばしば。

入試関連だと、ホテルに宿泊して、生協パックで予約した方の受付をしたり、ホテルのどこかホールを借りて、お菓子や飲み物をいただきながら受験生とお話しするコーナーを設けたり、朝のバスの送り出しの案内をしたりと、学生ではなかなかできないような体験をしました。

f:id:WhiteFox-Lugh:20211205211441j:plain

オープンキャンパスでも、実は大活躍で、来てくれた学生に配布していたこのトートバックの中身に入っている右側の青い冊子の表紙イラストや、冊子のデザイン、校閲・校正作業をしていました。また、工学部情報学科を志望している学生とトークしたり、キャンパスツアーのツアーガイドをしたり、という経験もしました。

f:id:WhiteFox-Lugh:20211205211651j:plain

f:id:WhiteFox-Lugh:20211205213014j:plain

ホームカミングデイと呼ばれる、京大のイベントに合わせて開催される「くすのき屋台村」では、情宣物のデザイン全般を担当していました。この年はテーマが「創」だったので、それにちなんだ道具がデザインされていながらも、秋らしさ、お祭りっぽさを取り入れたデザインに仕上げました。

ホームカミングデイ当日は、屋台のお手伝いもしており、大変楽しい日を過ごすことができたかなと思います。

何もかも、うまくいっているはずなのに

学部3年生のころです。生協サークルは1、2回生あたりが中心となって活動していたため、サークルでの活動がほぼなくなっていました。そのこともあり、徐々に学業中心、専門科目の勉強中心の生活にシフトしていきます。

サークル漬けの毎日を送っていながらも、講義はほとんど全部出席して、単位も一つも落とさず、順調に生活を送っていました。

そう、すべては割と順調、うまくいっている、はずだったんです。 何も、悲観することなんてなかったはずだったんです。

わたしは、何者?

情報学科のほかの学生に目を向け始めたころには、もうそれはそれは恐ろしい光景が広がっていました。

わたしの代は、競技プログラミングが非常に盛んで、AtCoderCodeforces などの競技プログラミングコンテストサイトで、アルゴリズム・データ構造・コーディング能力・数学力を試している人が多かったように感じます。そして、一部は、ICPCと呼ばれる大会に出場したり、AtCoder のコンテストで本戦に出場したりする人もしばしばいました。 そして、競技プログラミングの強さによってレーティングが付き、名前に色がつくのですが、その中でもかなり上位の色である AtCoder 橙色、黄色のレーティングを所有する人も多く、少なくとも青、水色という人が多く存在していました。

ほかの方面を見ると、アルバイトでプログラミングの勉強をしながらサービスの開発をする人、Kaggle に参加する人、ハッカソンに参加する人、といったようにみなそれぞれ情報学科の学生の特性を活かして進んでいろんなチャレンジをして、成果を上げていたわけです。

さて、自分はどうでしょうか。

......

......

わたしの手元にあったのはちょっと良い単位とだけです。

.......

「科目名: 成績:A」 とかそんなようなものです。

研究室配属なり、卒業なりしてしまえば、もはやただの文字記号でしかないもの。

......

......

この事実に気づいてしまったとき、これまで楽しかった日々も、頑張ってきたこともなんだか虚しく思えてきて元気がなくなってしまいました。

化けるには何を修行すれば...

もう学部3年生まで来てしまって、これから研究室配属のこと、卒論のこと、大学院進学か就職か、そんなことも考えないといけない、そんな中でわたしが少しでも何か形に残る成果を残せるようなことがあれば...

といっても、プログラミングのアルバイトなんて「未経験大歓迎!」なんてものはないし、Kaggle なんてできたもんじゃない、ハッカソンなんて飛び入りしたらたぶん大けがをして帰ってくるに違いないはずだ、といろいろ考えをめぐらせていました。

そこで、とりあえず競技プログラミングを始めてみました。競技プログラミングなら、初心者にもやさしい教材がそろっているし、問題ならたくさんあるし、正答・誤答チェックできるし、たくさん記事があるし自学自習できるので好都合でした。トップクラスになれる見込みは皆無だけど、せめてひとつ、わたしが「化ける」材料になれば...と始めたのでした。

いわゆる「精進」というレベルでやりこむことはできませんでしたが、週1回のコンテストと、週1~2日程度の問題演習を地道にこなしていきました。

f:id:WhiteFox-Lugh:20190324235638p:plain

水色レートまでとりあえず到達することはできました。当時だと大学では真ん中ぐらいの実力程度かな、ぐらい、一般的な基準でいえば十分な能力があるというレベルだったと思います。とりあえず、一つ化け方を覚えることができました。

当時はそれなりに喜んでいたと思います。

しかし、競技プログラミングを続ける途中で、これはわたしが本当にやりたかったことなんだろうか?この程度の成果って、他人の劣化版でしかないのではないか?という、疑問が芽生えてきます。この辺が、いかにも京大生っぽい、無駄にプライドが高い感じですね。

そのせいか、徐々にコンテストに参加することも減っていき、最終的には競技プログラミングをやらなくなってしまいました。

さて、そうとなると、わたしができることは...。

過去の自分は、無駄じゃなかった

ちょっといい単位が、手元にあったおかげで、研究室配属では第一希望の研究室が定員2人なのに対して10人が第一希望で応募していたのを無事通過することができました。教授も「なんで今年うちがこんなに第一希望が偏ったのか全く分からないんだけど?」と驚いていたほどで、成績順に学生を取ったところ一番最初に埋まったようです。なお、コースで研究室配属の権利があったのは45人程度だったと思うので相当偏ったことがわかります。

さて、卒論はどうしようか、という話を教授としていた時でした。弊研究室は卒論のネタが先輩から降ってくることなどなく、自分で好きなネタを持ってきてよい、という研究室だったので、興味のあるネタを話して研究ネタとして昇華させられそうなものを探していたのでした。

最初は「ツイッターの伏字、検索除け」「ツイッターの炎上度合い推定」といったネタで攻めていたのですが、なかなか実験、研究ネタとしてまとまらず、という感じでした。

そこで、思い切って、過去にやっていた競技プログラミングの話を出したところ、教授が「ネタとしておもしろそう」と結構興味を示してくださりそこからクラウドソーシング的な話、項目反応理論の話を勉強するに至ることができました。

こればかりは本当に意外過ぎる瞬間で、教授との一対一のミーティングでも思わず驚いてしまったほどです。

そんなわけで、卒論は思っていたよりもかなり順調に進んでしまい、国内の学会にも出すことができ、小さいながら賞もいただけて、成功することができました。

化けろ、こぎつねよ

学部を卒業して、就職はせず、大学院に進学しました。

ただ、この進学も、学部卒で就活してもたぶん自分が望むところにはいけないだろうというありがちなルートを選んでしまったと思います。ただ、研究自体は(ツイッターでは「研究辞退宣言とかツイートしてるくせに)苦しいこともあれどそれなりに続けられそうな感じはあったので、修士2年はしっかりやっていこうという気持ちがありました。

そんな気持ちはあったんですが、あまりにも想定外なことに、コロナウイルスが世界中で猛威を振るい始めてしまいました。そのこともあって、大学院進学しても休学したり、就職活動して修士1年で退学して就職したりする人がそこそこな人数いました。

その人たちは、やはり学部生のころくらいから何かしら開発アルバイトしたり、企業のインターン行ってたりして、地道に努力をしていた人たちなので、やはりこの時代でもスムーズに就職先が見つかるんだなあと、若干の劣等感に苛まれながら過ごしていました。修士課程を卒業して、修士卒の肩書を得ることに何の意味があるのだろう、とまで考えてしまいます。

進学してからは、オンライン形式の講義になった影響で、大量の課題に追われ続けます。加えてコロナのことなど微塵も考えていないままスケジュールをたてていたので、TA・OA、採点バイト、研究が次々と襲ってきて、週休0日生活が錬成されてしまいました。

もはや、学業の片手間に情報学系で自分のスキルを磨こう、という暇などほとんどない状態でした。

そんな状態でしたが、修士1年生の実習でアプリ開発に出会います。

この実習はワークショップ形式で、5人~6人で1チームを組んで、半期でアプリケーションを開発するというものでした。ちょうど何かしら開発をしてみたいと思っていた頃なので、いい機会だったと思います。

ですが、このワークショップは、情報系のインターンとかでつくようなメンター的な要素は、一応TAがサポートしてくれるかなぐらいであまり期待できず、チームメンバーも割と開発経験がない人が多く含まれるので、非常に大変です。

いままでほかの学生がコツコツ通っていたであろう道を、数週間程度でとりあえずざっと通り、なんとかウェブアプリという形に残してこの実習を終えることができました。ワークショップに参加した学生の相互評価、先生方の評価もまずまずで、初めてにしては上出来だったのではないかなと思います。

しかし、本番はここからで、怖いもの知らずの自分は、たまたま見つけたイベントに作品をブラッシュアップして応募してみないか?と提案してしまいました。

チームメンバーはあまり乗り気ではなく、自身もなさげでしたがなんとか3人を誘うことができて、イベントに応募することができました。 イベントに参加しようと提案したのが自分だったので、自分が中心となって開発をし、残りの二人には開発案や機能のフィードバック、そしてプレゼンを頼みました。

そして、その初めてのイベントでびっくりするほどうまくいってしまうのでした。 賞金というものを初めて自分たちの力で手にできたのもうれしかったのですが、何より、ツイッターで同じエンジニア志望の学生、技術力の高い学生と交流することができたことがこの思い切ったイベント参加で手にした何よりも大きな経験となりました。

その経験がかなり味方してくれたおかげで、就職活動もかなり個人的に満足できるところに就職ができました。

もちろん、開発経験や情報系のスキルでとってくれた、というのもありますが、ほかにもこれまでやってきたイベント企画、運営、情宣物のデザインなど、その辺の行動力もここで評価されていたようで、ここまで自分が行ってきたことが、ようやくほかの人に「面白い」と思ってもらえたという実感に変わった瞬間でした。

卒業まで

就活がおわってじゃあおしまい、というわけには当然いかないので、修士2年生、残された学生生活1年で何ができるか、自分なりに考えてみました。

やはり自分はものづくりが好きなことや人を楽しませることが好きなようで、そういったことと自分の開発スキルや過去の経験値を活かして面白いことができるのではないか、というのを一生懸命考えていました。

その結果、いくつか成果物がうまれました。

まずこれ。

drakscake.hatenadiary.com

実は、タイピストタイパー)として2019年から復帰していたのもあって、その領域知識と情報学の知識を融合して生み出した記事です。

これまでタイピストの界隈で、なかなか「相対的な強さを数値で評価して表そう!」ということがなかったので、結構評判があった記事であります。

次にこれ。

whitefox-lugh.github.io

11月末にベータ版としてタイピング練習サイトをリリースしました。 まだバグや動作の重いところなどがあるので、全然完成品じゃないですが、将来的にはいろいろ直してより良いものにしていく予定です。

数時間で書いたとは思えないくらい長くなったうえ、まとまりのない文章になってしまいました。

京大生になってしまうと、どうしても「周りがすごい」「自分は雑魚」という感覚に陥ってしまいがちな気がしますが、そこからどうやって抜け出して行けたかという一つの体験記みたいなものだと思ってくださると幸いです。

明日、12/07 は ACA さんの「ありきたりなはなし(京大×精神障害)」です。お楽しみに!

作り手じゃないからこそ読んでほしい、タイピングゲーム開発の苦労話

この記事は「タイパー Advent Calendar 2021」の3日目の記事になります。

adventar.org


こんにちは。

今回の記事では、最近気合を入れて作っている自作タイピングゲームの開発の話をしてみます。

※できる限り数学要素などは省略して書いたつもりですが、わからないところがあったら「ふーん、そうなんだ~」くらいで読み飛ばしてください!ただの体験記みたいなものなので、すべてを理解する必要はありません!

つくったもの

ベータ版ですが、FoxTyping として公開してあります。

whitefox-lugh.github.io

f:id:WhiteFox-Lugh:20211201160433p:plain

従来のタイピング練習ソフトやゲームサイトを踏襲しながらも、次のワード表示機能など、細かいところに気を配って、できるだけストレスなく快適に打てるように設計するのが目標となっています。

さらに、いままでほとんど実装されてこなかった、長文&変換込みの練習を搭載するのが目標です。

実用入力勢(いわゆる、実際の文章入力に近い方式でタイピング競技を行う勢)を増やす目的があるほか、近年、高校の教育課程の変更で「国語」が「実用国語」寄りになることも示唆され、文学作品に触れる機会が減少することが予想されるため、文学作品に触れる機会をこちらから提供できればうれしいな、という教育方面に対する隠れた目的もあります。

作成が難しかった部分

エンジニアでない方からすると、どの辺で開発に苦労しているかなんて皆目見当もつかないと思いますが、こんな簡単そうに見えるところが実は難しい、というのをいくつか紹介してみます。

ローマ字のすでに打った文字を消す部分

f:id:WhiteFox-Lugh:20211201162354p:plain

上の画像の赤枠部分です。文字が打つと消えていく、とかどこまで打ったかわかるようになるアレです。 どの練習サイトでもしれっと実装されていますが、日本語、ローマ字入力になると実はちゃんと考えて実装しないとバグを量産します。

入力されたキーが正しければ消える、という基本方針で構わないのですが、ローマ字に限っては複数の入力方式があるため、そこに対応するのが少々難しいです。例えば次のような場合です。

f:id:WhiteFox-Lugh:20211201162708p:plain

いま、「しゅ」の部分は「syu」で表示されていますが、ここで shu と打った場合の表示や、silyuやsixyu、shilyu などたくさんある打ち方にちゃんと対応できるでしょうか?

f:id:WhiteFox-Lugh:20211201163501p:plain

正誤タイプの実装ロジックを正しく持てば実はそこまで実装は重たくありませんが、一から考えてみると結構難しい部分かと思います(興味がある方は考えてみてください)。

ワードセットの構築

タイピングを練習するには例文が必要になりますが、開発者はこれも作らないといけません。

日本語と英語のモードがあるとそれだけで2つ分用意することになります。

さらに、語彙の難易度もある程度絞らないといけません。あまりにも専門的過ぎるワードや、打つのが難しいワードは基本的にそういう趣旨のワードセットでない限り構築しないのが望ましいです。

開発者目線で行くと、どの文字は許容するかという問題も非常に重要です。 Unity (ゲームエンジンの一つ)だと実は記号関連の判定がUS配列基準になっているので、JIS配列ユーザーに配慮して作ろうと思うと、例文で使えない記号がいくつか存在します。

また、日本語でも、日本語ローマ字入力と、JISかな入力で同じワードセットを使いまわす場合、「ゐ」「ゑ」といった文字はJISかなでは扱うことができません。この辺もワード構築の際に配慮しないといけません(ローマ字日本語でも「ゐ」や「ゑ」を入力させるワードはめったに出てこないのですが)。

長文練習の諸々

今まで、長文練習&変換込みで練習できるサイトというのはほとんどなかったと思われます。 FoxTyping では毎パソのように長文を変換込みで打ち込み、最後に採点する、というモードを搭載しています。 これも日本語圏のタイピング練習サイトの中では結構新しい試みをしていると思います(昔、毎パソトレーナーというものはありましたが...)

実際作ってみると結構問題点が出てきました。

長文練習での採点

まず採点方法です。基本方針としては、入力された文章と課題文の差分をとればよいとわかります。 アルゴリズムを勉強している方であれば、「編集距離」の計算が真っ先に浮かぶことと思います。

susisu.hatenablog.com

要するに、入力された文章に間違いがあったら、「削除」「置き換え」「余分な文字の除去」をそれぞれ1回分の操作として、課題文と同じものにするには何回操作すればいいか?ということを考えます。

例えば、「こんにちは」を「こんんにちわ」と打った場合は、

  • 3文字目の「ん」を「削除」
  • 6文字目の「わ」を「は」に「置き換え」

の2回となるので、毎パソではこの操作回数だけ打った文字数から引いています。

ところで、もっと長い文章になった場合、どうやって効率よく計算するのでしょう?

それが上記のサイトで紹介されている「編集グラフ」です。

詳しいことは数学的な要素を含むので今回は書きませんが、要するに、二つの文章の差分を入れてうまいこと計算してあげると「ここは削除」「ここは置き換え」「ここは余分な文字だから除去」という情報と、最短何回の操作で二つの文章のうち片方をいじればうまくいくかを計算してくれるとっても便利なものです。

ところが、これを計算してあげるだけだと実はダメなのです。 採点の仕方はたくさんありますが、この中で一番良い得点を1つ返すにはどうすればよいのでしょうか。

例えば、"To be or not to be." という課題文があったとして、入力された文章が "To be ot" だった時、どう採点するのが正しいのでしょうか?赤文字を間違いとして、

  • To be or not
  • To be or not t
  • To be or not

などが考えられます。 この辺は、実は考えて丁寧に処理しようとすると非常にめんどくさいです。

(毎パソの体験版の注意書きに、厳密な採点ではないとありますが、もしかするとこの辺の処理のことを指しているのかもしれないと思いました。課題文によってはソフトウェアだけだと一番高い得点を出してくれるように計算してくれない、というのを自分の手元で一度確かめた記憶があります。)

長文のふりがな

f:id:WhiteFox-Lugh:20211201190713p:plain

FoxTyping でしれっと実装されている課題文のふりがな機能ですが、これ実はめっっっっっっっっっちゃめんどくさいです。ただ振るだけならそこまでではないですが、レイアウトが崩れないように細かい調整をするのが大変です。

FoxTyping の長文練習の日本語では、等幅フォントを用いて、1行あたり25文字となるように計算していますが、ふりがなを振ってない状態から愚直にふりがなを付け足すと横幅が足りない、熟語をひとまとまりでルビを振ってしまったなどの問題で、上記の画像のようにいとも簡単に表示が崩れてしまいます。この辺の実装は、POWER で解決してあります。

課題文章の改行箇所指示や日本語の禁則処理

禁則処理をご存じでしょうか。簡単に言うと「文の先頭に句読点が来ないようにする」といった日本語の文章における表記のルールをまとめたものです。小学生の時に作文用紙を用いて作文するときに、「一番上のマスに『、』『。』を置かず、最後のマスの右下に入れてください」とかそういうことを教えられた方も多いのではないでしょうか。

f:id:WhiteFox-Lugh:20211201192103p:plain

Unity の文字入力フォーム(InputField)で日本語入力をすると、右側の文章の2行目末尾のように、うまいこと「、」が先頭に来ないように勝手に禁則処理が施されるようになっているのです。 禁則処理されないようになっていれば少しは楽だったのですが、課題文側は単純に課題文を表示するだけでなく、ふりがな機能も存在するため、課題文側をうまく調節しないと、ふりがなの有無で課題文の表示が崩れてしまうので、対応せざるをえません。

また、上記画像の左側文章の5行目のように、改行場所を示す矢印の記号も、うまく挿入する必要があるのですが、この矢印も1文字としてカウントされてしまうので、丁寧に処理をしないといけません。

禁則処理と改行位置指定と、ふりがなと1行あたりの文字数を同じにする、というのを全部実現するのが細かいこだわりであり、必須対応なんですけど、めちゃくちゃ苦労しました。

長文入力の大変なところまとめ

まとめると

  • 採点ロジックが細かく詰めると大変
  • ふりがなデータ入れるのめっちゃ大変
  • 禁則処理が勝手に Unity 側で行われるし、改行場所をしっかり表示しないといけないし、全部丁寧に場合分けする必要があって大変しんどい

という感じでしょうか。本当はもっと大変なところがたくさんあるのですが多すぎて忘れてしまいました。

この辺の細かいことを泥臭く試行錯誤して作り上げています。

いったんはうまく動いたかな、と思ったのですが、重たくてフリーズして動かないといった報告があるので、まだまだ改善が必要です。

入力方式

Unity にもキーボード入力を判定する機構はいくつかありますが、いろいろ問題点があります。

JIS かな入力を実装しようと思うと Unity で使える入力機構では以下の点が問題となります。

  • KeyCode: キーを押した / 離したなど、そのタイミングごとに判定してくれるが、JISかなの「ろ」や「ー」が判定できないし、US配列基準
  • InputSystem: 「ろ」や「ー」を識別することはできるが、フレームレート依存なので、高速で打つと打ったのに判定してくれないという抜け落ちが発生する可能性がある

さらに、WebGL でブラウザでプレーできるようにするとなると、ブラウザごとにキーの割り当てが異なるという問題が発生しました。

FoxTyping での対策は Unity をあきらめて、JavaScript の力に頼ることによって解決しています。 JavaScript に頼れば、簡単に実装できます。

この Unity に頼るのをあきらめる、というところに至るまでの回り道が長かったです。

実はまだUS配列には対応できていないので、その辺もどうにかしないといけないですが、これは追って実装しようと思います。

作ってみて

作り手に立ってみると、

  • しれっと実装されているところが実はめんどくさい
  • 技術的障壁や対費用効果などの問題点が見えてきた
  • そもそも一人で作るにはやることが多すぎるし、技術力がないと太刀打ちできない

というのを体験できて勉強になりました。

特に3つめの一人で作るにはやることが多すぎる点については、自分自身がイラストを描いたり、過去に企画のリーダーなど、さまざまな大変なことをこなしてきたつもりですが、こればかりは本当にやることが多すぎて、どうしても対応に時間がかかってしまうのがつらいです。

自分が開発に注力する理由

実は、2020年のタイパーアドベントカレンダーの24日目では

  • 読み書き能力として今後もタイピングスキルは活用できるはずなのに、肝心の練習方法がまとめられていない(本などはあるが、一般の人に知れ渡っていない)
  • タイピングの面白さを一番知っているであろう、タイパー層が面白さを伝えようとしていない

という感じの批評をちらっと書いていました。

この記事を書いた当時は、この批評に対して具体的に自分がどう行動していくかについてはあまり解像度が高くありませんでした。

コロナ禍による仕事、学校のリモート化の影響でタイピングスキルが見直されつつあるような風潮を感じ取ってからは、 自分自身が特にできることとしては、やはり情報系の学生という立ち位置を活かして、開発関連のノウハウを整備していくこと、 タイパーとしての経験を活かしたタイピングゲームの開発してみんなに遊んでもらうことが一番なのではないかなと考えました。

また、ここ数年タイパー界隈と関わってきて、古参タイパーたちが数十年前の練習ソフトやゲームに練習を依存しているという点もこれを確信に変えています。

タイピングゲームや練習サイトは検索すれば実は思ったよりたくさんでてくるのですが、古参タイパーの様子をみていると、もうアップデートの入っていないソフト、練習サイトに執着しているような傾向がみられます。

これはタイパーがいろんな練習サイトを触っていないのが悪い、というのではなく、むしろクオリティの高い作品、タイパーが没頭できるような作品が少ないからなのではないかと私は思います。

あとは、自分自身、UI(ユーザーインタフェース)に関心をもって勉強をしており、既存のタイピング練習ソフトのよくないデザインや機能について普段から文句をぶちまけているのもあるので、それを全部自分の手で解決してしまいたいというのもあります。いいデザインをこちら側から提示すれば、きっと後続のタイピング練習サイト、ゲームもそれに続いてくれるのではないかという期待もあります。

以上のことから、ぼくは最近タイピングそのものの練習以上に、より快適に楽しく遊べる環境づくりや、技術者に対しての土台の整備を地道に行っていくほうにモチベーションを注いでいます。

ちなみにですが、近年だと TypingTube (https://typing-tube.net/)さんあたりがすごく開発に力を入れていらっしゃるのを見て、開発のやる気をいただいている次第です。

本当は企業がこういう開発をやってほしいのですが

最近の情報系の学生の熱心な方なら、技術力とやる気があれば時間をかければ作れないことはないと思いますが、「できないことはない」と「時間をかければ実際にできる」は全然別問題ですし、実際めちゃくちゃ大変だと思います。

正直なところ、本当はこういう開発をやるのは企業レベルに任せたほうが良い案件で、個人製作はよほどのモチベーションがある人でない限り製作は無理だろうと思っています(2021年はなぜか個人レベルで製作されたタイピングゲームが豊作ですが...)。

しかし、企業に任せるとなると今度は収益化の問題が出てきます。

typing.tanonews.com

2019年のタイパーアドベントカレンダーでタイピング速度測定の開発者である Healer.O さんが述べていたように、昨今、スマホゲームが無料で遊べる時代になっている以上、タイピングゲームで収益をあげる、ということは難しく、ビジネスとしてやっていくには厳しいのが現状でしょう。ソシャゲのようにガチャでキャラが手に入る!というような課金システムが確立していればタイピングゲームもたくさん企業から出されるでしょうが、タイピングゲームに課金する要素を作るとなると、より高度な機能を利用できるようになるとか、より充実したワードセットで遊べるとか、いくつか自分でも思いつくことはありますが、本当にビジネスとして成立するまで収益があげられる見込みは厳しそうに感じます。

タイピングクエストという Nintendo Switch で遊べるタイピングゲームも発売されましたが、どれほど収益があったのかについてや、現在も続けて遊んでくれているアクティブプレイヤーがどれほどいるのかはわかりません。

なぜここで苦労話を書いたか

あまり最近はクリエイティブな活動をしていませんが、ツイッターでイラストを描かれる方が「アイコンくらい無償で描けよ」「絵なんてすぐ描けるでしょ」などと言われて悲しい思いをされているのを見かけて、自分もクリエイターとしては他人事ではないなと感じています。

タイピングゲーム開発だって、どの練習サイト、ゲームであれ開発にどんなに少なく見積もっても数週間~数か月、ものによっては年単位でかかってるものなのに、全然その辺の苦労が隠蔽されているような気がします。リリース後になると途端に開発者はいいコメントも悪いコメントも受けることになりますが、この時にいいコメントばかりをもらえる開発者も少ないわけです。大半はユーザーからのバグ報告になってしまいます。

もちろん、開発者側が十分なクオリティのものを提供していないのが悪いこともありますが、開発者側は悪いクオリティのものを出そうと思っていませんし、最初からバグを完全になくして開発を進めることはほぼ不可能です。バグ報告は真摯に受け止めて改善していけばよいですが、あまりにもユーザー側から批判コメントばかりが殺到するようだと、開発者も人なので、開発モチベーションが落ちてしまうことでしょう。

なので、この辺の苦労話を少し赤裸々に打ち明ける機会が一か所くらいあってもよいのではないかなと思い、今回記事にしてみました。 人によってはいわゆる「忙しいアピール」みたいにとらえる方がいらっしゃるかもしませんが、それはしょうがないかなと思っています。

また、これからタイピングゲームを作ろうと思っている方は、基礎的なゲームの土台は(知識やスキルがあれば)短期間でそれなりにできますが、新しさを突き詰めようとするとものによっては莫大なコストがかかることをしっかり覚悟したうえで臨みましょう。

おわりに

機能開発って一本道でできるわけじゃないんだな...とか、開発者ってやること多いんだなっていうことを感じていただければいいなと思います。

タイパーアドベントカレンダーは今年で3年目の参加となります。年々執筆内容に気合が入ってしまってなかなかライトに読めるものじゃないのですが、あたたかく見守っていただければ幸いです。

ベータ版をリリースしてから、たくさんのバグ報告が上がっており、日々それを修正しています。 なかなか大変ですが、テストプレーしてくださった方への感謝の気持ちや、ツイッター上でいただけた「新しいタイピング練習サイトをつくってくれてありがとう」の言葉で、製作者はモチベを保てています。むしろ、誰もプレーしてくれず、何もフィードバックが得られないのではないかという不安のほうが大きかったので、ここまで熱心にバグ報告や機能改善の要望を列挙してくださったのは大変幸せ者だなと感じております。この記事を通して感謝申し上げます。本当にありがとうございます。

12/4 はTEA_R@xan さんの 標準運指から始めなかった初心者タイパー<1年目> です。


前日の記事:

drakscake.hatenadiary.com