未経験プログラマーの雑記

元個別指導塾運営者、現プログラマーによるブログです。教育や自身の学びについて発信していきます。

VBAでChromeを操作する方法を誰にでも分かるように解説1(selenium使用の準備まで)

珍しくがっつりプログラミング関連の内容です。

自分の備忘の意味も込めて、VBAからSeleniumを使用して、Chromeを操作するための準備とサンプルとなるコードを画像付きでまとめていきます。

※Windows10を使用しているので、他のOSで同じようにはいかないかもしれません。

 

1.Selenium basicをダウンロード・インストール

まずはVBAChromeを操作するために必要なSelenium basicを以下のページからダウンロードします。

florentbr.github.io

ページの真ん中あたりのDownloadからRelease pageというリンクをクリックします。

f:id:bottea:20201003223904j:plain


すると最新版のSeleniumのダウンロード画面に遷移するので、exeファイルをクリックしてダウンロードします。

f:id:bottea:20201003224115j:plain

 

ダウンロードが終了したらそのexeファイルを実行し、インストールします。

基本的には何も気にせずインストールして良いと思いますが、僕はOperaなど普段使用していないブラウザのWebDriverは不要だと思ったので、チェックを外しました。

 

以下の画面まで来たら、Install folderを確認し、メモ帳かなにかに控えておいてください。後で少しフォルダ内を変更します。

控えたらインストールボタンを押下し、完了したら次の作業に移ります。

f:id:bottea:20201003224920j:plain

 

2.自分が使用しているChromeのバージョンに合ったDriverをダウンロードする

Selenium basicでChromeのDriverをインストール済ですが、自分が使用しているChromeのバージョンに合っていないとうまく動かないようです。(試してませんが)

まずはChromeのバージョンを確認します。

 

Chromeの画面右上、3つ点が縦に並んだボタンをクリックし、ヘルプからGoogle Chromeについてをクリックします。

f:id:bottea:20201003225923j:plain

 

すると以下のようにChromeのバージョンを確認出来るので、上2桁を確認してください。僕の場合は85ですね。

f:id:bottea:20201003230126j:plain

 

それではこのChromeに対応したDriverを、以下のページからダウンロードしましょう。

sites.google.com

 

f:id:bottea:20201003230437j:plain

上記のChromeDriver 85~のリンクをクリックすると、以下のようなページに遷移します。

f:id:bottea:20201003230626j:plain

僕の場合はWindows10の64bitなのでwin64が必要かと思いましたが、win32で問題ないらしいです。最初「64bit版が無い!」とちょっと焦りましたが。

 

ここでダウンロードしたzipファイルを展開すると、中に「chromedriver.exe」というファイルが入っているので、それを控えておいたSeleniumをインストールしたフォルダの中に移動し、上書きします。

f:id:bottea:20201003231312j:plain

上記画像の左が、「使っているChromeに対応したDriver」で、右のSeleniumBasicに既に入っている同名のファイルは、「使っているChromeに対応していない可能性のあるDriver」です。

左のファイルを右のフォルダにそのまま移動させ、上書きしましょう。

 

3.VBASeleniumを使えるように設定する

あとはEXCELなどでVBEを開き、参照設定からSeleniumを使用出来るようにしましょう。

f:id:bottea:20201003231853j:plain

f:id:bottea:20201003232130j:plain

上画像のSelenium Type Libraryのチェックを入れて、OKを押下します。

 

ここまでで事前準備完了です!

次の記事で実際にSeleniumを使ってChromeを操作します。

 

まだまだ初心者レベルですが、自分なりにプログラミングの学習方法などをまとめたりしているので、良ければ他の記事も見ていただければ幸いです。

 

最後まで読んでいただきありがとうございます。

クラウドソーシングでの副業経験振り返り

 

 

 

以前こんなツイートをしたところ、思っていたよりも反応があったので、改めて僕が副業でやる上で考えたことと、現時点のスキルセット的なものを紹介したいと思います。

 

副業履歴

冒頭のツイートの通り、僕は副業を始めてまだ1年目です。

本業以外で収入を得るために動き始めたのが2020年1月。副業には興味がありつつも、それまでは自分に何が出来るのかすら思いつかず、まして本業だけでもいっぱいいっぱいだったため、実際に行動には移していませんでした。

 

ですが、2019年2月からプログラミングを学習し始め、2019年8月にプログラマーに転職したことで、

・体力的、時間的な余裕

・プログラミングのスキル

の2つを同時に得ることが出来、ある程度仕事にも慣れて「何か新しいことをやろう」と思って始めたのが、副業でした。

 

副業の方法として選んだのは、主にクラウドソーシングのココナラというサイトです。

クラウドワークスやランサーズなど、似たようなクラウドソーシング系サービスは多数ありますが、僕はココナラを選びました。理由は後ほど説明します。

 

ココナラでは

・公開依頼の受注

・顧客からの直接依頼、受注

・オリジナルサービスの販売

 

の2つが主ですが、僕の場合は最初は完全に「公開依頼の受注」、現在は「顧客からの直接依頼、受注」が主になっています。

以下が僕のこれまでのココナラでの受注件数と金額です。

 

1月 6件 10876円

2月 2件 9425円

3月 4件 9425円

4月 1件 2900円

5月 3件 4350円

6月 1件 7250円

7月 0件 0円

8月 1件 7250円

9月 1件 2900円(9/26時点)

計 18件 51476円

 

