コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

RPAいぢり

ずっとマクロでええやんとか思ってたけどちゃんと違いを理解するためにRPAツールを触ってみることにしました

はい、おはようございます。世界と挨拶しかできない僕です。今日はちゃんとしっかりとRPAについて学んでいこうと思いUiPathのツールを触ってみることにしました。

RPA
ロボティック・プロセス・オートメーション(Robotic Process Automation, RPA)とは、認知技術(ルールエンジン・機械学習人工知能等)を活用した、主にホワイトカラー業務の効率化・自動化の取組みである。人間の補完として業務を遂行できることから、仮想知的労働者(Digital Labor)とも言われている。

RPAとはこれのことです。説明だと機械学習とか使ってる的なこと書いてあるけども実際にツール触るとあんまりそういったものすごい補完をしてくれているような気はしない……。

公式
UiPath(ユーアイパス) 日本

んで、今回はフリーで使える Community Edition を使っていきます。
UiPath Community Edition - Request your free download


起動するとこんな感じ。

f:id:andron:20190424214933p:plainf:id:andron:20190424214943p:plain
RPAよく知らんから使ってみたけど、メインの部分になんか色々ブロック埋め込んで使うビジュアルプログラミング言語的なツールらしいです。


なんかつくってみる

VBAマクロみたいに記録ボタンぽちーってやれば何かしら動くもの作れるんですけど、実装方法を知っておきたいのでスクラッチで作っていきます。


まずは何はともあれ "世界と挨拶" 。実装は次の通り

f:id:andron:20190424215546p:plainf:id:andron:20190424215554p:plain
ダイアログボックスが細かく編集できないけどどうなんだろう。まあ、こだわりないからいいけど。

んでついでなんでFizzBuzzで構文確認もしていきます。

f:id:andron:20190425084359p:plainf:id:andron:20190425084410p:plain
制御構文見る限りUiPathの場合は言語はVBベース(VB.net)っぽいです。世間的に流行っているそうなんだけど触ってみると死ぬほどメンテしたいという感情がわいてこない。ちょこちょこ小規模なモジュールを生産するのはありだと思う。面倒くさい画像認識関連の処理は標準機能としてついていたりするので、そのあたりを埋めるのはありな気がする(ゲーム自動化とか……)。


感想

現段階ではVBAマクロとの違いがまだあんまり見いだせなかった。ファイル操作系はオフィスソフトと連携できるとかあっても僕Googleのオフィスツールメインでつかってるからメリットに感じないんですよね……。そうなるとキーボードとマウスの自動化でなにかやるのが利点かなってとこだけどこの記事書いている時点でなんかネタが思いつかなかった。まあ他にもいくつかRPAツールあるので並行して触ってしっくりくる使い方探していこうと思います。


おわり

Canvasをやる II ~前編

ちゃんと使い方を覚えようと思った II

はい、どうも僕です。Canvasとは人生であり哲学です。そういう悟りの境地に至ったので本日もCanvasを触っていこうと思います。

Canvas APIJavaScript と HTML の <canvas> 要素によってグラフィックを描く方法を提供します。他にも、アニメーション、ゲームのグラフィック、データの可視化、写真加工、リアルタイム動画処理などに使用することができます。

ちなみに上で連呼しているCanvasはこれのことです。哲学も人生の真理もあったものでないですね……。


前回記事
inujini.hatenablog.com

謎の脱線記事
inujini.hatenablog.com
ブギーボード代わりに使うには軽いし保存も聞くのでありだと個人的に思ってるんですよコレ。



途中謎の脱線をした気がしたけどもCanvasを覚えるぞーって気持ちにまたなったので覚えことにしました。


Canvasチュートリアルやっていく

今回はここのやつやっていきます。
Canvas tutorial - Web APIs | MDN
日本語版はリンクが色々死んでいるのでアメリカ語版で見ていきます。

とりあえず何はともあれ練習用のテンプレートをこんな感じに作りました。

そんでシェイプの使い方はこうです。

以前触っていたよりも複雑な使い方してた。ちゃんと読み込むと色々為になりますね……。多分僕お絵描き部分コピペで済ましてしまうだろうけど……。パックマンのやつとかヤバい。

// 要素の取得
var canvas = document.getElementById('YourId');
// 描画
if (canvas.getContext) {
  var ctx = canvas.getContext('2d');
  // ここにコードを記入         
}  

そういえば、この書き方にすることでifの中にお絵描きパートをねじ込めるようになって個人的には見やすくできたと思ってる。ただこの使い方がよしとされるものなのかは知らない、ctx 使いまわすなって怒られてるし……。あとgetContextができない場合はnullが返るけどもエラーメッセージでちゃう。


