高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

プログラミングや電子工作でちょっとした環境改善

f:id:TakamiChie:20210610093953p:plain 今日はこちらから。

stand.fm

今回は先日他の方のstand.fmライブで、Raspberry Piを使って毎朝家族写真を撮ってる家庭がある という話をしたら、思ったより反響があった という話し。

www.moyashi-koubou.com

元々は2016年の記事ということでたぶんそこで読んだんだろうなと記憶していますが、家族写真を撮ったり、子どもへの連絡事項伝達や声かけをしたりといった用途にRaspberry Piを使う というのはとても面白いなあ と思って記憶に残っています。

確かに写真ってなにかあったとき以外は意外と撮らないもので、そういうときの解決策としてこのような仕組みが家にあると写真を撮るきっかけになって良いなと思いました。

続きを読む

プログラミングのハードル

f:id:TakamiChie:20210527094719p:plain

今日はこちらから。

stand.fm

最近、割と小規模なアプリを作る機会がとても増えました。

stand.fmのBGMを貼り付けるツールとか、カバー画像を生成するとかもありますが、SBCast.用の画像コラージュツール、YouTube番組の配信支援ツールなど、開発規模はそれほどでもないけど手動でやるにはそれなりにしんどいのでツール化したというものが多い。

現在もSBCast.やそのほかSBC.関連のイベント参加人数を集計するツールを検討中。YouTubeFacebook、Blubrryなど各種配信サービス・集計サービスのAPIをつかったものとなります。

それを通して、つくづくプログラミングのハードルってつくづく上がったなあと感じたという話し。

続きを読む

Power Automateとプログラミング

このブログはOffice 365 Advent Calendar 2019 - Adventarの22日目のブログです。

22日目のブログはOffice 365のWebツールの一つ、Power Automateについて。Qiitaなどでは技術的につっこんだ内容を主に書いていますので、こちらではもっと概要のところを。

Power Automateとは、MicrosoftのOffice 365 Business向けに提供されているツールの一つで、あるサービスでの出来事やボタン押下などのイベントをトリガーに、複数個のアクションを実行することができるというツールです。

わかる人には「IFTTTのようなもの」といえばいいでしょうか。

f:id:TakamiChie:20191222230908p:plain
Power Automateの画面

無料版も提供されており、無料でも大半のサービスを利用することができます。気になる方はそちらを利用してみても良いでしょう。

flow.microsoft.com

IFTTTと違って、標準で一つのトリガーに複数個のアクション(処理を示すブロック)を設定することができますので、手間暇さえかければかなり多くの操作を自動化することができます。

続きを読む

プログラマはどうやってスキルアップしていけばいいのか(.NETラボ勉強会に参加しました) #dotnetlab

今日11月30日は、ちょっと久しぶりに.NETラボ勉強会に参加してきました。

f:id:TakamiChie:20191130132706j:plain

とてもひさしぶりだったので、LT発表もしてきました。

資料は以下です。動画についてはしばらくお待ちください。

speakerdeck.com

で、今回ブログに書いたのは参加レポートというより、聞いていて思ったことがあったので。

今のプログラマに必要とされていること

今回スピーチではASP.NETBOT Framework、Power Automateなど、Microsoftの最近のテクノロジーに関するスピーチが豊富にあったのですが、最近のMicrosoft関連技術って、どれもプログラミングだけでなく、データの正規化やMVCの使い分けなど、結構高いスキルが必要になるなあ という感じ。

たしかにコーディングが少なくなったり、制作が楽になったのはあるのですが、そのぶんプログラミング以外のスキルをかなり要求されているような。

もちろん他の環境を使っても複数言語に対する知識や複数モジュールの知識が必要になることは多いし、なにを今更な感じはありますが、なんというか、「プログラミング(というより、プログラマがやること)ってほんと複雑になったなあ」という感じがします。

制限された環境でどう動くか

とくにPower Automateなどは、わたしも最近ちょくちょく使っているのであらためて感じますが、本当に難しい。

プログラミングをするだけならそれほどでもないんですが、Sharepointリストを使ったフローを書いたりすると本当に難しく、プログラミングスキルだけでは太刀打ちができないなあ という感じがします。

プログラミングは確かに、最近需要も増えて、講習会や教室も増えてきたという感じがありますが、じゃあこういったデータの正規化や、Power Automateみたいな制限された環境での立ち回りはどうやって勉強するのだろう?と、話を聞いていて思いました。

Power Automateは、他と違ってコーディングができないので、他の言語ならコーディングやSQLのパワーで押し切れるところが押し切れない。その環境でもやりたいことが実現できるプログラミング力というのは、なかなか高度だと思います。