ちなみに、上記は収入としての金額です。クラウドソーシングでは基本、サイトに手数料を取られるので、その手数料を引いた後の金額が上記の通りです。

 

「え?今年13万とか最初に言ってなかった?」

と思われそうですが、ありがたいことにココナラ以外で完全に個人としてもお仕事をして、報酬をいただいたこともあるので、それを含めると現時点で約11万円の収入になっています。

 

特に1月は「数をこなそう!」としているのが丸わかりですね笑

2月以降は基本多くて週1件くらいのペースで受注していたように思いますが、1月、2月が公開依頼にとにかく「やらせてください!」と仕事を取りに行ったのに対し、3月以降はほぼ公開依頼への応募はせず、これまでにお仕事をいただいた方から直接お声掛けいただいてのお仕事です。

 

中には1時間ほどで終わるような簡単な依頼もありましたが、土日ほぼ丸々使ってようやく終えたものもあったりするので、今でこそ多少ましですが、これまでの平均で時給を出すと、多分せいぜい500円とかだと思います笑

 

受けてきた依頼は基本「EXCELに関するもの」です。その理由を含め、次に僕のスキルセットを紹介します。

 

スキルセット

1.EXCEL関数を使って多少複雑な計算式を自力で作れる(凡人レベル)

2.VBAPythonの経験(副業開始当初で計1年ほど)

3.SQLの経験(副業開始当初で実務4ヶ月ほど)

 

クラウドソーシングで仕事を受注するのに活かせるスキルと言えば、僕はこの程度しか持っていません。だからこそ、EXCELに関するものくらいしか、受注出来ないんですね。

ただ、凡人レベルでもEXCELを扱えることで、「EXCELで困っている大多数の人」のうち、ごく一部の人は僕レベルでも助けられました。

EXCELを使っている人が多いからこそ、レベルがそこまで高くなくてもなんとかなっている、という状態です。

裏を返せば、だからこそ単価は低くなりがちです笑

依頼を受けつつ、日々勉強しています。

 

時々ツイッター

「副業で稼ぐためにプログラミングを始めたが、何が出来るようになれば良いのかわからない」

というような内容を目にします。

 

でもこれって、考えてもしょうがないことだと思っています。

「お金を稼げる」ということは、「お金を払う人がいる」ということで、じゃあその「お金を払う人」が何を求めているのかを知り、それに応えないといけないわけですよね。

 

じゃあどんなことを求めているのかを「調べる」のが先で、「考える」のはその後かなと。

 

試しにクラウドソーシングで依頼を眺めてみて、「この内容なら興味があるし、勉強すれば出来るかもしれない」と思うことを見つけて、そのスキルを伸ばしてみるのが副業開始の近道かなと思います。

 

副業をする際の考え方

自分なりに、「お金を稼ぐため」に考えたことを書きます。

僕は副業を始める際、他のクラウドソーシングサイトではなくココナラを選びました。理由は以下の通りです。

  1. 最低金額が高めに設定されている
  2. 自分に出来る依頼が多かった
  3. 競合がそこまで多くない
  4. 自作サービスの販売も出来る

1と3により、クラウドワークスは僕の中で最も選びにくいプラットホームです。

似たような依頼であっても、ココナラでは最低1000円という下限の金額が設定されていますが、クラウドワークスでは数十円だったり。簡単な依頼には競合が数十人おり、自分が選ばれる可能性もかなり低くなります。

 

ではランサーズはというと、依頼内容のレベルが割と高めな印象を受けます。

その分報酬も高いものが多いですが、こちらも競合が多く、勝てるイメージが湧きませんでした。

 

僕がもし、プログラミング言語にもっと詳しく、自力でアプリを作ったりシステム開発が出来るような人間であれば、ランサーズを選ぶかもしれません。

ココナラは大規模で専門的な依頼が少ないためです。

また、ランサーズは長期的な契約をする依頼形式もあるため、長く安定して報酬を得たい場合も、ランサーズが良いかもしれません。

 

「自分の場合、どの場所なら稼げるか」を考えた時、それぞれのプラットホームを実際に見て、上記のように判断しました。

 

そこまで深く考えたわけではありませんが、個人的には良い判断だったんじゃないかと思います。

 

あとは、途中までは嬉しい誤算だったものの、途中から意識的に考えているのが、「リピーターを作るために考えること」です。

ココナラの場合、単発の依頼を受けて報酬を得て終了、という流れです。

公開依頼を受注する形で稼ごうと思うと、18件依頼を受けるために50件くらいの依頼に応募しないといけないかもしれません。(僕が新規の依頼に応募する際の受注率は大体30%くらいなので)

それを特に気にもせずやるつもりでしたが、意外なことにリピーターが何人も出ました。

その結果、18件の依頼を受けていますが、公開依頼に応募した数は30件ほどです。

依頼を探し、応募する文章を書く時間も馬鹿になりませんし、何よりはじめましての人に対してコミュニケーションを取ったりするのも結構大変ですよね。

 

リピーターを作ればそうした労力を省けるので、そのためにも相手の期待を超える仕上がりにして、「またどうかお願いします!」という言葉をいただくようにしています。(実際そう言ってくださった方はほぼリピートしていただけます)

サービス過剰になりすぎない程度に

「こんな機能も付けておきました」

と納品時にアピールしたり、

「ご希望の内容であれば、こういう風にした方がより使いやすくないですか?」

と提案したり。

 

