プログラミング習得への道のり #2 アウトプットを決める ~PCキーボードで演奏したい~

プログラミング完全初心者の私が、プログラミングを習得するまでの全過程(主に悩み…)を記事にしていきます。

今回は、プログラミングのファーストステップとして

  • アウトプットを決める

をやっていこうと思います。

☑︎本記事の内容

  • アウトプットを決める
  • アウトプットイメージを固める
  • 実現までのステップを考える

☑︎著者の経験

この記事を書いている私は、非情報系の大学院を卒業後、通信関係の企業に3年勤めた後、現在までコンサルティング会社に勤めています。
学生時代〜現職までプログラミングとは縁がなく、前職でルーターの設定を少しかじった程度のプログラミング完全初心者です。
こういった私が、解説していきます。

Twitterもはじめました。

アウトプットを決める

プログラミングをはじめるにあたって、重要なのが先にアウトプットを決めることと考えます。
前回の記事でお伝えしましたが、“プログラミングはアイデアを実現するための手段”であり、なぜプログラミングをはじめるのかを考えると、 実現したいアイデア=アウトプットがあるから です。

このアウトプットを考えるうえで必要だと考える要素をまとめてみました。

アウトプットに必要な要素

  • モチベーションが続くこと
  • 作る価値があること
  • 実現が可能であり、今まで作られていないこと

下の2つは大学時代の研究を思い出します。上の1つはプログラミング学習のうえで最重要と考えます。前回の記事でもお伝えしたとおり、プログラミングをはじめるうえでの課題の1つに、”続かない”というのが挙げられます。この三日坊主を防ぐために、モチベーションの続くアウトプットを決める必要があると考えます。

私はこの3つの軸を考慮し、実現したいアイデアを考えた結果、
“PCキーボードで演奏したい”と決めました。

よって、アウトプットは以下になります。

 PCキーボードで演奏できるアプリケーション 

アウトプットをPCキーボードで演奏できるアプリケーションにした理由を3軸から説明します。

モチベーションが続くこと

アウトプットを決める第一歩として、先ほども重要な要素とお伝えした”モチベーション”にフォーカスをあてました。

私の場合、趣味の1つが音楽を聴くことです。なので、音楽関係の”あったらいいな“を考えてみました

私の趣味をもう少し掘り下げると、私は色々なジャンルの音楽を聴くのが好きです。
(J-POP、ロック、HIP-HOP、クラシック、ジャズなど)
一方、楽器の演奏はまったくできません。
(ピアノやギターをはじめようと思ったこともありましたが、三日坊主で続きませんでした。)

なので、演奏できない人でも簡単に演奏できたらなぁと考えました。

他にも、最近DTM?パッド演奏?の動画にハマっていて、こんな感じの新しいスタイルで演奏できたらカッコいいなぁと思っていました。

参考動画① DTM

参考動画② LaunchPad

さらにさらに、DAW?という音楽編集ソフトを使ってPCで作曲するのカッコいいですよね。演奏だけでなく、好きにアレンジしたり作曲できたら尚更よいなぁと思います。

参考動画③ PCで曲作り

音楽関係のあったらいいな(モチベーション)をまとめるとこんな感じです。

  • 演奏できない人でも簡単に演奏できたらなぁ
  • 新しいスタイルで演奏できたらカッコいいなぁ
  • 好きにアレンジしたり作曲できたら尚更よいなぁ

作る価値があること

次に、モチベーションの継続できるアイデアだとして、誰に対してどんな価値があるのか。
もちろん自分にとっては価値があるため、それでもよいですが、外に目を向けるとどうか考えてみました。

PCキーボードで演奏できるアプリケーションのメリットは2つあると思っています。

1つ目は、誰でも演奏できることです。

モチベーションのところでも記述したとおり、演奏できない人でも演奏できる新しいスタイルを目指しています。過去、ピアノやギターを挫折した三日坊主の私にとって、音楽理論を頭に入れる作業は苦痛でした。ただ感覚だけで綺麗な和音は出せませんし、かなりハードルが高いと感じています。

これって楽器ができないだけという考え方もできると思っています。
 そんな楽器ができないだけで音楽が好きな人の才能を捨てないようにできるかもしれない。 
これは広く価値があると考えます。

2つ目は、PCキーボードを使用することです。

なぜPCキーボードかというと、仕事で使うからです。学生でPCを使わない人もいつか使います。
PCキーボードは普段の生活で触れる機会が多いため、楽器の練習で挫折したことのある人でも自然と練習機会も多くなると考えます。

