ITスペシャリストが語る芸術

-The Kay Notes-
あなたをSE、プログラマー、あるいは、超能力者にするブログ。ひきこもりも歓迎。

VBA

当ブログは、第一期ライブドア奨学生ブログです。
◇お知らせ
[2017/03/01]「通りすがり」「名無し」「読者」「A」等のハンドル名のコメントは原則削除します。
[2016/11/21]滅多にはありませんが、あまりにレベルが低いコメントは公開しません。
[2011/06/08]迷惑コメントが多くあったため、やむなく、コメントを承認後公開することとしました。

恐るべきパワーの持ち主になる

どんなことでも、10年間、たゆまずやれば、かなりの腕前になる。
ピアノだって、10年、少しずつでも毎日練習すれば、ピアニストとは言わないまでも、かなりの腕前になるはずだ。
今、ピアノを一曲だけ、それなりの腕前で弾けるようになるレッスンが流行っているらしいから、ピアノも、案外簡単かもしれない。

私のように何百年もプログラミングをしていると(♪)、プログラミング言語自体は何でも同じだが、私は、アプリを作ることより、データ操作やデータ処理に関心があるので、VBAと、後、SQL言語が使えれば十分だ。
SQL言語といっても、ぱっと見て分からない複雑なものは書きたくないので、複雑なデータ構造を定義する時は、Accessで言うクエリー、SQL Serverで言うビューを、もっぱら使う。
そうそう。VBAが使えるようになったら、SQL Serverを使えるようになると良い。そうすると、ExcelやAccessを使って、巨大データベースを扱えるようになる。
そのために、少し、SQL言語も使えるようになれば良い。
このように、VBAは、Excel内で使うだけでも十分に強力だが、その先に無限の可能性があるのだ。
ちなみに、SQL Serverは、無償のExpress版でも、企業のそれなりのシステムでも、十分使える。実際、中規模の企業の基幹システムで使われていることも珍しくはない。
ましてや、個人用途や、ちょっとしたデータを使うアプリなら、大抵は余裕綽々だ。

世間的に認知されたものばかりではない。
超能力だって、10年、絶えず訓練すれば、必ず身に付く。
超能力と言っても、テレパシーやサイコキネシス、あるいは、念写といった、あまり実用的でないものより、『エル・カザド』の、私の気に入りのキャラクター、エリスが使う魔法のようなものが良い(いきなりアニメの話で恐縮だ)。
エリスの力は、素粒子(電子等)の動作を支配するというよりは、最新の知見によれば、素粒子と意思の疎通を行って、動いていただくというものだ。
それは、ある程度、量子力学的にも可能性があると思うが、おそらく、実際に可能だ。
だから、希望の状況(ただし、欲張らずに)になるよう、空間に偏在するエネルギーに願ってみると良い。
元々、人間は、そんなことが出来る能力があるので、コツを掴めば、割と出来るようになる。
名人になるには10年かかるが、毎日、楽しみながらも弛まずやれば、案外に早く出来ると思う。











ITスキルほど有り難いものはない

ITスキルは本当に良いものだ。
ルー・テーズ(史上最高のプロレスラー)のダブル・リストロック(関節技の1つ)のようなものだ。
テーズは、この技の達人だったからプロレスで大成功し、この技を教えてくれた師のジョージ・トラゴスに終生感謝していた。
アントニオ猪木さんだって、この技を磨いていたから、パキスタンでアクラム・ペールワンに決闘を挑まれて切り抜けた(ゴッチから教わった喧嘩技も役に立ったらしいが)。

ただ、プロレスラーでもダブル・リストロックが上手くない者がいるように(技自体は、私でも出来る簡単なものだ)、システムエンジニアでもITスキルが高くない者もいる。いや、マジで。
しかし、ITスキルがあれば、極端に言えば働く必要もなく、今後の世界を自由に生きていける。
それで、どんなITスキルがあれば良いかというと、あまりにベタ(ありきたり)だが、マイクロソフトExcelだと思う。
JavaやPythonが出来たって、問題解決の際、これらが役立つことはそうはない。しかし、Excdelなら、「バカとハサミ」のようなもので、使いようによっては必殺の威力を持つ。
だから、Excelを徹底的に使えるようになれば良いし、マクロプログラミング(VBA)まで出来れば、もはや企業等の整合騎士(ソードアート・オンライン参照)だ。
以前、チームラボの猪子寿之社長が、NHKの番組で、「電卓持ってるやつがいたらクビにするかもしれない。Excel使うでしょう」と言われていたが、たかが計算でも、Excelは付加価値を与える。
私は、ディープラーニングのAIも構築するが、そのためにもExcelの有用性は大きく、実際、ExcelはAIの開発現場で最も使われているという調査もある。
ただ、私の場合、昔から大きめのデータを使う必要がある関係上、マイクロソフトAccess(およびSQL Server)の方を使い、Excelはやや不慣れだが、普通は、Excelで十分だ。
出来れば、Excelとマクロプログラミング(VBA)が出来るようになればと思う。