それを喜んでもらえるのが、副業をしている一番のモチベーションになっていたりします。(もちろんお金もほしい)

 

今注意していること

個人的には、前職から異業種に転職し、第一子の子育てもあり、家事もして、そんな状況で始めた副業だったので、月平均1万円程度の収入が本業以外でも作れたことについて、大満足です。自己評価で言えば100点です。

 

ただ、今注意しているのは、「価格を下げすぎない」ことです。

リピーターがいて嬉しい反面少し気になるのは、初期に低価格で引き受けた方の僕への依頼価格がかなり安くなりがちなことです。

 

初期は特に実績を作ることしか頭になく、リピーターがつくとは思ってもいなかったので・・・。

 

もちろんあまりにも安すぎる場合は交渉しますが、最初に安く設定して引き受けてしまった自分にも否があるので、ある程度は受け入れてしまっている状態です。

 

今後、公開依頼に応募する場合は必要になる労力を考え、適正と思う金額で受注します。

その上でリピーターが付くようなものを提供出来なければいけない、というのが最近の意識です。

 

…なんだか話題がそれてきましたが、これから副業を始めたい人のためにまとめると、

  1. 実際の依頼内容を見て、自分のスキルを磨くこと
  2. 自分のスキルで稼げる場所を、出来るだけ自分の目で見て考えること
  3. 最初は実績作りのために仕方ないが、出来るだけ価格競争はしないこと
  4. リピーターを作るための工夫をすること

このあたりが大切かなと思います。

 

最後に

ここまで読んでいただきありがとうございました。

僕の場合、現状副業の収入は時給換算すると500円程度だと思いますし、平日寝る前であったり、土日の自由な時間を小銭稼ぎのために費やしていると思うとなかなか悲しくなりそうですが、

 

個人的には

  1. 自分のスキルアップのための投資
  2. 自力で稼ぐことの面白さ
  3. お客さんから感謝される喜び

あたりがモチベーションになり、誰かに強制されているわけでもなく継続することが出来ています。

 

VBAを1年程度経験してから始めたとは言え、副業を始めた当初は本当に基礎的なことしかわかっておらず、コードを書くのも下手でした。どの程度の内容なら自分で出来るのかも分かりませんでした。

 

それを思うと、副業をしていたからこそ出来ることは確実に増えましたし、「次はこういうことに挑戦してみたいな」という次のステップを考えられるようになりました。

 

普通なら本業の経験を副業に活かす人が多そうですし、僕もその部分があるのですが、逆に副業の経験を本業に活かせたことが何度もあり、そういう意味でも、やってみて良かったなと思っています。

 

これからますます副業ブームの流れが激化して、ココナラも供給過多になりそうですが、そうなる前に自作コンテンツを個人で販売出来る程度になれるよう頑張ります。

 

一応自分なりに、これまで9ヶ月間ほど副業をやってきて考えたことなどをまとめましたが、「もっとここを教えてほしい」「こういう部分に言及してほしい」などありましたら、コメントやツイッターのリプライなどでぜひ教えて下さい。

 

最後まで読んでいただきありがとうございました。

教育業界の社員が全然成長せず退職するの面白いですよね

今回は珍しくプログラミングとは全く関係なく、教育について思いつくままにつらつらと書いていきます。

プログラミングとか転職活動についての記事をご希望の方は、過去の記事を読んでいただければと思います。

 

なんでまた急に教育についてかというと、特に何かきっかけがあったわけでもないんですが、もともと教育業界に身を置いていたこともあり、今でも教育については関心があり、ふとした拍子に考えているんですよね。

学校教育についてももちろん考えるんですが、それだけでなく会社での人材育成とか、そういう意味の教育にも興味があります。

 

前職の塾会社では日本の将来を担う人材を育てることが仕事であると偉そうに言っておきながら、自社の社員すら満足に育っていなかったのが笑えますが、実際のところ、会社が自社の社員を成長させるのって難しいですよね。

 

学校教育でもそうですが、結局優秀な人は「人から言われなくてもやる」「指示待ちではなく自主的に」が共通点ではないかと思います。会社でもそうですね。言われたことしかやってないけどやたら評価されてる、という人はあんまりいないんじゃないかと思います。

 

でも、そういう優秀な人たちも、最初から何も言われずに自主的に動けたかというと、全員が全員そうではないのではないかと思います。

ただ、間違いなく言えるのは、「まだなんの経験も積んでない人が、座学的に研修を受けたところで、そういう自主的に動ける人材にはならないよな」ということです。

 

僕もまだ会社としては2社しか経験していないですし、1社目は一応研修と呼ばれるものはあったものの、今いる2社目はそもそも研修がなかったので、会社で実施されている研修がどんな内容か、平均的にどんなものなのかは正直掴みきれていません。

 

ただ、ツイッターやテレビなどで流れてくる、マナー講座的なものや、体育会系の権化みたいな汗と涙の研修合宿みたいな、前時代的で100%精神論みたいな研修もなくはないんだろうなと思います。

実際前職の研修では合宿的なことありましたしね。深夜まで次の日の研修の準備して、朝はやくから研修して、みたいな。

正直何したかとか全く覚えてないんですけどね。

全否定するつもりは無いんですが、もっと他にやることあったよな、と今になると思います。

 

話がそれましたが、「自主的に動ける人を作るにはどうするか」が人材育成においてすごく大切なことは、自分自身学生、社会人を経験し、教える立場にもなっていたのでとても実感しています。

 