そういう感覚を、どうやって教えるか

そして、わたしも一応SBCamp.などで講座をやる身として、こういう感覚をどうやって教えるのか というのが課題だなと思いました。

プログラミングそのものを教えることはまあなんとかできるし、コーディングについての心構えを教えることも、一応できる。

ただ、どうやってプログラミングに最適なデータ配置を行うか、どうやってモジュールをきれいに分割するか などといったものは、どうやって教えればいいのだろう?

わたし自身がそんなにうまくない というところもありますが、サンプルが用意しづらい というところもあり、どうすればいいのかが今後の課題だと思いました。

ITの格差と、プログラマの格差

そして話を聞いていて思ったのは、ITリテラシーの有無による格差(いわゆるデジタルデバイド)もあるものの、プログラマの技術力格差もあるような気がします。

こういう場でスピーチができたり、最新技術を追っていけるようなハイスキルのプログラマは、もちろんいます。

ただし逆に、こういった技術をうまく飲み込めず、プログラマとしてのスタートラインにすら立てないプログラマも、たくさんいる。

そういう人同士の格差も一つの課題なのではないだろうか と思いました。

発表することが一番の勉強!とはいうけれど・・・

こういう勉強会ではよく「発表することが一番の勉強」とはいいます。

自分の考えを整理できるし、曖昧だった知識をはっきりとしたものにできるし、わたしもそのとおりだとは思うのですが、発表できるところまで知識を身につけるのも、そうかんたんな話じゃない。

「じゃあわからないことを言語化すればいいじゃない」とも言いますが、本当になにもわからないと言語化すらできないのです。

そういう人は、一体結局どこにいけばいいんだろう そういう人たちをステップアップさせるために、わたしたちはなにをすればいいんだろう と、今回のスピーチを聞いていて思いました。

今プログラミングをはじめるなら、Windowsがいいかもしれない

最近思った話し。

プログラミングには、事前に整えておかなければいけないものがあります。

コンパイル言語であったらコンパイラやその動作のための環境、インタプリタ言語ならインタプリタ。そしてコードエディタ。

最近では高度な処理をライブラリに任せることも多くなったため、必要に応じてライブラリも揃えなければいけません。それらの環境を整えるのってだいぶ面倒くさい。

ただ、それらの設定を行っているうちに、最近表題のようなことを考えるようになってきています。

なぜそう思ったか

たとえばPython

WindowsにはPythonの実行環境こそ入ってはいませんが、公式サイトから簡単にインストールすることができますし、最近ではWindowsストアでの配布もはじまっています。

www.microsoft.com

そして、CGライブラリであるOpenCVPythonで使うためのモジュール、OpenCV-Python

news.mynavi.jp

こちらも、見た限り一行だけでインストールが終わるのは、Windowsだけ。

最近、インストールの準備に関するコードを見ると、Windowsが一番シンプル というケースをぼちぼち見るようになってきたように思います。

Windowsではすぐにプログラミングはできないけれど・・・

Windowsには最初から使えるプログラミング環境が、バッチファイルとWindows Scripting Hostくらいしかありません。

最近になってPowerShellC#VB.NETが追加されましたが、それくらい*1

結局、ちゃんとプログラミングができて、実行ファイルまで作れるような環境はそんなに存在しません。

ただ、逆に、最初は余計なものが入っていないので、環境を構築しようとしたら比較的すんなり構築できる。

たとえばMacの場合だと、最初から入っているPython2を削除する というところからはじめないといけないときもあり、面倒くさい*2

そのへん、元からなにも入っていないからこそ、逆にシンプルに片がつくというのが、Windowsだな ということを最近感じています。

それでもインストールが難しいものはあるけど

それでもインストールが面倒くさいといわれているツールはいっぱいあります。自分が最近使ったツールの中では、Pandocとか、Dockerとか。

pandoc.org

www.docker.com

ただ、これについて、Windowsには最近、Chocolateyというツールもあります。

chocolatey.org

これはざっくりいうとWindows版のapt-getのようなもので、管理者コンソールでchoco install ***というコマンドを叩けば、それだけで簡単にアプリをインストールできる。

この中には、PandocやDockerなどのツールも含まれているため、インストールはとても簡単。

PandocでPDFを生成するために必要なLaTeXはChocolateyからはインストールできませんが、Chocolateyからインストールできるwkhtmltopdfというツールを使えば、PDFを生成することも可能。

さらに、ChocolateyGUIを入れればインストールしたアプリの一覧を生成することも。

これを使うことで、新しい環境へのソフトウェア自動インストールも可能になります*3

