新入生へ:TNPにはどんな人がいるのか

やっぱり気になると思う点

はいほー!どうもでったーです。

先輩(ガナリヤさん)がブログをじゃんじゃん書いてくれと大義名分っぽいことを宣言してくれたので元来書き物と自分語り(違う)を得意とする僕が今回も新入生ガイドライン的な感じで
「TNPにはどんな先輩がいるんだろう・・」という疑問に勝手に答えていきたいと思います

断言します。ここはオタクの止まり木です

「いやそんなこと言うなよ」って声を上げる部員もいるかもしれませんがこのサークルで交わされるプログラミング以外の会話の大半はオタクジャンルの話ですしネットスラングも多数飛び交います。(オタク以外来るなって意味では決してありません)

このサークルは創作活動だけでなくオタクという志を持った人たちと繋がる、という意味でも機能してるのかなぁという風に(少なくとも僕は)考えています。それを僕はタイトルにある「止まり木」という表現をするわけです。

どんなジャンルのオタクがいるか

TNP、正直多種多様なオタクがいます。一般的なオタクジャンルは大体履修してる人がいるはずです。(一般的の尺度が微妙なので確証は持てませんが)

今のところVtuber系に強い人が多少多めかなーって程度です。(ちなみに僕の履修ジャンルはアイマスなんでプログラミングやりたいプロデューサーがいたら是非来てほしいなぁと思っています。)

好きなゲームジャンルも色々です。上の年代は格ゲー中心ですが僕らの年代なんかはもうバラバラです。今流行りのゲームなんかの話題ならまあ結構通じると思います。

活動時間中はどんな感じか

ここからは少し話の本筋からは外れますが活動時間中のサークルの雰囲気的なものを紹介します。(尺稼ぎともいいます)

活動時間中は基本的にみんな一つの部室の中で個々で創作活動をしているのでスタイルもかなりバラバラです。音楽を聴きながら、独り言を呟きながら、同じような言語で開発している人とアイディアなどを共有、アドバイスしあったり・・・かなり自由な空気なんで楽しく開発、創作をできるんじゃないかなーと思います。

活動の中で「月末報告会」というのがあるのでメンバーの活動を見て刺激を受けることができます。これは予想以上に制作のモチベーションに繋がります。アイディアも湧いてくるので面白いです。(まあこれは見てもらった方が早いんで説明しづらいのですが)

まとめ

サークル棟はこんな感じ、大学敷地の端にあるので配布するチラシを頼りに来てほしいです

とりあえずプログラミングやコンテンツ制作に興味があるなら一度部室に足を運んでほしいなぁって切実に思ってます。経験未経験は全く問いませんしプログラミング以外でもゲーム音楽やイラスト製作をしたいと思っている人も大歓迎です(ぶっちゃけグラフィック系の人材が足りな過ぎてやばいです)

気になっている人はTwitter公式アカウント(@tnp_ko)などに気軽に色々質問してみてください。このブログの過去記事なんかも参考になるかもです。

それでは皆さん、入学後の部活・サークル紹介で会いましょう!お待ちしています!
サークル紹介での僕の目印は「EScape」(分かる人は分かるネタ)、でったーでした!

TNP競プロ支部の活動結果と今後(春のポエム枠)

あいさつ

114514810
ガナリヤです〜

自己紹介しなくても書いてるの大体ガナリヤなので、要らない気がしてきた・・・

今日はとことんやる気が出ないので、AGCまで時間つぶしに今後のTNP競プロ支部の展望とか書こうかなと思ってます

あと一週間で春休みが終わり、このぐうたらな毎日が終わって、毎日研究と考えると・・・
たぴゃ〜〜〜〜〜〜〜〜〜(一部界隈にしか伝わらないやつ)


競プロ支部って?

競プロ支部って何ぞってなるお気持ちになるので説明します。

我々TNPでは主にゲーム制作やイラストを書いたり、音楽制作などを行うのが主な活動ですが、最近は色々なツール・言語の増加によって、これまでよりも幅が広がった活動内容になってきました。

最近勢力を増しているSiv3D支部や、3Dやクオリティの高い2Dを作るUnity支部。
そして、新しいツールが増える今なお、古のDXライブラリで命を削っている支部もあります。(彼らは特殊な訓練を受けており、精神的ストレスと引き換えに圧倒的デバッグ能力とコーディング能力を身に着けています)