もちろん「自主的に動け!」とか言っても人は動かないですよね。

じゃあどうすれば良いかといえば、万人に通じるかはわかりませんが、自主的に動いたほんの些細な点を見つけて、認めてあげることが一番かなあというのが今の所の結論です。

他人が出来るのって、それが限界だと思うんですよね。

いくら自主的に動くことの重要性を説いたところで、

「都合の良いように動く人がほしいだけだろ」

と思うはずです。(僕が特別ひねくれている説もあり)

ただ、自主的になかなか動かない人の中で、100%指示されたことしかやらない人ってあんまりいないと思うんです。

…いますか?……あ、その人は、もう、一旦置いておいてください。無理です。

 

ほぼほぼ指示通りにやってることでも、ちょっとだけその人なりに工夫してやってくれたとか、言ったこと以上のことに気付いて動いてくれたとか、そういう部分をしっかり汲み取って、声掛けをするっていう、ある種の報酬があるからこそ、動いた側も

「自分なりに考えたことをちゃんと見てもらえた」

「やったことが評価された」

となり、自主的に動くことのモチベーションになるわけですね。

 

僕は塾で働いていたとき、何も言っていないのに授業時間にしっかり席に座り、勉強道具を準備し、宿題にしていたノートを開いている生徒に対して

「ありがとう」

とよく声掛けをしていました。

普段は授業が終わったらそのまま帰る生徒が、机の上に散らかった消しゴムのカスを捨てて机をきれいにしてくれた時とかもそうですね。

 

自主的に動くことって、大人でもやっぱり難しいですし、何をしたら良いか気付け無い人も本当に多いと思います。僕自身、自主的に動くのはあんまり得意ではありません。

 

でも、他の人が何かを頼んでもいないのにしてくれた時に、それに気付く努力は、全ての人がすべきだなと思います。

そうすることで自主的に動く人がどんどん増えればその人たちは成長しますし、その人達の行動を見ることで、「あ、こういうことに事前に気付いて動けば確かに助かるな」と自分自身も参考にすることが出来ます。

 

そしてこういう意識を常日頃からしておき、それを積み重ねていくことこそ大事だなと思うので、一時的な研修合宿とか、月に1回のマナー研修とか、個人的には好きじゃないです。

 

もし研修を受けるなら、EXCELの研修とか受けたいですよね。本当はプログラミングの研修とかが非IT企業でもあれば良いなと思いますが、ちょっとハードル高いので、EXCELの基礎的な使い方(関数の使い方とか)くらいはしっかり研修してあげるべきな気がします。

 

そういう研修を時前で出来ないなら、外部の講師とか呼べば良いですよね。

『すごい改善』さんの講座とか会社の費用で受けられるとかならめっちゃ受けたいです。(そのくらい自費で受けろって言われそうですけど)

sugoikaizenonline.com

 

まとまりが無くなってきましたが、人材育成って本当に大事だし、一朝一夕でなんとかなるものではないので、しっかり長期的に計画を練って、その目的を研修する側も、研修を受ける側も正しく認識した上で実施するべきですね。

じゃないと時間の無駄です。

 

人様の成長についてどうこう語る前に、僕も自分自身をしっかり磨いていこうと思います。

というわけで基本情報技術者試験に向けての勉強頑張ります。

 

最後まで読んでいただきありがとうございました。

これからプログラミングを始める人に勧めたい最低限のモノ(こんなんでもプログラミング出来ます)

今回は、自分がプログラミング学習を始めた頃から使っているパソコンと、ディスプレイについて紹介していこうと思います。

 

プログラミングを始めるには高額・高性能なパソコンが必要と思われている方もいると思いますが、僕の使っているパソコンのスペックでもほとんどのことがストレス無く出来ています。

プログラミングの基礎を学ぶ程度であればこんなもんで良いのか、と参考にしていただければ幸いです。

 

ちなみに最近の作業環境はこんな感じです。

 

自宅の作業環境です

自宅作業環境

・パソコン

発売時期なんと2010年4月笑

CPU Intel Core i5 2.27GHz

メモリ 4GB

記憶容量 HDD500GB

ディスプレイは15.6インチ

 

というものを使っています笑

OSはWindows10をインストールし直したのですが、「さすがにちょっと動作が重すぎる」「起動に時間が掛かりすぎる」ということで、HDDを内蔵型のSSDに交換して使用しています。

 

 

正直HDDからSSDに変えてもさすがにパソコンが古すぎるし、大して変わらないのだろうと思っていたのですが、起動に1分以上は掛かっていたのが嘘のように、10秒ほどで起動するようになりました!

 

アプリの立ち上げなどもサクサクになったので、古くて使えなくなったノートPCをお持ちの方は、一度SSDに交換してみることをオススメします。SSDに交換してOSを入れ直すのははじめてだとちょっとハードルが高いですが、SSD自体かなり安いので、ダメ元で試してみると良いと思います。

 

僕は「新しくパソコンを買い換えることに比べれば安い」と思ったので512GBも容量のあるものを買いましたが、現状まだ100GBも使用していないので、プログラミングの勉強用にと考えれば、120GBのものでもおそらく問題無いですね。そうなると、3000円もしない程度で購入出来ます。

 

  

おそらく動画の作成なども考えるのであれば128GBだと物足りないと思いますが、その場合は外付けの大容量HDDと合わせれば解決するかもしれませんね。