まあいいや。やりながら修正かけていきます。次行きます。カラーはこう。

アニメーションみたいな再描画処理するとctxがよくわかんない挙動するので以下に修正。var型のスコープ範囲舐めてた、そっか関数スコープだから上書きされると描画おかしくなるのか……。if関数じゃないもんね……。

// 要素の取得
const canvas = document.getElementById('YourId');
// 描画
if (canvas.getContext) {
  let ctx = canvas.getContext('2d');
  // ここにコードを記入         
}  

とまあ、関係ないスコープの方で止まってしまったがカラーの描き方は上のような感じらしい。お絵描きとして使う機会があればどっかからベースのやつをパクッって参考にして使うと思うので実は中身をあんまり見てなかったりする。


それじゃあ次行きましょう。お次はテキストです。

こうです。特にお絵描き要素もないので喋ることないっ!次っ!!


次行きます。画像見ていきます。

画像に関しては以前の書き方で大丈夫っぽい。書くたびにコードが変化してるから何が大丈夫の基準になっているのかよくわかんないけど……。自分が納得していればいいんだよ(よくない)。ということで画像に関しては特に問題なさそうだったので次行きます。


変形みていきます。

主にcontext.save()context.restore()に関しての話。それさえわかればいけると思った。それをお絵描き描画に落とし込めるかはまた別の話ですけどね。


次、クリッピングみていきます

抑えるべき要素はclip()です。以上!!


とまあそんな感じでいけるっぽいです。前後編に分けるつもりはなかったけども次回アニメーション編らしいのでアニメーション用の文法をしっかり抑えてからまとめようと思ったので後編にわけることにしました。まあ、後編いつ更新するのか知らんですけどね……。


つづく

れーわなのでらけっとをやります

まるかっこ恐怖症の僕がすきーまちほーを襲撃していく話

れーわがはじまったのでらけっとをやっていこうとおもったのです。しんげんごーだけにしんげんごにてをだそうっておもったのです(こいきなじょーく)。


はい、ということで Reiwa の R は Racket の R だということで、Racket やることにします。ちなみに件の言語ってこんなのです。

Racket (旧称 PLT Scheme) は、Schemeから派生したプログラミング言語である。Racket プロジェクトは以下の4つから構成されている。

1. スクリプト処理系、Racket (リッチなランタイムシステム, 豊富なライブラリ, JITコンパイラ などが含まれる)
2. Racketプログラムの開発環境、DrRacket (旧称 DrScheme)
3. コンピューティングとプログラミングを"教養教育カリキュラムの必須分野にする"試み ProgramByDesignアウトリーチ・プログラム。
4. Racketのユーザ作成パッケージの配布システム PLaneT。

まあ、Scheme系言語です。教育用プログラミングだから安心っていろんなところで説明してるけども、「ほんとに?」ってのが正直な感想。

公式
racket-lang.org


この辺が初心者向け教材とか言われているけども僕はよく知らない。

Realm of Racket: Learn to Program, One Game at a Time!

Realm of Racket: Learn to Program, One Game at a Time!

  • 作者: Matthias Felleisen,Conrad Barski,David Van Horn,Eight Students of Northeastern University
  • 出版社/メーカー: No Starch Press
  • 発売日: 2013/06/13
  • メディア: ペーパーバック
  • この商品を含むブログを見る
※ イラスト多めだけど普通にアメリカ語です。


てなわけで触ってみる

まあ、何も触らないで特徴はこうだって言ってもよくわかんないのでとりあえず触ってみることにします。まずはインストールします。
Racket

そしてDrRacketを起動します。
f:id:andron:20181111095009p:plain


起動できたら、おもむろにいつもの月曜日判定機でもつくります。

#lang racket
(require racket/date)

(if
 (= 1 (date-week-day (current-date)))
 (display "Today is Monday")
 null
)

実行結果

Today is Monday

多分こんな感じでいけると思う。実際のところ雰囲気で書いているから良い感じなのかよくわからない。current-dateがデフォルトであったおかげでなんとか短くすんだ。というかノリで実装はじめるんじゃなくて、はじめは文法から見るべきでしたね……。

まあいいや。とりあえず参考リファレンス貼っておく
The Racket Reference


てなわけでして、実行結果通り今週も月曜がはじまったわけですよ。令和だからとかバカなこと言って Racket っている場合ではなかったのです。もっと実益のあることをすべきだった……。


おわり