もう1つ、意外・・・というほどかどうかは分からないが、HTML(Webサイトを記述するマークアップ言語)が役に立つ。
私は、CSSや、ページ内でのJavaScriptは、HTMLの一部と見なしてしまっている。
HTMLは出来るのに、CSSやJavaScriptが出来ないというのは気合不足・・・いや、信念がない。「出来る」と思えば出来る・・・って、スポ根か(笑)。ここは、『まちカドまぞく』を見て、重いコンダーラを引っ張るつもりで頑張っていただきたい(分からない方、御免なさい・・・)。
つまり、HTMLが分かれば、Webの仕組みが分かり、Webの仕組みが分かれば、インターネットが分かる。それに、HTMLは、あっちこっちで妙に役に立つ。
そして、インターネットに通じれば、極端に言えば、働く必要もない(まただ。筆者は働くのが大嫌いである)。

もちろん、英語や中国語やアラビア語や、簿記や経理、自動車整備や法律など、興味がある分野があれば、それを徹底的にやれば良い。
だが、学校内の学問は、博士の中でもトップクラスでもない限り、社会ではあまり(私はさっぱりと思うが)役に立たないものだ。
その中で、ITはちょっとしたことから、命がかかることでも役に立つ有り難いものである。
確かに、ITを凌駕する魔法の道もあるが、ITは楽な方法なのであると思う(厳しい道も楽しいが)。









【広告】Excel VBA エキスパート認定への道 ~マクロ初心者から資格試験レベルへ &7つの自動化 マクロ を作る15時間


【広告】誰でもわかるMicrosoft Access 2019

プログラミングにシビれる

あなたは何にシビれるか?
最近のアイドルは、男性も女性も、レベルが高くてなかなかシビれると聞く。
単なる食欲や性欲をそそるものに対しては、興奮はしてもシビれることはない。
だから、シビれるアイドルは、パフォーマンスが高いのだと思う。
人間は、パフォーマンスに対してシビれるのだ。
辞書によれば、こういった「痺(しび)れる」の意味を「強烈な魅力に我を忘れ、うっとりする」としているが、なるほど、的確である。

私は、高校生の時、あるハードボイルド風の漫画の一場面にシビれたことがある。
「ハードボイルド」に対しては、Wikipediaになかなか適切な説明があった。それは、
「感傷や恐怖などの感情に流されない、冷酷非情、精神的・肉体的に強靭、妥協しないなどの人間の性格」
である。
この中の冷酷はあまり当てはまらなかったが、ハードボイルドな男性主人公が自動車(高性能車)を運転していたら、別の車がつけて来ていた。明かに敵であった。
主人公はまこうとするが、相手の車はつけてくる。
主人公は、こうつぶやく。
「マズいな。凄い腕前だ」
私は、この一言にシビれた。
このハードボイルドな主人公を焦らせ、「凄い腕前」と評され、「マズい」と言うほどに恐れさせた敵のドライバーに対してだ。
男なら(女でもかもしれないが)、そう言われたいものである。
また、敵のドライバーの腕をすぐに見抜いたハードボイルドな主人公にも、なかなかシビれた。

私も、プログラミングの際は、「シビれる」プログラムを書きたいと思っていた。
ただし、必ずしも、プログラミングテクニックだけではなく、発想や目的を含めてである。
別に難しいプログラムではないが(むしろ簡単)、「モンティ・ホール問題(※)」という、数学ゲームの難問をプログラムで証明した時は、ちょっとシビれた。
「モンティ・ホール問題」を数学的に証明したって、その証明を人間は直感的に分からないので、ちっともシビれない。
この「モンティ・ホール問題」を、西尾維新さんの『物語』シリーズの中の『終物語』で、中学1年生だった主人公、阿良々木暦(あららぎこよみ)が、同い年位の可愛い女の子に教わるのだが、暦は、少女の説明を聞いて、「なるほど!」と納得し、喜んでいたが、私は、それはないと思う。
言葉で聞いたってちっとも分からないものなのだ。
「モンティ・ホール問題」で、数学者が本1冊書いていることがそれを示している。