僕は今の所プログラミングと、少し動画編集を勉強したいなと思っている程度なので、SSDだけで十分事足りています。

 

SSD内蔵のパソコンを使用したのが初めてだったのですが、今後SSD内蔵のものしか使わないですね。

HDDの時は熱暴走がひどく、ちょっと処理が思いアプリを使うと夏場はそれが原因で落ちてしまうこともありましたが、SSDに変えてからは一度もそんなことにはなっていません。

経年劣化なども不安でしたが、2019年の5月にSSDに変更し、2020年の8月現在も問題なく使用出来ています。

 

これからノートパソコンを購入するのであれば、5万円弱でもSSD内蔵のノートパソコンが買えるので、HDDではなくSSDのものを購入することを本当にオススメします。

 

 

・モニター

こちらも僕が持っているものはずいぶん古く、もうAmazonでは売っていないようです笑

同系統のディスプレイがこちらになります。 

 

 

1万円ほどで大きいモニターが買えるんだな、と買った当時は驚きました。なぜかもっと高いんじゃないかと…。

パソコンを普段あまり使わない人からすると、「なんでノートパソコンにさらにモニターを付けるの?」と思われるかもしれませんが、デュアルディスプレイは本当に快適です。

 

プログラミングをするならだと思います。

なぜかと言うと…

1.プログラミングをする際、エディタ(プログラムを書くアプリ)を開きます。

2.また、分からないことを調べるためにGoogleなども開きます。

3.仕様書などの資料がある場合はそれも開きます。

4.Webページ制作などをするのであれば、エディタで書いているコードで実際にどのような見た目になるのかチェックするためにもう一つブラウザを開きます。

…このように、とてもノートパソコンの画面一つでは作業していられないくらい、色んなものを見る必要が出てくるんですね。

 

現在僕はノートパソコンの画面とモニターの計2画面で作業をしていますが、本当はあと1枚はほしいな…と思い続けています。

そのくらい、画面は必要になります。

紹介しているものであれば、ノートパソコンとの接続も付属されているHDMIケーブル一つで簡単に出来るので、全く難しくありませんし、別でコードを買う必要もありません。

※パソコン側がHDMIに対応していない場合もあるので、購入前に確認してください。

 

僕はモニター用のアームを別で購入しましたが、モニター用のスタンドも付属しているもので十分使えます。

ちなみに使っているアームがこちら。

 

グリーンハウス 液晶 モニターアーム 4軸 クランプ式 GH-AMC03

グリーンハウス 液晶 モニターアーム 4軸 クランプ式 GH-AMC03

  • 発売日: 2010/07/23
  • メディア: エレクトロニクス
 

アームを使うと、デスクの上にモニタースタンドを置くためのスペースを確保する必要がないので、個人的にはこれもかなり気に入っています。(デスクの天板によっては使えない場合もありますので注意) 

 

 

終わりに

今回紹介したパソコンとモニターであれば、本当に6万円ほどで揃えられます。

大学生でもちょっとバイトをすればすぐに買える金額じゃないかなと思います。もしノートパソコンは持っていて、HDDのものを使っている方であれば、SSDとモニターで2万円もかからないですね。

あとプログラミング学習をするのに掛かる費用としては、ネット学習系のコンテンツに課金するくらいで出来るので、かなり低コストで始められますね。(ネット上で学習出来るコンテンツも、月1000円程度のものが多いです)

 

最後に注意していただきたいことですが、あくまで今回紹介した僕のパソコンのスペックでは、プログラミングの学習や、基本的なプログラムを実際に書いて動作させることに対して問題のないスペック、ということです。

 

具体的には、Progateでプログラミングを学習し、VS CODEなどのエディタを使って実際にコードを書いて動かしたり、EXCEL VBAでマクロを作成して動作させる、などはストレスなく実行可能です。

本格的な動画編集などはかなり動作が重くなりますし、Android Studioを使ってAndroidアプリ作成なども、出来なくは無いですがかなり動作が重く、やる気が失せます。(実際失せました)

 

プログラミングを勉強してみて、アプリ作成などにもチャレンジしたい、という場合はもう少しスペックの高いパソコンを準備する方が無難ですね。

 

プログラミングの基礎を理解すること自体は、ほとんどの人が出来ると思うのですが、「プログラミングを好きになって継続出来るかどうか」はやっぱり向き不向きがあると思うので、そういう意味でも、まずは低コストで初めてみることをおすすめします。

 

最後まで読んでいただきありがとうございました。

今後もプログラミング学習やプログラマーとしての仕事、副業に関することなどを中心に記事を書いていきますので、良ければ読んでいただけると嬉しいです。

Twitterもやっていますので、気軽にフォロー・リプライください。質問などもしっかりお答えします。

 クボ@テスター (@natsumemix2525) on Twitter

プログラミングを活かして業務の一部を自動化するに至った流れ

終わってみればものすごく些細な自動化でしたが、実現するまでにいろいろと試行錯誤したので、
「こういう風に考えてプログラミングを活用している人もいるんだな」
程度に参考にしていただければと思います。
※どのような経緯で実現出来たかを書くので、どのようなコードを書いたかなどは書きません。
 
「こうすればこれが出来ます」みたいな、
「最初から答えがわかってるような書き方」
をされている記事が多いように思うんですが、実際にはいろいろ試行錯誤してると思うんですね。
でもその試行錯誤部分ってあまり書かれない気がするので、試しに書いてみます。その分長ったらしくなりますが。
 