そして、去年の2~4月頃に幾人かで構成された競プロ支部が発足しました。(といっても、ガナリヤが勝手にそう読んでるだけですが・・・

現在は三年生が約3人? と一年生が1人で構成されています?(疑問系なのは、特に競プロ支部集まれ!ってやっていないのとで・・・)


そもそも競プロってなんだよ(哲学)

競プロってなんなんだろう・・・

自分でもたまに迷いますねこれ・・・

競プロは「競技プログラミング」の略で、与えられた問題を制限時間以内に解いてコーディングし、それを提出するやつです。

上のスライドとかが競技プログラミングを物語っている資料でこれを書いた人はすごい人で、競プロ界隈だと知らない人はいません。

例えば、以下の問題を考えてみましょう。


https://yukicoder.me/problems/no/800

問題文(四平方定理)

整数$N$, $D$が与えられる。
以下の2つの条件を満たす正の整数の組$(x, y, z, w)$の個数を求めてください。

1. $x, y, z, w$はそれぞれ$1$以上$N$以下の整数
2. $x^2 + y^2 + z^2 = w^2 + D$


上記の問題の$N$, $D$は問題から与えられます。
例えば、$N=3$, $D=2$のときは

$(x,\ y,\ z,\ w) = (1, 1, 1, 1), (1, 1, 2, 2), (1, 1, 3, 3), (1, 2, 1, 2), (1, 3, 1, 3), (2, 1, 1, 2), (3, 1, 1, 3)$
が条件を満たします。

勘の良い方、またはプログラミングをした人なら
全探索すればいい

と思うと思います。
これは間違っていないです。

但し、この問題は
$N{\leq}2*10^3$
$D{\leq}10^6$
という制限が与えられています。

全探索をすると、これの計算量は$(2*10^3)^4 = 8*10^{12}$です。
実は$10^8$回計算すると$1$秒の実行時間で、上記の全探索をすると、
これは44時間もかかってしまいます。

全探索すると$44$時間かかってしまう計算をするわけにはいきません。
この問題を$2$秒以内に解かないとAC(Accepted)がもらえないからです。

以下、解法です。

$x, y$を全探索することを考えてみます。
するとこれは$2000^2 = 4000000$であり、実行時間は$0.004$秒ぐらいなので間に合います。

$2$つめの式を変形すると
$w^2 = x^2 + y^2 + z^2 – D$で
先程$x, y$を全探索したため、定数とみなせます。
よって、$x^2 + y^2 – D = T$という定数に置くと
$w^2 – z^2 = T$
と表せます。

このようにすると、$w, z$を全探索して、$T$という計算結果になるような個数を保存すれば良さそうとなります。

あとは、この$w, z$の計算を先に前計算しておき、その後、$x, y$を計算しておけば、これは計算量は$O(N^2)$に抑えることができ、ACを貰うことができます。

using LL = long long;
 
 //~~~~~~~~~~~~~~~~~~~~~_(^~^ 」 ∠)_~~~~~~~~~~~~~~~~~~~~~
 
 
 int main() {
 
     int N, D;
     cin >> N >> D;
 
     int base = 100000000 / 2;
     vector<int> cnt(100000000, 0);
 
     for (int w = 1; w <= N; w++) {
         for (int z = 1; z <= N; z++) {
             cnt[base + w * w - z * z]++;
         }
     }
 
     int ans = 0;
 
     for (int x = 1; x <= N; x++) {
         for (int y = 1; y <= N; y++) {
             int d = x * x + y * y - D;
             ans += cnt[base + d];
         }
     }
 
     cout << ans;
 
     return 0;
 }

競技プログラミングは以上のように、まず3つのパートに分かれます。

まず、問題を読むパートです。Writerがどのようなことをさせたいのかを出来るだけ早く読み取ります。

そして、次に考察パートです。ここが苦しいところです。
僕はアタマが悪いので、ここでだいたい解けないです。

そして、もし考察が出て解法が生えたら、それを実装する必要があります。

この、「考察が出来る」と「実装が出来る」が別なのが難しいところで、
「考察が出来た!」ってなっても実装がゴミクソめんどくさいときがあります。
また、「実装は得意!」でも考察が全く出来ないときがあります。

数学オリンピックなどでは、この考察が出来るパートが要求され、さらに競技プログラミングではここに「プログラミング」の要素が追加されるわけです。

先程の問題と、解法を読んでピンと来る人は少ないだろうなと思います。
自分もまだまだ弱いですが、始めたてはプランクトン並でした(さっきの問題の解法なんてINF時間座っても生えません。)

でも練習次第で、ある程度は解けるようになります。


競プロのメリット・デメリットって何?

最近情報業界でかなり人気になってきている競技プログラミングですが何が楽しく、何がメリットなのでしょう・・・

自分もたまに、やっぱつれぇわ・・・ってなりながら競技プログラミングをしています。
それでも一年は続けていられているので、自分の性分にあっているのかな〜〜と思っています。

メリット

競プロを通して得られることは多いです。

まずは、「実装能力」が挙げられると思います。
競プロでは、あらゆるデータ構造とアルゴリズムを使用します。
競プロ以外のアプリ開発やゲーム開発は、競プロの実装と比べると明らかに楽なので、これまでより、楽にコーディング出来たりします。
また、実装できなさそう・・・と感じることがかなり減ると思います。

次に、考察力があがると思います。
競プロではあらゆる問題に対し、
1. 仮説を立てる
2. コードを書く
3. デバッグをする

という課題解決のステップを非常に細かく踏みます。
色々な知識がつくのも競技プログラミング特有のものだと思います。

そして、レートが出て、客観的に自分の実力がわかるがあると思います。

以上は自分のAtCoderでのレート推移です。
グラフの伸びを見る限り、天才型ではないのはひと目で分かります。(くやしい

でも、だからこそ、練習をして色んなアルゴリズムを覚えて、レートがあがり、初めて400点の問題をコンテスト中に解けたときは、人生でかなり楽しかった瞬間に入ります。

やはり楽しい!!!!!!!
っていうのが根幹にある感じです。
(ただ、楽しい!っていうのはコンテストに出てレートがつかないとわからない部分ですね・・・)
承認欲求が満たされる音がします。


デメリット

デメリットも色々とあります。

まず、「アプリ開発やフレームワークの知識はつかない」
という点です。
競プロで学べるのはアルゴリズムや実装・考察力なので、なにかアプリ開発が出来たり、フレームワークが使えるかは別になります。

ただ、アプリ開発出来て競プロ出来ない人は見かけますが、競プロ出来てアプリ開発出来ない人はほとんどいないです。
ただ、競プロもアプリ開発もやらないとアプリ開発の知識はつかないです・・・

2つ目に、競プロで生活をかなり支配されます。
AtCoderは土曜日の夜九時から二時間ぐらいなので良いですが

Codeforcesというサイトはロシアで運営されているコンテストであり、深夜12:35から二時間ぐらいあります。
普通に生活リズムが乱れます。

また、たぴ〜〜〜や、AC、tourist語録など、競プロ用語に支配される日が来ます。
知らないうちに「おきもち」という単語を永遠に使い続けることになります。


競プロに向く人・向かない人

競プロですが、誰しもに向いているものではないです。

競プロが好きな人はいかのようなことが好きな傾向にあります。

  • 人と争うのが好き
  • 承認欲求が強い
  • 数学・アルゴリズムが好き
  • 順位が好き(レートが好き)
  • 考えることが好き(パズルが好き)
  • 快感を欲している
  • 自分が好き
  • アプリ開発などの長期的スパンが続かない
  • ツイッターが好き
  • 音ゲーがすき(音ゲーマーみんな競プロ強いんですがなぜ・・・)

特に、アプリ開発などの長期的スパン開発が続かない人には向いてますね・・・
1問1問が短いので、さらっと解くを何回も繰り返しているうちに強くなります。

競プロが好きでない人は個人的に以下のようなものがある気がします

  • 順位をあまり気にしない
  • 承認欲求が少ない
  • 上昇志向がない
  • 数学・アルゴリズムよりも、開発でプロダクトを作るのが好き
  • 短い努力を繰り返すより、長い努力をしたい
  • アプリ開発が好き

結構、好きな人と好きでない人は正反対の位置にある気がしています。

やりたいことがない人は競プロを始めてみるといいかもしれません。


去年一年の活動について

去年一年、競プロ支部では基本的に個人活動でした。
競プロは基本的には個人競技なので致し方ないところではあります。

ただ、去年7月に行われたICPCというチーム大学対抗競プロ大会で

TNPの三年次かつ、同じバイト先の自分含む計三名でICPCインターネット予選に参加し、色々な奇跡が重なってアジア大会に出られることになり、去年の12月に参加しました。

これまでの人生で一番満たされた3日間だったと思います。
もっと競プロに打ち込んで実力をつけたいと思いました。


4月からの一年の展望

競プロ支部はどのようになっていくのでしょうか・・・
正直ようわからんです・・・

現在、現一年生(新二年生)の一人が昨年から競プロを始めており、競プロが広まって嬉しいなぁというお気持ちになっています。
レートもみるみる上がっているので、将来抜かれそうで怖いなぁとなっています。(特に数学が好きなのが非常に怖いポイント)

これからどんどん、新一年生にも広まって、ゲーム開発もできて、競技プログラミングもできる学生が増えればいいなと思っています。

とりあえず今年の7月のICPCに向けて日々精進して行きたいです。

まずはそこからはじめて、普通の国立の中では、秋田大学が競技プログラミングである程度強い大学と言えるように頑張っていこうと思います。

あと、にじさんじの卯月コウってやつエモいから見てくれよな(後方


追伸

どんどんブログを、新入生歓迎に向けて活性化させていきたいお気持ち

みんな書いて♡俺も書いたんだからさ・・・(いやです・・・)

新入生へ: 生協パソコンを買う前に少し考えてもいいんじゃないだろうかという話(個人差があります)

ここから下の内容は一個人の意見・推論です

来たる新入生へ

合格おめでとうございます。

これから始まる新生活に、新入生の方々は胸踊らせ、日々楽しみ、もしくは多少の不安を感じていることでしょう。

そう、4月は始まりの季節。

楽しいことや不安なことが一気に押し寄せ、この時期はかなり精神的にブレが生じる時期でもあります。

そして、この時期はパソコンを買い換える時期で、大学に入学準備に行くとパソコンを勧められます。

彼らは学生の味方です。しかし、営利団体でもあります。
儲けを出さないといけません。
そこは理解しないといけません。


パソコンの話

合格が決まると、彼らは大学にきて、彼らの一員になることを強いてきます。
これは仕方ありません。彼らの意見を飲みましょう。
ここは気持ちを抑えてスパイになるのです。

ただし、生協パソコンは買う前には色々と考え直してみましょう。
多くのTNP部員が被害にあっています。


彼らはかなり低スペックのPCを高い値段で売ってきます。
おそらく彼らの言い分は

「保険がつく」だの
「パワポがつく」だの
「頑丈」だの

電気店でも言われることを言ってきます。
鵜呑みにしてはいけません。自分で考えて行動しましょう。

同じ値段でどれ位のパソコンが買えるでしょうか?

例えば、「MacBook Pro」が買えます。

ほぼ同じ値段で、保険がつき、Macというかっこいいものが買えます。
Macはプログラミングのおける環境構築がWindowsに比べて遥かにしやすくUIも統一されています。
・・・Linux?そういうのもあるのか

僕はMac派なのでMacを押します。
現在、キャンペーン中なので、割引+二万円キャッシュバックがついてきます。

さらにMacのいいところは、売るときの値段が大体買った値段の半分です。
これが強い

持ち運びじゃない、デスクトップならiMacが買えますね。
そこそこのスペックが買えます。
四年間のプログラミングには有り余る性能があります。

Windowsがいい??
ならば、Surfaceなどの選択肢があります。
薄くて使いやすく性能もいい。
生協パソコンが駄目とはいいませんがなにかと入らないものがついていたり、彼らの懐にはいるお金がおそらく多い。

BTOもありです。

私がいいたいのは、生協パソコンに甘んじてはいけないということです。


最後になりますが、まだ間に合うのなら、他のMac製品や、Windowsパソコン、BTOなどを見てみるといいです。

大学では優しい人もいますが、汚い大人がうじゃうじゃいます。
自分で考えて行動すると良さそうです。

ガナリヤでした


追伸

自分で選んだパソコンでのプログラミングは非常に楽しいです!!!
四年間付き合うと思って大事に選んであげてください!!!
Macはいいぞ!(後方彼氏面)

バージョンが上がってLaTeX出来るようにした話

こんにちえるえる〜〜

なんか久しぶりですね。

ガナリヤです。新しいバージョンにしたせいか、色々と不具合が起きて辛いです・・・なんとかします・・・


WordPressのバージョンが上がった話、使い方とLaTeXの話をします


WordPressのバージョンが上がった話

WordPressというシステムを現在、TNPでは使っています。

WordPressはPHPで構成されているフレームワークであり、拡張しやすく、これまでブログよりも使いやすい点があります。
また、WordPressに移行した理由として

  • 全員が使える。
  • HTMLを知らなくても書ける(ビジュアルで書ける)

という点があります。

現在、そのバージョンが上がり、新しいエディタGutenbergというものが導入されました。

このエディタでは、ブロック構造が採用され、各段落を一つのブロックとして構成します。

上記の段落は、以下の図のようなブロックとしてなっており、ブロックは自由に移動できます。

今回のエディタによって、よりノンプログラミングにブログをかけるようになりました。

ただ、これまでのブログのエディタに慣れていた人には辛いですが(現在辛いです・・・)

使ってみると分かると色々と分かると思います〜


マークダウンを使うときは

プログラマーには、マークダウンというものに慣れている人がいます。
僕もその一人です。
マークダウンを使うとより高速にブログを書くことが出来ます。(ビジュアル操作を気にしなくていいと言うと伝わりやすいでしょうか・・・)

現在のエディタでマークダウンを書くには以下のようにしてください。

自分のパソコンの「Boostnote」などでマークダウンを書き、ブロックにコピペしてください。

すると、自動でマークダウンから、普段どおりの大きさやリスト、水平線に変換されます。

よって、現在は、このWordPressエディタ上でマークダウンはかけません。(一部はかけます。)
これからWordPress上で書けるようにする方法はないか模索します。


改行の仕方

ブロックごとに書きますが普通に改行すると(エンターを押すと)

このように一行多く空きます。

なので、ブロックないで改行しようかな〜〜ていうときは「Shift + Enter」をしてください。
すると、一行多く空けない通常の改行ができます。


コード挿入の仕方

ソースコードを挿入したい時があると思います。
そのようなときは以下のようにしてください。

「フォーマット」に入っている「Highilghing Code Block」というものを選び、ソースコードを挿入してください。

すると、ソースコードを挿入できます。


LaTeXの使い方

プログラミングの記事を書くときは
変数を$x$としたり、
$$ y = 10x + 2$$

のように数式を使いたくなると思います。

これはLaTeXというもので実現できます。(TeXがもとであり、それを拡張したものがLaTeXだと思っていいかと思います。)

LaTeXを書くには半角の「ドルマーク $」でLaTeXしたいものを囲ってください。

つまり、 $x$と言った感じです。(これは、ドルマークを全角で表現しています。ここで半角にしてしまうと、LaTeXになって、どのようになるかが表現できないので・・・)

よって、LaTeXしたいときは、半角のドルマークで数式などを囲ってください。

また、中央に
$$ y = x$$

のように表示したいときは半角のドルマークを
$$ y = x $$

のようにすると、中央寄せができます。


最後に

多分伝わらないと思います・・・(すいません)

今度部室で使い方をきちんと説明したいと思います。
また、実際に触ってみると使い方がわかると思います。

自分もまだこれに慣れてないので、大分読みづらいかと思います。すいません。

改善できるようにいろいろ工夫していこうと思います。

ガナリヤでした〜

ゲームジャム~平成最後の春休み編~

皆さんこんにちは!TNP部員2年次のYutaです。初投稿であまり慣れてなく読みにくいところがあるかもしれませんが, どうか温かい目でご覧下さいませ。

さて, 3/1(金)~3/2(土)の2日間, TNP部室にてゲームジャムが開催されました。

「ゲームジャム」とは, 最初にテーマが与えられた上で, 「短時間でゼロからゲームを作ってみよう!」というイベントです。 今回は1年次2人, 2年次3人が参加しました。

テーマは「数字」, 「お菓子」, 「飛ぶ」に決定し, 主にこれに沿って各々が自由にゲームを制作しました。

それでは, 皆さんの作品を紹介させていただきます。


製作者:ズッキー(1年次)

製作物:飛行機ゲーム

開発環境:Unity

飛行機を操縦して, 穴が開いた場所まで行き, タイミング良くアイテムを投下させて穴に入ればクリア!というゲームとのこと。飛行機の動きがリアルでカッコよく, 完成度も高くてびっくりしました。私もUnityでゲーム作りをしているのですが, 乗り物シミュレーション系に興味があるので参考になりました。


製作者:まんじゅう(1年次)

製作物:東方非想天則RPG(仮)

開発環境:RPGツクール

東方非想天則をモチーフにしたRPGゲームとのこと。JavaScriptの解読が非常に大変だったそうです。私は触れたことのない言語なので何が書いてあるかさっぱり分からず, これに粘り強く取り組めることにすごいと思いました。パラメータなどもたくさんあり, 様々な努力が感じられるゲームです。RPGツクールって奥が深いんですね…。


製作者:いっちー(2年次)

製作物:パズルゲーム

開発環境:DXライブラリ

数字をテーマとしたパズルゲームとのこと。ブロックを操作して他のブロックに触れると積まれていきます。シンプルな画面もまた味があっていいですね。当たり判定などに非常に苦労したそうです。DXライブラリはUnityなどのように簡単にGUI環境で手軽に当たり判定が実装できないので, 1からコードを書いて工夫してやるのはすごいと思いました。


製作者:うおちー(2年次)

製作物:ブラフゲーム&3Dモデリング

開発環境:Siv3D

ボードゲームの「ブラフ」を元にしたゲームとのこと。ボードゲームをプログラミングで再現するというアイデアに驚きました。短時間でこういったゲームが作れるのはすごいと思いました。

さらに, 時間が余ったということで「3Dモデリング」でいくつか作品を作ったそうです。うおちー氏はTNP子の3Dモデルを制作するなど, その道に関しては技術がすごいです。

キャンディやCD, お菓子の筒, フライドポテト, Tが付く企業のあの鳥など, 短時間でここまでリアルなものが作れるとは…さすがです。特にストローが蛇腹の部分まで細かく作り込まれていることにびっくりしました。


製作者:Yuta

製作物:ペットボトルロケットを飛ばそう

開発環境:Unity

私は最初何も思いつかなかったので, 「とりあえずUnityでなんか飛ばそう!」と思い, そこからペットボトルロケットになりました。「空気注入」ボタンを押して空気を貯めて, 発射ボタンを押すと飛んでいきます。発射台は自由に方向が変えられるようになっています。ペットボトルロケットが空間に存在するアイテム(お菓子)にぶつかるとポイントが獲得できます。アイテムはボタンを押すとランダムに生成されます。

コード自体は大して難しくはなかったのですが(簡単な動きの組み合わせだったので…), 手こずったのは座標軸とカメラの動きでした。ローカル座標系とワールド座標系が一致してないと頭が混乱します。カメラも思い通りに動かすにはまだまだ勉強不足でした。

あと, アイテムを増やしすぎるとfpsが低下して全体の動きが非常に重くなるのです(そりゃそうだ)。Time.deltaTimeを使えばよかったのでは?などの課題が残りました。


今回, 私は初めてゲームジャムに参加したのですが, 短時間でアイデアを考えて形にするのはなかなか難しかったです(基本マイペースなので)。でも限られた時間の中でどれだけのものが作れるのか試すことができ, 良い経験になりました。自分自身への良い刺激にもなったと思います。

ゲームジャムに参加する前は, 時間に追われ殺伐とした雰囲気でやるのかしらんなどとイメージしていたのですが, 実際はそうでもなく, 持ち寄ったお菓子をみんなで食べたりしながら楽しく制作ができたと私は思っています。

灯油ヒーターがつかず寒い部室でしたが, 心は温まりました。またやりたいですね, こういうの。

Top