※モンティ・ホール問題
閉じられた3つのドアの中の1つに豪華景品(新車等)があり、プレイヤーは景品があるドアを当てれば景品がもらえる。
ただし、プレイヤーがドアを選ぶと、ホストは、残りの2枚のドアから、景品が入っていないドアを開く。
ここで、プレイヤーが選ばず、ホストも開けなかったドアを「第3のドア」とする。
プレイヤーは、最初の選択のままでも、「第3のドア」に選択を変更しても良い。
プレイヤーは、ドアを変更すべきか、すべきでないか?

数学が分かる者ほど、分からない説明をする。
なぜなら、その者は、自分でも分かっていないからだ。
その者は、「モンティ・ホール問題」を自分で解けた訳ではなく、「モンティ・ホール問題」の誰かの説明を真似して言っているだけだからだ。
「モンティ・ホール問題」は、人間の頭では解けない。
なぜなら、初めて「モンティ・ホール問題」の解答が発表された時、数学者や博士号を持つ科学者による多数の批判が寄せられたからだ。
だから、偉そうに「モンティ・ホール問題」の解説をする者も、自分で解けた訳では決してなく、しかも、自分でも納得していない。
確かに、自分で「モンティ・ホール問題」を1万回でもやると分かるかもしれないが、そんなことは出来ないし、仮に、1万回、本当にやっても、やはり分からない。
だが、プログラムなら、理屈は分からなくても、はっきり分かるのである。
ちなみに、「モンティ・ホール問題」の答は、「ドアを変更する」だ。それで、正解率は2倍になる。
最近、AIの本を書く都合で、「モンティ・ホール問題」のシミュレーションを作り、プログラムが正解を的確に示すのを見て、自分でちょっとシビれた。
ところが、AIは「モンティ・ホール問題」の原理を割と簡単に理解する。これにも、なかなかシビれた。
シミュレーションプログラムは、データがすぐに見えて自在に使えるExcel VBAで作った。
本の出版は来年で、追々報告する。









【Udemy広告】ここから始める!本気でExcelマクロ(VBA)を学びたい人のための基礎講座【超入門編】

あらためてVBAを語る

私が、特にコンピューターの専門家以外の人によくお薦めしているプログラミング言語VBAについて、あらためて易しく(そして出来れば優しく)お話する。
VBAは、ビジュアル・ベーシック・フォー・アプリケーションの略で、Excel(エクセル。表計算ソフト)、Access(アクセス。データベースソフト)等の、マイクロソフト・オフィス(Microsoft Office)製品である業務用ソフトウェアに組み込まれたプログラミング言語だ。
Word(ワード。ワープロソフト)やPowerPoint(パワーポイント。プレゼンテーション作成ソフト)にも組み込まれているが、VBAが最も使われるのはExcel、そして、Accessである。というのは、VBAは、データ処理に強いからだ。

VBAは、中身は、マイクロソフトの代表的なプログラミング言語の1つであるVisual Basic(ビジュアル・ベーシック。以降「VB」と略記)なのであるが、VB自体は、2002年以降は、VB.net(ブイビー・ドットネット)と呼ばれる、新型言語になり、2008年以降は、VB.netではなく、VB2008とか、VB2017といったように、発売開始年が付くようになった。
VBAは、2002年以前の、VB6.0という、旧式のVBとほぼ同じである。
ただ、実を言うと、VBは、VB6.0で十分であり、その頃は、最も使われたプログラミング言語であったが、VB.net以降は人気がなくなっている。
そもそも、VB.net以降のVBは、Java(ジャバ)や、Javaに対抗してマイクロソフトが作ったC#(シー・シャープ)と肩を並べる新しいプログラミング言語になったと言えば聞こえは良いが、それなら別にVBでなくても良いので、ユーザーがC#、あるいは、Java に流れたのだろう。

VBAは古いとは言え、実務で使うのに不足なことは全くなく、むしろ、VBAの全体を使いこなしている人なんかいない。
VBAの最大の特徴は、ExcelやAccessの機能をプログラミングで自在に使えることで、その有益さは計り知れない。
逆に言えば、プログラミングの際、ExcelやAccessが機能として持っている部分はプログラミングしなくても、その機能が簡単に使えるのである。
もっと詳しく言うと、実務的にデータ処理をする機能は、通常のものはExcelに、高度なものであればAccessに全て備わっているし、最もプログラミングに時間がかかるインターフェース(操作部分)も、これらのソフト自体に高度に備わっているのであり、そんなデータ処理、インターフェース機能を「呼び出す」だけでプログラミング出来る便利さは、他のプログラミング言語では全く望めない。
もちろん、VB20XXやC#、あるいは、Java等は、VisualStudioやEclipseという、開発環境ソフトで使うことが多く、それらにはインターフェース作成機能はやはり用意されているのだが、VBAでは、操作性で格段にユーザーフレンドリーなExcelやAccessのインターフェースが使えるのだから、比較にならない。
それを考えると、私のようなプロでも、ExcelやAccessで済むなら、これで作る方が効率が高いのである。