今回自動化した作業
・決まった場所にある、決まった文言が書かれているファイルの一部を、決まった文言に書き換える(書き換えるファイルは2つ)
 
条件
・ファイルはセキュリティが設定されており、上書きするにはファイルのプロパティから上書き可能なように設定を変更する必要がある(管理者は読み取り、上書き可能)
・ファイルの場所自体は同じだが、頻繁にフォルダごと入れ替えており、その都度ファイルを書き換える必要がある
 
書き換える内容自体はそこまで多くないものの、
1.ファイルが入っているディレクトリに移動し、
2.2つのファイルそれぞれのプロパティからセキュリティについての設定を変更し、
3.それぞれのファイルを開いて書き換える
 
…これを何度もやるの、案外面倒です。(こういうのを面倒だと思うところから、自動化の工夫が始まります。知らんけど)
 
というわけで、自動化する方法を考えました。
 
最初の壁…ファイルのプロパティの変更方法
 
…最初というか、これだけが今回のネックでした。ファイルを読んで必要箇所を置換して上書きする処理なら、VBAでもPythonでもやったことがあったので。
ただ、ファイルのプロパティを変更しなければいけない…。
色々調べた結果、コマンドプロンプトでファイルのプロパティを取得出来そうな様子だったものの、プロパティを変更する方法がいまいち理解出来ず断念。
 
というわけで、ファイルのプロパティをいじるのではなく、「操作する側の権限をいじれないか」と考え始めました。
そして「エディタを管理者権限で実行すれば、ファイルのプロパティをいじらなくても編集して上書き出来るのでは?」と考えました。
 
エディタはサクラエディタを使っていたのですが、普段はもちろん普通に実行しているので、管理者として実行していません。
試しに管理者として実行し、編集すべきファイルを開いてみると、あっさり編集、上書きすることが出来ました。
ただ、管理者として実行するために、
1.毎回サクラエディタを右クリックして管理者として実行
2.その後編集すべきファイルをサクラエディタから開く
3.しかも一度でもサクラエディタを普通に開いていると、サクラエディタを普通に閉じてもタスクマネージャーからタスクを終了させないと管理者として実行出来ない
 
という、またもや面倒な自体に。
これらを解決するために、「サクラエディタを開くときは毎回管理者として実行する」よう設定。
こうすることで、サクラエディタで開くように設定したファイルをダブルクリックするだけで、(毎回管理者として開くことに関して確認のウィンドウが開くものの)スムーズにファイルを開き、編集出来る状態に。
 
正直ファイルのプロパティをいじる手間が無くなったので、ここで終わっても割と満足でしたが、
「ファイルをわざわざ2つ開いて、それぞれ『管理者として開くか』を聞かれるのがめんどくさい」
と思い、さらなる効率化、自動化を考えました。
 
とりあえず、「わざわざ2つのファイルを開く」ことを効率化すべく、ファイルのパスをPowerShellで指定してファイルを実行する方法を思いつき、実行。
連続で2回「管理者として開くか」を尋ねられるものの、フォルダからわざわざファイルを探す手間もなく、即座に指定のファイルを2つ開くことに成功しました。
そのスクリプトを保存し、ショートカットファイルを作成して、ショートカットをダブルクリックすることで実行出来るようにしたところ、かなりスムーズにファイルを開けるようになりました。
 
これで9割方満足していたものの、
「ファイルを手で修正するのがめんどくさい」
「そもそもサクラエディタでファイルを開く必要はあるのか」
という思考になりました。ここまできたら、どこまでも楽をしたい。
 
ここで、「そもそもサクラエディタでファイルを開く必要はあるのか」ということが妙に引っかかり、ちょっと考えました。
「なんでサクラエディタでわざわざ開いてたんだっけ?・・・・・・・あ、プロパティで上書き禁止にされてたから・・・いや、管理者として実行したら上書き出来るようになったし・・・それPowerShellでも出来るんじゃね?」
ということで、「サクラエディタを管理者として実行し、2つのファイルを手入力で編集する」ではなく「PowerShellを管理者として実行し、2つのファイルを自動で修正し、上書き保存する」方向で考え始めました。
 
試しにPowerShellで普通に該当ファイルを修正、上書き保存するスクリプトを作り、実行したところ、もちろん「アクセスを拒否されました」という理由でダメ。
しかし、PowerShell自体を管理者として開き、再度スクリプトを実行したところ、あっさり完了。
ただ、修正後のファイルを開いてみたところ、SJISだったはずの文字コードがUTF16になっていたので、それを改善するためにスクリプトを少し修正しました。
 
次に、スクリプトファイルそのものに書いている、2つのファイルが入っているディレクトリのパスを、
別のテキストファイルから読み取るように変更しました。このスクリプトを他のメンバーと共有したとき、もし該当ファイルの保存先が違っていても、プログラム自体を触らなくて済むようにするためです。
 
これもあっさり完了し、完成したスクリプトをショートカットからダブルクリックで実行出来るようにして、そのショートカットを必ず管理者として実行することを設定し、無事自動化完了。
 
色々迷走しましたが、手作業でやればおそらく慣れた人でも1分は掛かっていたであろう作業を、1秒に短縮することが出来ました。
 
たった1分の自動化ですが、細かい作業ってどうしても集中力が必要ですし、手入力で文字を打つのもタイプミスなど人的エラーのリスクがあるので、意外と馬鹿に出来ません。
 
