みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
ノンプログラマーがVBAやGASを学習していくと、その先に理解不能な概念が支配する恐怖のエリアがあることに気づきます。
「クラス」です。
これまで標準モジュールに、SubプロシージャとFunctionプロシージャでマクロを作っていて、それで十分でした。
極稀に、上級者のソースコードやブログ記事を見ると、そもそもクラスモジュールにコードを書いていて、さっぱり何が書いているかわからず…
そっとPCを閉じる…みたいな。
ネットや書籍にもなかなか情報がないですし、ノンプログラマーが簡単なツールを作る上では利用しなくても作れる場合が多いのは事実。
でも、気になる存在である「クラス」。
そんなクラスへの苦手意識を取り除く、というハイレベルな目標を立てて、コミュニティ「ノンプログラマーのためのスキルアップ研究会」の定例会「クラスって何?」に臨みました。
今回は、その背景として「なぜノンプログラマーがクラスを学ぶべきなのか」について書きたいと思います。
※この記事はコミュニティ「ノンプログラマーのためのスキルアップ研究会」定例会Vol.11「クラスって何?」の内容の一部を加筆修正して記事にしたものです。当日の様子は以下のツイートまとめもご覧くださいませ。
ノンプログラマーにとってのクラス
クラス、インスタンス、コンストラクタ、そしてオブジェクト…わからない概念のオンパレードです。
車とか、たい焼きとか、人間とか、犬とか、色々な例えを使って、あの手この手で色んな方が色んな説明をしてくださっています。
…ですが、なかなか理解が難しい。
そして、さらにノンプログラマーが相手となると、周りにクラスを使っている人はほとんど見かけません。
そもそもプログラミング自体をしている人が希少ですから。
さらに、Webや書籍で事例が載っていても、そのコードには見たことのない、全く知らない世界が展開されていて、どういう意味なのか、どのようなメリットがあるのかを読み解くことができません。
今、実現できていることを、なぜ理解のできない難しい概念に載せ替えなくてはいけないのか…説明がつかないのです。
結果として、 ノンプログラマーにとってクラスというのは、立ち入り禁止区域のような存在になってしまっています。
「クラスを使わなくてもいい」という理由
実際、このブログでも、まだクラスを使用した事例は紹介していません。
理由としては前述の通り
- 学習の難易度が高い点
- 活用する機会とそのメリットが見出しづらい点
にあります。
ビジネスマンは時間がないので、なるべく目の前の業務を、少しの学習コストで自動化したいですから、回り道をさせるのも気が引けるというのもあります。
どちらかというと、ノンプログラマーが作るようなプログラムであれば「クラス不要説」を説く方も多いような気がしています。
なぜクラスを学ぶ必要があるのか?
ですが私は、ノンプログラマーでもクラスを作成して活用できる知識とスキルをなるべく早い段階で身につけるべきというスタンスに変わってきています。
「詳解!Google Apps Script完全入門」では、6章で紹介するようにしました。
そして、今回の定例会もそうですし、書籍やブログを通して積極的に「クラスを理解し活用するためのコンテンツ」を供給していきたいと思っています。
その理由を3つ挙げます。
オブジェクトの理解が進む
VBAでもGASでも、操作する対象の多くはオブジェクトです。
そして、そのオブジェクトの全ては、ひな形となるクラスがベースとなっています。
クラスの挙動を知ることで、全てのオブジェクトに共通する機能や挙動を、コードベースで把握してイメージすることができます。
つまり、オブジェクトを正しく理解しやすくなるはずと思います。
他の言語を新たに学習する際に移行しやすい
GASを学ぶメリットとして、JavaScriptを学べるという点があります。
ノンプログラマーでもGASきっかけにJavaScriptを学び、その後頑張ってHTMLやCSSの操作を勉強すれば、フロントエンジニアへの道が開けるかも知れない。
そういう可能性があります。
ですが、おそらく本職プログラマーの皆さんは、オブジェクト指向を普通に使いこなされていて、それベースの開発をされているはずです。
当然、開発環境とか、ECMA Scriptとか、DOM操作とか、フレームワークとか、他に学ばなくてはいけないことはあります。
ですが、準備は先にできるならしておいたほうがいいわけで、GASでも学べるクラスは先に学んでおいたほうが良いと考えます。
いつクラスを学べばいいのか
さて、私がサラリーマン時代に作ったVBA。
最初は200~300行くらいのコードだったと思います。
それくらいであれば、プロシージャだけで十分に構成でき、十分にマネジメントできる内容と言えます。
しかし、その後。独学で勉強しながら、少しずつ機能を増やしていきました。
それを2年くらい続けて、独立のために退職をする頃のには、そのマクロは15のプロシージャ、合計2000行以上のコードで構成される規模になりました。
これ、今思えばなるべく早い段階でクラスを想定して作り直しておきたかったと思うんです。
では、いつクラスを学べばよかったのか?
タイミングが遅いと作り直すのが大変です。
早めに知っておければ、規模の小さいうちにクラスを想定した作り直しができます。
基本構文、制御構文、プロシージャまたは関数を学んだ後に、クラスの作り方を身に着けちゃったほうが良いというスタンスでいます。
GAS本では、そういう流れにしましたし、今執筆しているVBA本でもそういう流れを大事にしています。
まとめ
というのが、ノンプログラマーでも「クラス」を学ぶべき理由です。
「いやでも先にクラス学んでも、使う機会なきゃ忘れちゃうじゃん」
という意見もあると思います。
そう思います。
きっと多くの人は忘れちゃいます。
でも、その後メンバーの何人かは実際にクラスを作っていただいていましたし、そうでなくてもテーマとして取り上げたことに意味があるかなと思います。
今後、皆さんがどう活用されていくか…楽しみにしていきたいと思います!
「ノンプログラマーのためのスキルアップ研究会」について
コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。- コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ(2017-2018)
- コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ(2019)
- コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ(2020)
- コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ(2021)
- コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ(2022)