プログラミング「以外の」情報の豊富さ

そして、プログラミング以外の情報が豊富であるということもあります。

Macは実際、プログラミングには向いているのかもしれませんが、ユーザーが少ないぶん、どうしても一般的な利用に関する情報が不足しがち。最低限情報を自分で判断して処理するスキルが必要になります。

とくにMacはあくまでUNIXベースですから、本来Macが得意な(デザイン分野などの)範囲を少しでも抜けると、剥き出しのUNIXが待っています。上級者にとってはそれはいいことなのかもしれませんが、初心者にとってそれはとても難しいことだと思います。

プログラミング以外のことに変に煩わされないこと。それは現状、Windowsが最も煩わされにくいのではないかなと。

今はDockerやWSL(Windows Subsystem for Linux)もあるし

それに今は、DockerやWindows Subsystem for Linuxにより、容易にLinuxなどの開発向け環境を構築することも可能です。もし、どうしてもそれらの環境が必要になったら、Windowsならあとでいくらでも追加できる。

案外Windowsにあると昔言われていた、「プログラミングをしづらい要素」は無くなっていたりする。

だからこそ今はWindowsなのかなあ と、最近思います。

*1:そもそも開発環境と言えるようなものがないため、C#VB.NETでまともにプログラミングするのは、けっこうキツい

*2:自分が持っているPCの話しならそれでも良いんですが、他の人が持ってるPCの環境構築となると、けっこう面倒くさかったりします

*3:これにより、我が家ではPCを初期化後、実作業時間1時間(夜間運転時間を除く)程度でPCを再セットアップすることが可能です

プログラミングLT 2019で喋ってきました #プログラミングLT

4月30日(火)は、茅場町のFinGATE KAYABAで開催された、プログラミングLT 2019というイベントに参加してきました。

f:id:TakamiChie:20190430101001j:plain
プログラミングLT OPスライド

なんだか割と久しぶりのこの手のITイベント参加です。

このイベントは、元々学生LTという名前の学生主体のLTイベントで、学生以外にも参加しやすくするために今回の名前に改名した とのこと。

司会の参加者・スピーカーのフォローがとても上手く、同様のイベントと比べとても楽しい雰囲気で進みました。司会の方もさすが慣れているな と感じます。

動画についてもすごく慣れているな という印象。裏を見たら専用のハードウェアを作っているようで、やりたいことが見えている学生の力 のようなものを感じます。

www.youtube.com

次回は夏を予定している ということ。わたしも時期が合えば参加したいですね。

f:id:TakamiChie:20190430153036j:plain
次回予告

スピーチ内容

当日のスピーチ内容は、プログラミングが関わっていればなんでもOKということで、アルゴリズムについての話題や、すでにあるプロダクトについての解説、自作ハードウェアとプログラミングの連携についての話など、色々なものがありました。わたしとしても聞いていて楽しかったです。

続きを読む

プログラミングに必要な「言語」は

最近、渋谷のTECH PLAYで毎月行われている、シニアプログラミングもくもく会にちょくちょく出ています。

シニア中心ということではありますが割と若い人も来ていたりしますが、どちらかというとプロのプログラマ というよりホビープログラマ・これからプログラミングをはじめよう という人が多く、わたしでも気後れすることなく参加できる場です。

techplay.jp

ほかのIT勉強会と違ってわたしも背伸びすることなく話ができる場で、なんというかふらっとステーション・とつかで技術的な物事にとても興味がある人と話しているような気分。

場所が場所なのと時間が時間なので、懇親会終わって帰るとなると終バスがあるかないかという場所ですが、それでも月一こういう場所に行けるというのはとてもいい気分転換になります。

プログラミングを学ぶ際にまず身につけるべき「言語」は何か

さて、4月のプログラミングもくもく会で話題に上がったものとして、「プログラミングを学ぶ際にまず身につけるべき「言語」は何か」というものがありました。

これについては時々他所でも話題になるのですが、ブログに書く機会はなかったのでいちおうまとめとして。

さて、プログラミングに最も必要な言語は。こう聞かれたとき、わたしは「母国語(日本語)」と答えています。

なぜかというと。

  • プログラミングの手順について考えるとき、大抵の人は母国語でまず考えるから。
  • 母国語の語彙が貧弱だと、検索ができないから。
  • ネットや現実の近しい人に意見を伝えるとき、たいていの場合それには母国語を使うから。

仮に、英語が堪能で日本語より英語で思考する、周りの人も英語圏の人が多い というのなら、もちろんそれでもいいのですが、そうでないのならたいていの場合、まずは日本語から覚えておくべきなのではないかな と、思います。

続きを読む