そして今回の自動化実現にあたり、
・管理者として実行することで、上書き禁止ファイルも上書き出来ること
PowerShellの基本的な使い方、コマンド、文法など
PowerShellスクリプトのショートカットファイルからダブルクリックでスクリプトを実行する方法
・アプリを毎回管理者として実行するように設定する方法
 
などなど、これまで知らなかったことをたくさん知ることが出来ました。特にPowerShellを実際に活用するのは初めてだったため、かなり慣れることが出来たように思います。
 
小さな自動化を個人的にオススメしている理由の半分はこれで、「自動化を実現するまでに経験すること」が、もしかしたら今後他のことにも活かせる可能性があるんですよね。
自動化自体も嬉しいことですが、自動化にあたっていろんな手段を知り、1つ自動化出来たらまた他の業務の自動化を考え、その際これまでに経験したことから応用出来ることは無いかを考える。
 
面倒なことは嫌いなので、どんどん自動化して楽したい。(自分の中の手札を増やすためにも、これからもさらに自動化に励みたいですね)
 
ということで、しょぼい自動化をなんとか実現 したお話でした。
最後まで読んでいただきありがとうございました。

プログラミング初心者ほど人から教わってはいけない理由

前回の記事では、「プログラミング初心者が他者から教わるべきこと」について自分の実体験を踏まえて解説していきました。

 

bottea.hatenablog.com

 

今回は、僕が学習塾で働いていた経験と、プログラミングを独学した経験から、「プログラミング初心者こそ他者から教わらない方が良い理由」について書いていき、その後「自力で解決出来なかった時の対処法」について簡単に説明致します。

※ここで言うプログラミング初心者とは、「これからプログラミングを基礎から学んでいく方」のことです。

 

簡単な自己紹介

僕は高校、大学ともに文系で、プログラミングを学び始めたのは去年の2月です。(この記事を書いている時点でプログラミング歴1年4ヶ月)

プログラミング独学期間半年を経て、プログラマーとして就職し、現在は主に製造(設計書を読み、プログラムを書いていく工程)を担っています。

大学時代、アルバイトで塾講師をしていたので、プログラマーになる前はそのまま塾会社に入社して働いていました。

 

 

・プログラミングそのものの解説は「初心者こそ」聞かない方が良い

これはプログラミングに限らないのですが、最初のうちこそ大変だろうが泣きそうになろうが教材を使って自分で考えて勉強することをオススメします。

何でも最初が一番簡単な内容で、その先は当然どんどん難しくなります。もし最初の簡単な内容すら自力で乗り越えられず他人からの教えを受けてようやく進める、ということを繰り返してしまえば、その先のより難しいことをどうやって自力で乗り越えるのか、と思うんです。

 

僕は塾で生徒に教えている時にこういう話をしていました。

「先生は○○くんが固くて食べられないものを、食べられるように柔らかくしているだけ。でも、それだけだと○○くんの噛む力は強くならないから、出来るだけ自分で噛まないといけない、ということは覚えておいて」

 

プログラミングでいうこの「噛む力」は、教材やネットの解説記事に出てくる文章を読み解く「読解力」や、その内容を自分の「今実現したいこと」に当てはめる「応用力」、自分のやり方の何がいけないのかを判断し、どうすれば良いかを考える「分析力」「思考力」だと思います。

 

これを総合して「プログラミング的思考力」と呼ばれるものと思っていますが、このプログラミング的思考力を高めるにはやはり、自分で出来る限り試行錯誤しながら理解し、進んでいくことが不可欠です。

 

しかし教える立場になる人の多くは、良かれと思って全力で噛み砕きます。ペースト状になります。そして、「こんなに分かりやすく教えてくれるなんて素晴らしい先生だ!」と評判になります。

 

いつでもどこでもその先生が物事を噛み砕いて飲み込ませてくれるなら良いんですが、そんなことありえないですよね。

 

じゃあどうやって自分で噛み砕く力を付けましょうか?

 

実際に噛む練習をするしか無いですよね。一度噛み砕かれたものをもう一度噛んでもしょうがないので、まだ噛み砕かれていないもの、つまり新しく学ぶことを自分で理解する練習が必要です。

 

新しく学ぶことのレベルが高くなってしまうと噛む練習にすらならず、歯が砕ける可能性がありますので、そういう意味でも「基本こそ自力で理解する練習」を意識しましょう。

 

・どうしても自力では理解出来ない場合の対処法

とはいえ、自分だけではどうしても理解出来ないことは必ず出てきます。そういう時は、自分がどのような考えで、どういうことをやっていて、でも今どういう結果になっていて、自分が思うようにいっていない、ということを伝えた上で、認識がおかしい点が無いか、ということを指摘してもらうようにすると良いと思います。

本当に必要な部分に絞って教えてもらう、ということですね。

 

ただ、これは本当に最後の手段なので、その前に

  1. 自分がやりたいことを箇条書きで書き出し
  2. どこからどこまでが正しく出来ているかチェック
  3. 正しく出来ていない部分の絞り込み
  4. 正しくない部分がなぜおかしいのか、仮説を立てて検証

これをやるようにすれば、大体の問題は解決出来るのではないかと思います。

 

終わりに

自分自身が長らく教える立場だったのですが、実はもともと「塾否定派」な考え方でした笑

もちろん教えるようになってからは生徒への授業に全力で取り組みましたし、生徒の成績を上げるために工夫を凝らしました。