VBAの・・・というよりは、これがExcelやAccessに組み込まれたものであるということから来る欠点は、まず、Webやスマートフォンアプリの開発が出来ないこと、そして、多人数での共同開発が出来ないことだ。
これは、超大規模プロジェクトでは、そもそも、最初から使えないことを意味する。
しかし、実務的なデータ処理をWebやスマートフォンでやる必要は全くなく、シンプルなWindowsアプリでやるのが圧倒的に効率的だ。
超大規模システムは、それはそれで必要なところで使えば良いのであり、日々のフレキシブルな処理はExcelやAccessでやった方が効率的だ。
そして、大規模システムと言ったところで、よほどのものでない限り、データベースさえSQL Serverやオラクル、あるいは、MySQLみたいなものを使えば、ほとんどの場合、Excelや、特に、Accessで十分である。
まあ、開発会社としては、ExcelやAccessでは高額受注出来ないので、あまりやりたくないという事情がある。

ExcelやAccessの「Webで使えない」「多人数で開発出来ない」という欠点を解消したと主張するものとして、ジャストシステムのUnitBase(ユニットベース)やサイボウズのkintone(キントーン)があり、単純なパターンに嵌(はま)ったことであれば、使えないこともないと思うが、何でも自由自在に簡単にやれるExcelやAccessの使い勝手の良さとは別の道を行くものだと思う。
費用もかかるし導入もややこしい。
そもそも、UnitBaseとkintoneのどちらを選べば良いか分からないし、30年揺るぎなく続くExcelやAccessのような安定性はないと思う(いつなくなるか分からない)。
言い方は悪いが、企業の担当者や決裁者が言いくるめられてUnitBaseやkintoneを導入することも多いのだと思う。
あくまで私の考え方かもしれないが、業務で本当にこれらを導入することのメリットはあまりないと思う。
それで言えば、G Suite(Google Apps for Businessの新型)で、Apps Scriptというプログラミング言語を使えば、Excel+VBAと同じようなことが出来る。
しかし、Excel+VBAの使い易さとは比較にならないし、そもそも、G SuiteはWebのものであるが、いかに高速回線が普及したとはいえ、日常の仕事をネットを介してやるのは、まだまだシンドいのが事実である。
私は、少なくとも、後10年は、ExcelやAccessを使うのではないかと思う。そして、WebではG Suiteを使おうと思う。








死にたかねえのはお互い様

職安(職業安定所)の正式名称が「公共職業安定所」で、これが「ハローワーク」と同じものだとは、私は知らなかった。
「ハローワーク」という名前は1990年から使われているらしい。
ハローワークで「VBAの達人です」と言ったら、就職先を紹介してくれるのか興味深いが、よくは分からないが、特技がある人は、あまりハローワークに行くことはないのではと思う。
というのは、民間の職業斡旋システムの方が良いように思えるし、偏見かもしれないが、ハローワークと言うか、職安に行く人って・・・その・・・もう駄目な人って観念がある。映画や漫画の影響かもしれないがね。

昔、金鳥のCMで・・・と書きかけたが、私は「金鳥」は会社名だとずっと思っていたが、金鳥はブランド名で、社名は「大日本除虫菊株式会社(だいにほんじょちゅうぎく)」とは全く知らなかった。確かに、覚えるのは難しい名前なので、「金鳥」のブランド名を前面に出したのだろうと思う。
それで、その金鳥の昔のCMで、いかにも駄目そうな中年の男性が失業し、そのまた駄目そうな太った妻が、「職安、行っといで」と言い、夫は返事をせずに黙っているというものがあったと思う。つまり、夫は、特技が何もないので、行っても良いことがないのは分かっているのだろう。

