執筆者: バニラ
最終更新: 2021/05/09
こんにちは、OB のバニラです。
新年度になったこともあり、当サークルにも続々と新入生が参加してくれています。
「電子計算機研究会」という名前のサークルなので、コンピュータを活用したものづくりに興味を持っている方が多く、「プログラミングがしたいです!」と言っている方もいて嬉しい限りです。
しかし、自分は「プログラミングがしたい」というのは「スポーツがしたい」と同じくらいあいまいで抽象的なものであると思っています。そのため、「プログラミングがしたい」という気持ちだけでは、その次に具体的にどのようなアクションを起こせばいいかの検討がつかず、何もしないまま時間だけが過ぎていくのではないか、という点について懸念しています。
そこで、この記事では「プログラミングが出来るとどのようなことが出来るのか」という点に着目して、いくつかの例を紹介していこうと思います。
「プログラミングに興味があるなら人に聞く前に何かしら手を動かしているのでは?」と思う人もいるかもしれませんが、「そもそも存在を知らなかったから手を出せていなかった」というのは、プログラミングに限らず人生のいろんな場面で起こりうることだと考えているので、この記事によって新しい選択肢を知ることができたのであれば幸いです。
※なお、以下に紹介するのは「(筆者の知る範囲で)プログラミングでできること」なので、これが全てだとは思わないでください。
「Web サービス」というのは、この記事が掲載されているホームページのようにブラウザ上で閲覧できるコンテンツのことです。
ただ、「Web サービス」と一言に言っても千差万別なので、開発の難易度的な観点でもう少し分類していきたいと思います(つまり、これからやってみたいと思う人は上から順に実行していくのがおすすめです)
文字や画像を並べて装飾したシンプルな Web ページのことを指します。
これを作るためには「HTML」でページの構造(どんな見出しで、どんな画像を使って...)を記述し、「CSS」で装飾を行う必要があります。
具体例としては、「このHPの自己紹介ページ」みたいなものがこれに当たります。
勉強するにあたっては https://developer.mozilla.org/ja/docs/Lea の記事などが参考になりそうです。
なお、 HTML や CSS を記述することは厳密に言うと「プログラミング」ではないですが、これ以下の説明の基礎となる部分となるためここに記載しています。
「HTML」や「CSS」を使って見た目が整えられるようになったら、次はそのサイトにプログラムを記述して動的な Web ページを作ってみましょう。ここで言う「動的」というのは、ユーザーの行動に反応して Web ページの内容がインタラクティブに変化していくことを指します。「ボタンを押したら〇〇する」「〜〜秒待ったら〇〇する」みたいな感じですね。
具体例としては、「カウントダウンタイマー」「電卓」みたいなものがこれにあたります。
そして、これらを実現するためには、「JavaScript」と言うプログラミング言語について勉強する必要があります。
勉強するにあたっては https://developer.mozilla.org/ja/docs/Learn/JavaScript/First_steps の記事などが参考になりそうです。
上二つができるようになったら、最後にサーバサイドと連携した Web サービスを作成してみましょう。
レンタルサーバを借りるなどして、ユーザ側に Web ページを提供するサーバ側でプログラムを動かせるようになると、作れるものの幅が大きく広がります。
具体的には「会員登録ができる SNS サービス」「ネットショッピング」「大学の学務システム」みたいなものがこれにあたります。
これを実現するための技術はたくさんあります。
https://developer.mozilla.org/ja/docs/Learn/Server-side/First_steps/Introduction などを参考にしながら、自分で技術選定をしてみるのも良いかもしれません
「モバイルアプリ」というのは、皆さんの手元のスマートフォン上で動作しているアプリのことです。詰まるところ「Play ストア」や「App Store」からインストールしたものがこれに該当します。
Android アプリを開発したい場合は「Android Studio」をというソフト、 iOS アプリを開発したい場合は「Xcode」というソフトをインストールすることで、誰でも手軽(?)にモバイルアプリの開発を始めることができます。
※ Xcode は MacOS でのみ利用可能なソフトです
これらのソフトの導入が終わったら、各プラットフォームが用意してくれているチュートリアルを進めていくのが良いと思います。
Android: https://developer.android.com/training/basics/firstapp?hl=ja
iOS: https://developer.apple.com/tutorials/app-dev-training
チュートリアルで基本的な内容について理解したら、「メモ帳」や「TODO リスト」のような基本的なアプリを作成しつつ、自分の欲しいアプリの開発を進めていくのがおすすめです。
また、「モバイルアプリ開発」は筆者自身の一番馴染み深い分野でもあるので、開発していて分からないことがあればいつでも質問お待ちしています。
皆さん大好き(だよね...?)なゲームです。
大半のゲームの開発には「ゲームエンジン」というものが用いられており、これを利用することで物理演算や当たり判定など、ゲームに必要不可欠であろうものを一から作ることなくゲームの開発を行うことができます。
このゲームエンジンの代表的な物として「Unity」というソフトウェアが存在します。
https://unity3d.com/jp/get-unity/download
うちのサークルには「Unity」というツールと「C#」というプログラミング言語を使ってゲームを制作しているメンバーが多数在籍しているので、ゲームを作りたいのであれば、まずは Unity というソフトに触れてみることがおすすめです。
競技プログラミングとは、与えられた問題を解くプログラムを実装し、そのプログラムの実装までにかかった時間などを競うことを指します。パズルを解くのが好きだったり、綺麗なアルゴリズムでプログラムを書くのが好き、という人は競技プログラミングにぜひ挑戦してみることがおすすめです
日本では、「AtCoder」というサイトが有名で、定期的にコンテストが開催されています。
https://atcoder.jp/?lang=ja
コンテストの開催時間以外でも、過去問に挑戦できるサイトがあるので、まずはここからチャレンジしてみるのがおすすめです。
https://kenkoooo.com/atcoder/#/table/
なお、うちのサークルには自分よりもずっと競技プログラミングに詳しいメンバーがいるので、競プロについてもっと詳しく知りたい場合はこちらの記事を見てみるのも良さそうです。
https://oucrc.net/articles/zlu04tkzslcw
ここで紹介した以外にも「コンソールアプリケーション」「デスクトップアプリケーション」「AI・機械学習」「電子工作」など、プログラミングの活躍する場面はいろんなところに存在します。世界は広いですね。
これまで説明したように「プログラミング」と一言に言っても、それによって実現できることはいくらでも存在し、どの部分に興味を持つのかは人それぞれです。
ただ、筆者個人の意見を述べるとするならば、「自分の欲しいものは自分で作る。」これが出来るのがプログラミングの一番の魅力だと思っています。ただ、それを実現するまでには、エラーと格闘したり、思うように機能が実現できなかったりと詰まる場面が出てくるかもしれません。もちろんそれを自分一人で地道に解決することも大事ですが、時には誰かに相談することで進捗が生まれるかもしれません。それが出来るのがこの「電子計算機研究会」というサークルです。存分にこの環境を活用していきましょう!