ただ、こちらが手厚くやればやるほど、生徒は受け身になり、「噛み砕かれたペーストをただ飲み下すだけ」になっていました。

一時的に成績を上げることは出来ても、長続きはしませんでした。

最悪だったのが、中学生の時に大きく成績を伸ばすことが出来た生徒が、高校に進学してから全く付いていけていないと話してくれた時でした。

「自分は何をやっていたんだろう」と自分の講師としてのあり方を反省するきっかけになりました。

 

そんな経験もあり、今回の記事のようなことを考えました。

世の中にはたくさんの解説書があり、わかりやすい!と評判になったりもしますが、わかりやすく噛み砕かれたものばかりを選んでしまうリスクについて、特に初心者ほど意識しておくべきだと思います。

 

最後まで読んでいただきありがとうございました。

今後もプログラミング学習やプログラマーとしての仕事、副業に関することなどを中心に記事を書いていきますので、良ければ読んでいただけると嬉しいです。

Twitterもやっていますので、気軽にフォロー・リプライください。質問などもしっかりお答えします。

 クボ@新人プログラマー (@natsumemix2525) on Twitter

プログラミング初心者が教えてもらうべきこと

前回の記事では、「新人プログラマーへのアドバイス3つ」について解説していきました。

 

bottea.hatenablog.com

 

今回は、自身が学習塾で働いていた経験と、プログラミングを独学した経験から、「プログラミング初心者が本当に他者から教わるべきこと」について書いていきます。

※ここで言うプログラミング初心者とは、これからプログラミングを基礎から学んでいく人のことです。

 

簡単な自己紹介

僕は高校、大学ともに文系で、プログラミングを学び始めたのは去年の2月です。(この記事を書いている時点でプログラミング歴1年4ヶ月)

プログラミング独学期間半年を経て、プログラマーとして就職し、現在は主に製造(設計書を読み、プログラムを書いていく工程)を担っています。

大学時代、アルバイトで塾講師をしていたので、プログラマーになる前はそのまま塾会社に入社して働いていました。

 

  1. 自分の目標と必要な教材

例えば受験勉強でも、「○○大学に合格したい」とか「医者になりたい」みたいな、最終目標って簡単に決められるんですよね。

ただ、そのために自分が何をすべきなのかが分からなければ、十分実力が付いているはずの数学ばかりに取り組んでしまったり、受験ではほとんど出ないような問題を一生懸命解こうとしたりと、努力の方向性を間違えがちです。

 

プログラミング学習を始めようと思い立った方の場合、「何をしたいかで勉強すべきことが変わるから、目標を決めた方が良い」と言われながらも、「そもそもプログラミングで何を作りたいか特に決めていない」「Webアプリ?Webサイト?デスクトップアプリ?何がどう違うのかわからない」というように、目標設定すらしづらいのではないかと思います。

実際に僕が一番困ったのがこの部分でした。

 

プログラミングスクールやプログラマー経験者に直接質問出来る機会があるのなら、プログラミングで自分がどんなものを作りたいのか漠然としたイメージを聞いてもらい、それがWebアプリなのかデスクトップアプリなのかなど分類してもらった上で、どのような教材を用いて学習すべきかを教わると良いと思います。

 

  1. 困った時の対処法

プログラミングをしていると、ベテランの人でも「これどうやるんだっけ?」と自分の記憶だけでは対応出来ないことが出てきます。また、ミスによりエラーが出てしまったり、不具合が出てしまうことも多々あります。

でもその時に、どうすれば対処出来るかを知っています。

やりたいことをどんな単語で調べればいち早く見つけられるか、エラーメッセージからどのあたりの文言を見ると原因がわかるか、不具合の原因がどのあたりなのかをどうやっていち早く発見するかなど、「困った時にどうすれば良いか」を知っているので、初心者よりもスムーズに問題を解決し、完成に至ることが出来るんです。

それらのノウハウを一つひとつ聞いているとキリが無いですが、「デバッグの仕方」「調べ方」などは一度ベテランの方から聞いて実践していくと、ほとんどのケースで対応出来るようになるのではないかと思います。

 

 

終わりに

「え?たった2つ?」と思われるかもしれませんが、僕は他の人から直接教わるべきことは本当にこの2つだけだと思っています。

それ以外のことは自力で調べるなり、試してみたほうが手っ取り早く伸びます。

こんなことを言うとプログラミングスクール・専門学校関係者や、通っている方に怒られそうですが、プログラミングスクールはカリキュラムが決まっていることと、モチベーション維持という意味で有意義だと思っています。なので、プログラミングスクール・専門学校を否定するつもりはありません。

そこにどれだけの価値を見出すかは人それぞれです。

 

要は僕が思う「他者から教えてもらうもの」は、「自分にある程度適した教材」と「答え合わせの方法」です。これらがあれば、自分で自学自習することは出来ます。

 

今回は「プログラミング初心者が教わるべきこと」を紹介しましたが、次回は「初心者こそ他者から教わらない方が良い理由」について説明していきます。

 

bottea.hatenablog.com

最後まで読んでいただきありがとうございました。

今後もプログラミング学習やプログラマーとしての仕事、副業に関することなどを中心に記事を書いていきますので、良ければ読んでいただけると嬉しいです。

Twitterもやっていますので、気軽にフォロー・リプライください。質問などもしっかりお答えします。

 クボ@新人プログラマー (@natsumemix2525) on Twitter