feature image

2020年5月3日 | ブログ記事

【新歓ブログリレー2020 56日目】プログラミングの第二歩目

これは新歓ブログリレー2020 56日目の記事です。

こんにちは。Fourmsushiです。
もともと書こうと思ってた題材があんまり好きじゃなくなったのでそれっぽい記事でお茶を濁そうと思います
書くっていったのは自分なので仕方がないですね。

というわけでプログラミングの第二歩目の話です。
大学に入ってからプログラミングをはじめた、traPに入ってプログラミングをはじめたい、なんて人もいるんじゃないでしょうか。
そういう人にとって障壁となりうるのが第二歩目、つまりは基本的なことを学んだあとに何をするかということです。
ここでいう基本的なこと、というのはFizzBuzzができてちょっとクラスとか関数とかを学んだくらいの状態を指します。

想定読者

プログラミングをする目的について

さて、あなたは何を目的にプログラミングを学びはじめたのでしょうか?
単純に興味があったから、就職に使えそうだから、カッコイイから、ゲームが作りたいから、などとそれは人によって違うと思います。

何かを作りたい、何かをしたいという目的がある人はそのままそれを目指すのがよいでしょう。
教本などに従ってじっくりと学んでから、というのもよいですが、まずは取り組んでみてから足りないことを補い始めても遅くはありません。

特に目的がない方はこの記事を読んで目標を持ってもらえたらな、と思います

プログラミングでやることおすすめリスト

真面目臭い文章を書くのにあきたんで、列挙していきます
どれか自分に合ったものを見つけたら細かいことは気にせず試してみましょう

1. 競技プログラミング

何それ

特に最近流行ってるやつですね。
競技プログラミングに関してはこの辺の記事が詳しいです

競プロをやろう
競プロをやろう こんにちは。traP競プロ担当の@_n_ariです。 今回はtraPの皆さん、および外部の皆さんに、競プロの素晴らしさを布教するためキーボードを叩きました。 競プロとは 競プロとは「競技プログラミング」の略で、その名の通りプログラミングで競い合うことです。 とはいってもどうやって競うのか想像がつかないと思います。 競プロでは、与えられた課題を適切に処理して返すプログラムを素早く提出することで競います。 例えば次のような問題が考えられます。 > 問題 整数Bと、長さB(bit)の2進数Nが与えられる。 Nが素数であれば“Yes”、素数でないなら“No”と1行に出力せよ。 制…
競技プログラミングを始めよう【新歓ブログリレー2019 8日目】
この記事は新歓ブログリレー2019 8日目の記事です。たぶん。 -------------------------------------------------------------------------------- 18Bのeiyaです。競技プログラミング(競プロ)やCTFをしています。昔はゲーム制作もしていたんですが忙殺されてここ3年くらいまともに作っていません。悲しいです。 競技プログラミングは出来る側の人間のはずなんですが僕よりも強い人類が東工大には沢山います。楽しいです。 対象読者 この記事は以下の人を対象にしています。 * プログラミングに興味があるけどしたこと…

よむのがめんどくさいんだが?という人のために適当に説明すると、「与えられた問題を高速で解くプログラムを書こうコンテスト」みたいなやつです。
「高速に」というのがポイントで、問題に適したアルゴリズムやらデータ構造やらを実装しないと点数がもらえない場合があります。

競技プログラミングで用いられるアルゴリズムは競技プログラミング以外でも役に立つほか、アルゴリズムそれ自体が学問として成立しているのでやって損はないです。
自分の中のアイデアなどの不確定な要素に左右されず、正解・不正解で自分のプログラムが評価されるというのもうれしいですね。

どうすればいいの

とりあえず、という方は毎週末21時くらいにAtCoderで開催されているABC(AtCoder Beginners Contest)というコンテストに参加したり、その過去問を解いてみましょう。要アカウント登録。
また、traPではABC解説会なるものが定期的に開催されています。ABCに参加したらぜひこっちも参加しましょう

AtCoder以外にもコンテストサイトは存在しますが、紹介は割愛します。めんどいので。

言語

こんな人にオススメ!!!!!!!!!!!!

traPとのかかわり

traPにはアルゴリズム班というものがあり、大会などで好成績を残しています。
ABC解説会のような部内向けイベントも開催しており、初心者も上級者も所属しています。
競技プログラミングしたい人はtraP入りましょう。