職安の、こんな有名な笑い話をご存知かもしれない。
職安の相談員に「何が出来ますか?」と聞かれた中年男性が「部長が出来ます」と返事をするものだ。
言うまでもなく、「部長が出来ます」(課長でも、専務でも同じだろう)というのは、「何も出来ません」と同じである。
良く言えば、「部長が出来ます」はゼネラリストなのであるが、ゼネラリストとして能力が高ければ良いのだが、そんな人が職安に来るはずがない。
昔の大企業では・・・いや、今も多いと思うが、あらゆる部署を万遍なく経験させるというのが、標準的な社員育成方法だった。
これに関しては、夏野剛さん(ドワンゴ社長)と猪子寿之さん(チームラボ社長)の2013年の対談で、沢山の大企業の取締役をやり、今もやっている夏野さんは、それはもう時代遅れで、「100人の普通のサラリーマンが1人のオタクに負ける時代」と言っておられたのが印象的だ。

ゼネラリストの部長に負けず厄介なのは、元教師だろう。公立校の教師であれば、問題を起こさず、勤め続ける限り、今は高収入で最も安定した職業であるが、いったん失業したら、「何が出来ますか?」と問われたら、「教師が出来ます」という、部長並かそれ以上の笑い話になってしまう。
そもそも、公立学校の教師で失業するなど、余程のことと思える。
塾や予備校の教師では、優秀でなければ失業することも多いだろうが、これらの教師(「講師」と呼ぶ場合が多いように思うが)が失業しても、やはり、「何が出来る?」「教師が出来る」(「教師しか出来ない」=「何も出来ない」)という笑い話になる。
予備校には優秀な教師も多いと思うが、激務に耐える体力や、生徒に好かれる若い間は良いが、歳を取ると、厄介な職業ではないかと思う。こういうのを「つぶしが効かない」と言うのだろう。

とはいえ、私は、ハローワークで、「C言語出来ます」「PHP出来ます」、あるいは、「システム設計出来ます」なんて言う気にならない。
立派な特技と思ってくれるかもしれないが、早い話、そんなシンドい仕事、もうしたくない(笑)。
それらの仕事は、「製作」と「営業に近いサポート」の2つに業務が集中し、いずれも楽しいものではない(SE志望者よ、よく聞け。ただし、偏見は持たないように)。
「製作」だけなら、好きな人は楽しいかもしれないが、実際は、サポートというか「苦情受付」「無理を聞く」という部分が大きく、神経をすり減らし、憂鬱になるだろう。
そこにいけば、「VBA出来ます」というのは、仕事や人との距離が近く、楽な部分が大きいのである。

「Excel出来ます」とか「Word出来ます」というのは、資格があったところで、運転免許持っているというのと何ら変わらない。出来て当たり前だ。
「Access出来ます」は珍しいが、本当にAccessが出来るというのは、システム設計やVBAが出来ることを指す。
だから、「ExcelとVBA出来ます」と言う(言える)のが、一番良い。

まあ、本当は、ハローワークなど利用しない方が良いのではと思う。昔とはかなり変わっているのかもしれないが。
とはいえ、いくらホリエモンが「僕達はもう働かなくていい」みたいなタイトルの本を出してベストセラーになっていても(書店でチラと見た)、現実的に絶対に「僕達は働かないといけない」。
私は、最下層からスタートしたので、「つぶしの効く技能」というものに強い関心を持ち続けた。
イチローのような超人的野球選手だって、引退すればただの人。彼はたまたま、マリナーズの要職を得たが、スポーツのスーパースターも、引退したら、つぶしが効かないどころか、「何が出来ますか?」と聞かれたら、「野球が出来ました」という、笑い話になってしまうのである。

トータルで、そして、バランスを考えると、今は、「VBAが出来ます」が本当に良いと思う。ある程度、性格が良く、常識があるのは必須であるが。
「ヒーラーです」「スピリチュアルカウンセラーです」と堂々と言えれば素晴らしいが、本物なら、求めずとも仕事が押し寄せているはずである。
いや、実は、それが最高であるが、まず、自分を癒し、自分を救えることが必要である。








↓応援していただける方はいずれか(できれば両方)クリックで投票をお願い致します。
人気blogランキングへ にほんブログ村 哲学・思想ブログ 人生・成功哲学へ
プロフィール
名前:Kay(ケイ)
・ソフトウェア開発技術者
・初音ミクさんを愛す


当ブログは第1期ライブドア奨学生ブログです。
最新コメント
記事検索
ブログバナー&Mail


メールはこちらへ
PV since 2010/09/08
  • 今日:
  • 昨日:
  • 累計:

人気ランキング参加中
人気ブログランキングへ
にほんブログ村 哲学・思想ブログ 人生・成功哲学へ
にほんブログ村 哲学・思想ブログ 思想へ
にほんブログ村 メンタルヘルスブログ ひきこもりへ
IT学習










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

タグクラウド
QRコード
QRコード