これは新歓ブログリレー2020 56日目の記事です。
こんにちは。Fourmsushiです。
もともと書こうと思ってた題材があんまり好きじゃなくなったのでそれっぽい記事でお茶を濁そうと思います
書くっていったのは自分なので仕方がないですね。
というわけでプログラミングの第二歩目の話です。
大学に入ってからプログラミングをはじめた、traPに入ってプログラミングをはじめたい、なんて人もいるんじゃないでしょうか。
そういう人にとって障壁となりうるのが第二歩目、つまりは基本的なことを学んだあとに何をするかということです。
ここでいう基本的なこと、というのはFizzBuzzができてちょっとクラスとか関数とかを学んだくらいの状態を指します。
想定読者
- なんでもいいから文字を読みたい人
- プログラミングをはじめたばかり、またはこれからはじめる人
プログラミングをする目的について
さて、あなたは何を目的にプログラミングを学びはじめたのでしょうか?
単純に興味があったから、就職に使えそうだから、カッコイイから、ゲームが作りたいから、などとそれは人によって違うと思います。
何かを作りたい、何かをしたいという目的がある人はそのままそれを目指すのがよいでしょう。
教本などに従ってじっくりと学んでから、というのもよいですが、まずは取り組んでみてから足りないことを補い始めても遅くはありません。
特に目的がない方はこの記事を読んで目標を持ってもらえたらな、と思います
プログラミングでやることおすすめリスト
真面目臭い文章を書くのにあきたんで、列挙していきます
どれか自分に合ったものを見つけたら細かいことは気にせず試してみましょう
1. 競技プログラミング
何それ
特に最近流行ってるやつですね。
競技プログラミングに関してはこの辺の記事が詳しいです
よむのがめんどくさいんだが?という人のために適当に説明すると、「与えられた問題を高速で解くプログラムを書こうコンテスト」みたいなやつです。
「高速に」というのがポイントで、問題に適したアルゴリズムやらデータ構造やらを実装しないと点数がもらえない場合があります。
競技プログラミングで用いられるアルゴリズムは競技プログラミング以外でも役に立つほか、アルゴリズムそれ自体が学問として成立しているのでやって損はないです。
自分の中のアイデアなどの不確定な要素に左右されず、正解・不正解で自分のプログラムが評価されるというのもうれしいですね。
どうすればいいの
とりあえず、という方は毎週末21時くらいにAtCoderで開催されているABC(AtCoder Beginners Contest)というコンテストに参加したり、その過去問を解いてみましょう。要アカウント登録。
また、traPではABC解説会なるものが定期的に開催されています。ABCに参加したらぜひこっちも参加しましょう
AtCoder以外にもコンテストサイトは存在しますが、紹介は割愛します。めんどいので。
言語
- C++, Javaが人気
- Pythonもまあまあ人気
- それ以外もたくさん
こんな人にオススメ!!!!!!!!!!!!
- プログラミングの本を読むのに飽きた人
- 人と競うのが好きな人
- アルゴリズムに興味を持った人
- 問題を解くのが好きな人
- 何かを作るアイデアが出ないけどプログラミングをしたい人
traPとのかかわり
traPにはアルゴリズム班というものがあり、大会などで好成績を残しています。
ABC解説会のような部内向けイベントも開催しており、初心者も上級者も所属しています。
競技プログラミングしたい人はtraP入りましょう。
2. ゲーム制作
何それ
ものつくり系プログラミングの代表。
上で紹介した競技プログラミングとは異なり、自分のアイデアをプログラミングと動画像・音声で作品に仕立て上げるやつです。
アイデアや素材が必要になりますが、表現としての自由度、インタラクティブなコンテンツを作れるという意味で非常に魅力的な題材です。
また、制作を通して様々なツール、ライブラリに触れることができるというのも利点として挙げられます。
最近はUnityやUnreal Engine、GameMaker Studioなどのゲームエンジンの台頭によって個人で3Dゲームを作ることも以前より簡単になりました。
どうすればいいの
ゲーム作り初心者、プログラミング初心者であればゲームエンジン・ライブラリを使って開発するのがよいでしょう。
ゲームエンジンを使うのであればUnity、Unreal Engine、Godot Engineあたりが無料で高機能なのでオススメです。
ゲームライブラリを使い場合はあなたが使っている言語によります。「言語名 game libraries」などで検索してみましょう。
traPではC++のOpenSiv3DやJavaScriptのPixiJSなどが多く使われている気がします。
こんな人にオススメ!!!!!!!!
- ゲーム作りたいマン
- 自分のアイデアを形にしたい人
- ゲームが好きな人
- 人と協力して何かをするのが好きな人
traPとのかかわり
traPでは毎年「プロジェクト」という単位でチームを組んでものを作るのですが、ゲーム制作のプロジェクトが多くを占めます。
また、不定期的にtraP3jamという3時間でゲームを作るイベントを開催しています。
それ以外にも毎年二回(今年はどうなるかわからんけど)部内でのハッカソンを開催しており、そこでもゲーム制作が行われています
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などのチャットボットを作るのがちょうどよいかと思います。
クラウドサービスなどの台頭により、フロントエンドのみでアプリケーションを開発することもできるので試してみてはいかがでしょうか。
こんな人にオススメ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 何か作りたいけどゲーム制作ではない
- SNSなどを作ってみたい
- サーバーなどに詳しくなりたい
- 様々な言語・ツールに触れたい
traPとのかかわり
traPではプロジェクトのほかに、SysAd班という班でWebアプリケーションを開発しています。
特にSysAd班では、独自のWebサービスの開発ができるほか、200人以上がアクセスするサーバーの運用など貴重な体験ができます。
つい先日部内チャットサービスのtraQが3代目のtraQ-Sになりました。
4. ジェネラティブアート
何それ
ジェネレーティブアートまたはジェネラティブアート(英: Generative Art)は、コンピュータソフトウェアのアルゴリズムや数学的/機械的/無作為的自律過程によってアルゴリズム的に生成・合成・構築される芸術作品を指す。コンピュータの計算の自由度と計算速度を活かし、自然科学で得られた理論を実行することで、人工と自然の中間のような、統一感を持った有機的な表現を行わせる作品が多い。
ジェネレーティブアート - Wikipedia https://ja.wikipedia.org/wiki/ジェネレーティブアート
すごく適当に説明すると「プログラミングなどでなんかきれいな模様をつくろう」てきな感じのやつになります。
様々な作成方法、発表方法が存在しますが、NEORTなどを見るとイメージがつかめるかな、と思います。
どうすればいいの
先ほども述べたように、ジェネラティブアートには様々な作成方法が存在します。
ですが今回はプログラミングの二歩目ということなので、Processingやp5.jsなどを用いて作品を作ってみるのがよいでしょう。
数学の関数やアルゴリズムを可視化するだけでも結構見栄えのよいものが作れます。
言語
- Processing(Java)
- p5.js(JavaScript)
- シェーダ言語(GLSLなど)
- なんでも使い慣れたもの
こんな人にオススメ!
- Windows Media Playerが好きな人
- 雪の結晶とか好きな人
traPとのかかわり
いままでに紹介したものとは異なり、個人での開発がメインとなりがちなのでtraP内にジェネラティブアートを行う組織はありません。
しかしながら、少なくない数の部員がシェーダ言語を用いた作品を作っています。
また、毎年新歓で行われる(今年は後日開催予定!だったはず)CPCTFというCTF・競技プログラミングの体験会・大会では得点状況の可視化のためにヴィジュアライザを作成しており、
こちらもシェーダ言語で書かれたものが作成されたことがあります。
5. プログラミング言語
何それ
コンパイラとかインタプリタを作るというやつです。
どうすればいいの
最初から機能の多い言語を実装するのは難しいと思うので、Brainf*ckのインタプリタや四則演算しかできないLispのように簡単なものから実装してみましょう。
言語
使い慣れてるものを使ってください
こんな人にオススメ!!!
- プログラミング言語が好き
- オリジナルの車輪を再発明するのが好きな人
traPとのかかわり
ないです。
でも個人的にやってる人はいるので質問したら答えてくれるかも、、、、
まとめ
いかがでしたか?
書き始めたのがあまりにも遅かったため雑な内容になってしまいましたが、プログラミング学習の助けになれば幸いです。