競技プログラミング - 東京工業大学デジタル創作同好会traP
『デジタル創作同好会traP』は、東京工業大学で活動するデジタル創作・プログラミング系サークルです。ゲーム制作を中心に、アプリ、音楽(DTM)、グラフィック(イラスト、3Dモデル、ドット絵、動画)などのクリエイティブ活動の他、競技プログラミング(競プロ)やCTFも行っています。

2. ゲーム制作

何それ

ものつくり系プログラミングの代表。
上で紹介した競技プログラミングとは異なり、自分のアイデアをプログラミングと動画像・音声で作品に仕立て上げるやつです。
アイデアや素材が必要になりますが、表現としての自由度、インタラクティブなコンテンツを作れるという意味で非常に魅力的な題材です。
また、制作を通して様々なツール、ライブラリに触れることができるというのも利点として挙げられます。

最近はUnityやUnreal Engine、GameMaker Studioなどのゲームエンジンの台頭によって個人で3Dゲームを作ることも以前より簡単になりました。

どうすればいいの

ゲーム作り初心者、プログラミング初心者であればゲームエンジン・ライブラリを使って開発するのがよいでしょう。

ゲームエンジンを使うのであればUnity、Unreal Engine、Godot Engineあたりが無料で高機能なのでオススメです。

ゲームライブラリを使い場合はあなたが使っている言語によります。「言語名 game libraries」などで検索してみましょう。
traPではC++のOpenSiv3DやJavaScriptのPixiJSなどが多く使われている気がします。

こんな人にオススメ!!!!!!!!

traPとのかかわり

traPでは毎年「プロジェクト」という単位でチームを組んでものを作るのですが、ゲーム制作のプロジェクトが多くを占めます。
また、不定期的にtraP3jamという3時間でゲームを作るイベントを開催しています。

それ以外にも毎年二回(今年はどうなるかわからんけど)部内でのハッカソンを開催しており、そこでもゲーム制作が行われています

ゲーム制作 - 東京工業大学デジタル創作同好会traP
『デジタル創作同好会traP』は、東京工業大学で活動するデジタル創作・プログラミング系サークルです。ゲーム制作を中心に、アプリ、音楽(DTM)、グラフィック(イラスト、3Dモデル、ドット絵、動画)などのクリエイティブ活動の他、競技プログラミング(競プロ)やCTFも行っています。

3. Webアプリケーション制作

何それ

Twitterやこのサイトのように、Google ChromeやFirefoxのようなWebブラウザで動くアプリケーションを主に作ります。
フロントエンド(ユーザーが実際に触れる部分)とバックエンド(サーバーとか)の二つに分かれています。
フロントエンドではUI・UXなどが重視され、バックエンドでは速度や信頼性などが求められます。
こちらも様々なツール・ライブラリに触れることができ、制作を通して多くの知識を得ることができます。

どうすればいいの・言語

Web制作は上記の分野よりも言語・ツールの選択肢が多い上、バックエンドの開発ではデータベースやLinuxの知識なども求められる場合があります。

フロントエンドにはHTML、CSS、JavaScriptの知識が必要不可欠です。
流行りの移り変わりが激しい界隈なので今後はわかりませんが、Vue.jsやReactが最近のトレンドなのでそれらを使ってTODOリストや電卓など、簡単なアプリケーションを作ってみるのがよいでしょう。

バックエンドは開発者やニーズによって言語・ツールが大きく異なります。
Golang、Node.js、Python、Ruby、Javaなどがよく用いられているように感じます。また、Web開発においてC++などC系の言語はあまり用いられないことには注意が必要です。
データベースとしてはMySQL(MariaDB)、MongoDBなどを触ってみるのがよいでしょう。
最初に触る題材としてはDiscordやSlackなどのチャットボットを作るのがちょうどよいかと思います。

クラウドサービスなどの台頭により、フロントエンドのみでアプリケーションを開発することもできるので試してみてはいかがでしょうか。

こんな人にオススメ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

traPとのかかわり

traPではプロジェクトのほかに、SysAd班という班でWebアプリケーションを開発しています。
特にSysAd班では、独自のWebサービスの開発ができるほか、200人以上がアクセスするサーバーの運用など貴重な体験ができます。

つい先日部内チャットサービスのtraQが3代目のtraQ-Sになりました。