作る価値をまとめるとこんな感じです。

  • 誰でも演奏できることで楽器はできないけど音楽が好きな人の才能を捨てないようにできる
  • PCキーボードは普段の生活で触れる機会が多く、自然と練習機会が多くなる

実現が可能であり、今まで作られていないこと

最後に、妄想に終わらないためには実際に作れることと二番煎じにならないことも重要です。
イメージとして、モチベーションのところで紹介したようにパッド演奏があり、それをキーボードに置き換えただけなのでできそうだなと考えます。

実際、「プログラミング 演奏」のようにネット検索をかけると、それっぽいものもいくつかヒットしました。
一方、「PCキーボード 演奏」のようにネット検索をかけてもそれっぽいものがヒットしませんでしたので、有名どころで同じようなものはないと考えます。

以上から、 アウトプットはPCキーボードで演奏できるアプリケーションに決定しました。 

アウトプットイメージを固める

プログラミングを学びながら作成するアウトプットとして、PCキーボードで演奏できるアプリケーションに決定しましたが、作成しはじめるうえでもう少しイメージを具体化したと考えます。

まずは、インターネットで近しいものがないか探したところ、Pythonというプログラミング言語を用いてDTMのようなパッド演奏アプリを作っているものが見つかりました。

参考:Pythonで作るTiny DAW

イメージぴったりです。上記リンクのような演奏をPCキーボードを用いて実現したいです。

更に具体化すべく、アプリケーションの要件を定義してみました。

PCキーボードで演奏できるアプリケーションの要件定義

  • キーボード入力で音を出力できること
  • 様々な楽器の音色、複数の音を奏でられること
  • DAWの機能を有すること(テンポ調整、フィルタリング、エフェクト、録音、外部入力等)
  • 音楽知識が浅くても演奏ができること(場合によってはAIでサポート)

いま思いついたレベルなので今後ブラッシュアップは必要だと思いますが、演奏部分は上記のようなことができるといいなぁと考えます。あとは、演奏以外の部分でアプリケーションぽくアプリ画面があるとカッコいいなぁと考えています。

実現までのステップを考える

実現したいアプリケーションの要件がざっくり決まりました。いよいよ作成を開始するにあたり、実現までのステップを大きく6ステップ考えました。

実現までのステップ

  1. キーボード入力で音を鳴らす
    1−1.1つの音を鳴らす
    1-2.音階を鳴らす
    1-3.音の長さを自由に変える
    1-4.テンポを決める
  2. 音を制御する
    2-1.波形を変える
    2-2.フィルタリング機能を追加する
    2-3.複数の音を同時に鳴らす
  3. 外部から音を取り込む
    3-1.単音の音源サンプルから音を取り込む(1楽器)
    3-2.音源から楽器を取り出す
  4. 機能を追加する
    4-1.録音&再生する(パターンをつくる)
    4-2.外部と連携する
  5. 曲を演奏する
  6. 曲を作る

また、ステップ0として、以下があると考えます。

  • プログラミング言語を決める
  • 基礎を学習する

“プログラミング言語を決める”に関しては、ここまで読んだ方はお気づきかと思いますが
Pythonにしました。

理由としては、以下のとおりです。

  • 類似アプリをPythonで作成しており、実現可能であること
  • Python言語自体がシンプルらしく、かつ、ネット上に情報が多いことから初心者向けであること

“基礎を学習する”については、別記事にしようと思います。

まとめ&次回予告

PCキーボードで演奏できるアプリケーションを作成していきます。

これが実現できると、楽器はできないけど音楽が好きな人の才能を捨てないようにできると考えます。

要件は以下とします。

  • キーボード入力で音を出力できること
  • 様々な楽器の音色、複数の音を奏でられること
  • DAWの機能を有すること(テンポ調整、フィルタリング、エフェクト、録音、外部入力等)
  • 音楽知識が浅くても演奏ができること(場合によってはAIでサポート)

実現までのステップは以下です。

  1. キーボード入力で音を鳴らす
  2. 音を制御する
  3. 外部から音を取り込む
  4. 機能を追加する
  5. 曲を演奏する
  6. 曲を作る

いよいよ次回から作成の様子、悩み等々、記事にしていこうと思います。

次回予告

  • Pythonの基礎をさらっと学習する

Leave a Reply

Your email address will not be published. Required fields are marked *