爆☆誕 traQ-S【新歓ブログリレー2020 54日目】
この記事はtraP新歓ブログリレー54日目の記事です。 ‌ ‌ こんにちは、@spa (Twitter: @__spaspa__ [https://twitter.com/__spaspa__] )です。最近4月を迎えたと思ったらもう5月です。 さて、このたび部内SNSサービス「traQ」の新バージョンである、「traQ-S」をリリースしました!🎉 この新しいtraQでは、UIの全面的な刷新や各種新機能などが目白押しです!早速見ていきましょう!!!!!! その前に: traQとは traQは、traPの部内専用コミュニケーションツール です。Slackなどの…
SysAd班 - 東京工業大学デジタル創作同好会traP
『デジタル創作同好会traP』は、東京工業大学で活動するデジタル創作・プログラミング系サークルです。ゲーム制作を中心に、アプリ、音楽(DTM)、グラフィック(イラスト、3Dモデル、ドット絵、動画)などのクリエイティブ活動の他、競技プログラミング(競プロ)やCTFも行っています。

4. ジェネラティブアート

何それ

ジェネレーティブアートまたはジェネラティブアート(英: Generative Art)は、コンピュータソフトウェアのアルゴリズムや数学的/機械的/無作為的自律過程によってアルゴリズム的に生成・合成・構築される芸術作品を指す。コンピュータの計算の自由度と計算速度を活かし、自然科学で得られた理論を実行することで、人工と自然の中間のような、統一感を持った有機的な表現を行わせる作品が多い。
ジェネレーティブアート - Wikipedia https://ja.wikipedia.org/wiki/ジェネレーティブアート

すごく適当に説明すると「プログラミングなどでなんかきれいな模様をつくろう」てきな感じのやつになります。

様々な作成方法、発表方法が存在しますが、NEORTなどを見るとイメージがつかめるかな、と思います。

どうすればいいの

先ほども述べたように、ジェネラティブアートには様々な作成方法が存在します。
ですが今回はプログラミングの二歩目ということなので、Processingやp5.jsなどを用いて作品を作ってみるのがよいでしょう。

数学の関数やアルゴリズムを可視化するだけでも結構見栄えのよいものが作れます。

言語

こんな人にオススメ!

traPとのかかわり

いままでに紹介したものとは異なり、個人での開発がメインとなりがちなのでtraP内にジェネラティブアートを行う組織はありません。
しかしながら、少なくない数の部員がシェーダ言語を用いた作品を作っています。

また、毎年新歓で行われる(今年は後日開催予定!だったはず)CPCTFというCTF・競技プログラミングの体験会・大会では得点状況の可視化のためにヴィジュアライザを作成しており、
こちらもシェーダ言語で書かれたものが作成されたことがあります。

CPCTF visualizer2019
こんにちは、uynetです CPCTF [http://cpctf.space]も無事終わったので、僕が関わったヴィジュアライザについて書きます (新歓ブログリレーではありません) CPCTFとは ゲーム大会と並ぶtraP新歓メインイベントの一つ、「競プロとCTFの体験会」です 1~2ヶ月掛けて準備する最も力の入ったイベントとなります。 で、例年ヴィジュアライザというものを用意します。これは競技の様子を可視化したものです。 その歴史は3年に遡ります。 2017年 初年度のヴィジュアライザです。円グラフは解いた問題ジャンルの割合みたいです。 作:ふぁいたん ゆいちゃんをさがせ! 得点をす…
シェーダー - 東京工業大学デジタル創作同好会traP
『デジタル創作同好会traP』は、東京工業大学で活動するデジタル創作・プログラミング系サークルです。ゲーム制作を中心に、アプリ、音楽(DTM)、グラフィック(イラスト、3Dモデル、ドット絵、動画)などのクリエイティブ活動の他、競技プログラミング(競プロ)やCTFも行っています。

5. プログラミング言語

何それ

コンパイラとかインタプリタを作るというやつです。

どうすればいいの

最初から機能の多い言語を実装するのは難しいと思うので、Brainf*ckのインタプリタや四則演算しかできないLispのように簡単なものから実装してみましょう。

言語

使い慣れてるものを使ってください

こんな人にオススメ!!!

traPとのかかわり

ないです。
でも個人的にやってる人はいるので質問したら答えてくれるかも、、、、

まとめ

いかがでしたか?
書き始めたのがあまりにも遅かったため雑な内容になってしまいましたが、プログラミング学習の助けになれば幸いです。

Fourmsushi icon
この記事を書いた人
Fourmsushi

水とか飲んでます

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2023年4月27日
Vulkanのデバイスドライバを自作してみた
kegra icon kegra
2021年12月8日
C++ with JUCEでステレオパンを作ってみた【AdC2021 26日目】
liquid1224 icon liquid1224
2020年5月15日
【新歓ゲーム制作特集 第2弾】Inverse製作秘話
Saltn icon Saltn
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記