- 投稿日:2019-06-25T22:27:02+09:00
UiPathの基礎にして基礎
概要
今回はUiPathの基礎中の基礎を説明してからUiPathでHelloWorldまでの道のりを捧げようと思います。
UiPathで出来ること
UiPathを使うことで動作の自動化を図ることができます。まだ勉強中でどこまでできるか分かっていないのですが、自動化と聞いて人間の頭に思い浮かぶようなことは大抵できるらしいです。
これさえあれば誰でもできるテストがこの世からなくなるかもしれませんね。本題
というわけで早速UiPathを使ってHelloWorldをしてみましょう!
1.UiPathでプロジェクトを作る
UiPathを開いて「プロセス」で新規プロジェクトを作成します。
ちなみに新規プロジェクト作成のテンプレートの説明はご覧の通り。
プロセス 何も配置されていない空のプロジェクトを作成できる ライブラリ 作成した複数のプロジェクトを再利用可能なライブラリにする トランザクションプロセス 情報の流れを図式化した自動化処理を作成できる エージェントプロセス改善 ユーザのクリックやキー入力など人の操作が介在する自動化処理を作成できる Robotic Enterprise Framework 大規模な展開に適した自動化処理を作成できる 適当にプロジェクト名と保存場所、説明を追加して作成しましょう。
2.画面のレイアウトを理解しよう
プロジェクトを作成すると3つに区切られた画面が出てきました。
左の画面から説明していきます。
アクティビティパネル クリックや文字の入力、ブラウザを開くなど、操作(アクティビティ)のひとつひとつがこのパネルに格納されています。また拡張アクティビティもインストールできます。下のタブでプロジェクトと切替可能。 デザイナーパネル 開発においてメインとなるパネルです。自動化する操作(アクティビティ)をドラッグ&ドロップで配置していくことで開発を行うことができます。上部にはファイル単位でタブが表示され、複数のファイルを切り替えることができます。 プロパティパネル 各アクティビティ毎のプロパティを設定できます。 3.アクティビティを使ってみよう
上のパネルの説明に頻繁い出てきた「アクティビティ」について説明していきます。
クリックやキー入力など自動化する操作のひとつひとつをUiPathでは「アクティビティ」と呼んでいます。「UiPath Studio」では200個以上の「コアアクティビティ」が用意されており、また用途に合わせて追加でインストールする「拡張アクティビティ」があります。
例えばエクセル用の拡張アクティビティをインストールすれば、エクセル上での自動化を簡易に行えるようなアクティビティが開発環境に追加されます。便利!
よく使うアクティビティの説明はこちら
https://www.cresco.co.jp/blog/entry/6236/早速アクティビティの「MessageBox」を使ってみましょう。
左の検索ボックスを使うと簡単に探せます。
そして、出てきたアクティビティをデザイナーズパネルにドラッグすると...
だだん!無事にメッセージボックスが配置されました。
メッセージボックスを配置できたら、入力部に適当な文字列を入力しましょう。文字の入力時には基本的にダブルコーテーション(引用符)でくくる必要があります。
これでHelloWorld準備はバッチリです。
上のリボンから保存して、実行ボタンを押してみましょう。すると...
だだん!HelloWorldが表示することに成功しました!
まとめ
ここまででUiPathの基本中の基本の操作を触ってみました。
視覚的にもわかりやすくて触ってて楽しいですし、なんでもできそう感がすごいですね。
次回はもう少し深いところまで触ってみれればと思います。それでは!
- 投稿日:2019-06-25T19:17:38+09:00
macのスクショの保存場所
①スクショを入れたいフォルダを作って
②コマンドに以下入力↓
$ defaults write com.apple.screencapture location ~/Desktop/ScreenShots(スクショを入れたいフォルダへのパス)
$ killall SystemUIServerそこで
Unexpected argument screenshot; leaving defaults unchanged.
と怒られたのですがファイル名に意図せずして空欄が入ってたので
それを消して再試行してみるとできました
- 投稿日:2019-06-25T17:57:39+09:00
macでAddressSanitizer(に内包されたLeakSanitizer)を使用してメモリリークを検知する
最終目標
iMacでターミナル経由でc++のプログラムをコンパイル・実行時にAddressSanitizer(に内包されたLeakSanitizer)(https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)
を用いてメモリリーク(newやmallocで確保したメモリの解放忘れなど)を検知する。背景
xcodeでc++のプログラムを作成していた。xcodeに付属のclangのAddressSanitizerの機能(https://developer.apple.com/documentation/code_diagnostics/address_sanitizer/enabling_the_address_sanitizer)
でメモリリークを検知しようとしたところ、OSXのAddressSanitizerはメモリリークはデフォルトでは非対応で、自分で環境変数をASAN_OPTIONS=detect_leaks=1と設定する必要があるらしい。
(https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)ということで、xcodeのEdit Scheme > Run > Argumentsから環境変数ASAN_OPTIONSをdetect_leaks=1と設定した。が、実行してみるとメモリリークがあったことは教えてくれるものの、具体的な位置などは非対応、と言われてしまい出てこずデバッグにならなかった。どうやらxcodeに付属のclangではメモリリークは非対応のよう。
なのでメモリリークに対応したclangをインストールしてターミナル経由でプログラムをビルド・実行し、メモリリークを見つけることにした。
環境
iMac macOS Mojave バージョン10.14.4
やった事
clangのインストール・準備
以下のstack overflowの回答に従って、llvmのclangをダウンロード&設定。
(「echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> .zshrc
」やそれの読み込み部分に関してはインストール終了時にターミナルにこれらのコマンドを入力するように指示とコマンドが出るのでそれに従ってコマンドをコピペして実行したほうが間違いが無さそう。)
https://stackoverflow.com/questions/53456304/mac-os-leaks-sanitizer
which clangでclangの場所がxcode付属の物ではなくllvmの下のものになっていることを確認環境変数ASAN_OIPTIONSの設定
export ASAN_OPTIONS=detect_leaks=1
を呼ぶ。
(又は~/.bash_profileにこれを書き込んで. ~/.bash_profileで読み込む)コンパイルオプション -fsanitize=addressを付けてコンパイル
clang++ -g -std=gnu++11 -stdlib=libc++ -fsanitize=address main.cpp
実行
./a.out
→これでメモリリークがある場合検出されるはず。
ハマった事
コンパイルオプションに-Ogオプションがあるとメモリリークが検知されない!
-Ogオプションとは
最適化オプションの一つらしい。
(https://kaworu.jpn.org/cpp/g++_%E6%9C%80%E9%81%A9%E5%8C%96%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3#-Og)g++4.9の場合の-Ogオプションにより「有効になるオプション」に-fsanitizeに関する記述はないが、今回の環境のclang(clang 8.0.0)ではdisableにされちゃっている?
(https://kaworu.jpn.org/cpp/g%2B%2B_-Og%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96)Cの標準ライブラリヘッダーを使用しようとしたところfatal error: 'stdlib.h' file not found #include <stdlib.h>などと出てコンパイルが通らない。
macではデフォルトでは標準ヘッダーファイルがインストールされていないようなので
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
とコマンドを呼び、出てくるダイアログに従ってダウンロードする。
(https://discourse.brew.sh/t/clang-can-no-longer-find-usr-include-header-files-fatal-error-stdlib-h-file-not-found/4523)
- 投稿日:2019-06-25T15:10:44+09:00
MacOS(Mojave)でrailsをinstallしようとしてコケた
概要
MacにはデフォルトでRubyが入っているので早速railsを入れようと
sudo gem install rails
したらコケた。
概ねこの記事通りにやったら解決した。
Failed to build gem native extension.
実行すると以下のようなエラーが発生。
ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /Library/Ruby/Gems/2.3.0/gems/nokogiri-1.10.3/ext/nokogiri /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20190625-38062-z2jdpr.rb extconf.rb mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h extconf failed, exit code 1 Gem files will remain installed in /Library/Ruby/Gems/2.3.0/gems/nokogiri-1.10.3 for inspection. Results logged to /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/nokogiri-1.10.3/gem_make.out
xcode-select --install
で治るという情報もあったが、こちらは既にインストールしてあったので、解決策にはならなそう。
MacOSのMojaveにはmacOS SDK Headerが入っていないのがエラーの原因らしいので、インストールする。$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
the package path specified was invalid
実行すると以下のようなエラーが発生。
installer: Error - the package path specified was invalid: '/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg'.仕方ないので直接ダウンロードする。
AppleDeveloperからCommand Line Tools (macOS 10.14)for Xcode 10.2.1
を検索。ダウンロードファイルを開いてそのままインストールを進めると/Library/Developer/CommandLineTools/Packages/
にインストールされる。
AppleIDで認証する必要があるため少し面倒。まとめ
無事
sudo gem install rails
でrailsをインストールできた。
Mojave以前のソフトウェアアップデートでも同じような現象が起きたらしいので、以後のアップデートで同じ現象が起きた時用に。
- 投稿日:2019-06-25T09:38:17+09:00
フルリモートでインターンに参画する方へのTips
フルリモートでインターンに参画する方へのTips
この記事はリモートワーク経験者にとって、当たり前のことが記述されています
僕は今メンバー6人の小さなWeb系開発会社を経営していて、メンバー 全員がフルリモートワーカー です。
僕もコードを書きますが、マネジメントにかける時間も増えて様々な課題やその対策が分かってきたよでここら辺でまとめます。
これからリモートワークを始める人、始めたい人は読んでみてくださいね。
この記事の前提
大前提として、リモートワークは進んでやるものではなく、 何かしらの理由でリモートワークするしかないため、リモートで働くのだと僕は考えています。
「じゃあなぜお前の会社は全員フルリモートなんだ?」 と疑問を持った方は最終見出しをご覧ください。
この記事の本題ではないため、最後に記載しました。また、この記事を読んでくださるのは学生の方が多いと思いますので、仕事の基本的な事も含めて共有する前提を書いておきます。
リモートワークは楽ではなく、辛い事も多いことを理解しよう
リモートワークを実際にやってみるとわかりますが、相談しにくい孤独感を感じるetc・・・初級エンジニアには 辛い事ばかり です。
リモートワークをしてでもIT企業で働きたい理由はあるのか?
リモートエンジニアがカッコ良く見えたり、リモートワークなら自由だ! みたいに感じてしまう事もあると思いますが、 全部違います。
リモートワークは 目的ではなく、手段です。 皆さんの住んでいるエリアに経験したい仕事がないからリモートでインターンに参加する事を忘れずに取り組みましょう。
リモートワークに限らずですが、自分で調べたり上司に質問したりなど、自ら動く姿勢は必須です。
開発マシンを統一できる環境を選ぼう
ここでは開発環境構築についてのお話です。
*開発環境とは自分のマシン上でphpなどのプログラミング言語が動いてシステムの開発ができる状態を指します。
自分のマシンが標準の企業を選ぶ
初心者にとって、開発環境の構築はとても大変な事なのです。
特に同じ場所に居ないリモートワークだとサポートも受けにくく途方に暮れてしまう可能性もありますorz
*プログラミング初心者は開発環境の構築だけで挫折してしまう事もあります。開発マシンを支給してくれる企業を選ぶ
こちらも上記と同じ理由で、Macを持っている学生さんは多くないのに、弊社のようにMacを基準にしているWeb系企業が多いため、開発環境とともに操作環境を統一する方が良いと思い書きました。
dockerを採用している企業を選ぼう
この記事を見てくださっている方は環境構築の経験があまりないのではないでしょうか?
そんな中、リモートで環境を構築する事は双方にとって、とても大変な事です。
そこで登場するのがDockerです。docker-composeという仕組みを使うとコマンド1つであら簡単に環境構築ができます!
うちのインターン生共々、docker-compose先生にはお世話になっております m(_ _ )mという事で、環境構築が不安な方はdockerを採用している企業かどうかもチェックしましょう!
報告は自分のためにする
弊社ではslackにレポートチャンネルを作り、仕事をした日にやった事を書きます。(もちろん社長の僕も書いてます)
よく 報・連・相が大切だ! みたいな話を聞くと思いますが、 半分正解 だと思います。何も考えず報告しても効果はないので、
自分にメリットのある報・連・相
を以下の方法でやってみるといいでしょう。報告を書くと言っても、ただやった事を羅列するのではなく、自分の困っている事を解決するための報告として書いてもらっているので、相談に近い形ですね!
さらに弊社のレポートには狙いがあり、不足しがちなコミュニケーションを補う場でもあります。
そのため、僕は24時間以内に必ず返信を入れています。Udemyの動画を買おう(買ってもらおう)
フルリモートでのインターンを認めている企業はおそらく小さい企業がほとんどではないかと思います。
そんな中で初心者に一から丁寧に教えるのはなかなか難しいかと。
そこで弊社ではudemyの動画を支給して各自で勉強してもらっています。
これなら人の負担も金銭的な負担も少なくなりますね!是非ともセールの際にはおねだりしてみましょう(笑)
オンラインミーティングに慣れよう
⬆︎の画像は弊社の社内もくもく会の様子なのですが、困った事が起こったりした際にはzoomで画面共有しながら解決する事も少なくありません。
特に顔を見ながら話せる時間は大切なので、恥ずかしがらずにオンラインミーティングを積極的に行っていきましょう!
弊社はRemotty(バーチャルオフィスツール)を使ってちょっとした雑談コミュニケーションを取っています
業務上のやり取りはslackを使っていますが、どうにもコミュニケーションが捗らなかったのでメンバーの表情が見えつつ、気軽に席でおしゃべりできる感覚のツールを導入して使っています。
Remottyを導入してから割とくだらない会話も生まれるようになってきたので、リモートワークの負の面は少し改善できてきてるので、こういった新しいツールも積極的に導入していける方が良いので、ITツールへの抵抗感は減らしておきましょう。
リモートワークで結果を出せる人の特徴
ここでは1年間フルリモートで人を雇った結果、以下の特徴があったので、自分に当てはまるか確認してみてくださいね! *随時更新
- リモートで仕事をする理由がある人
- 孤独耐性が高い or 仕事以外のコミュニティに所属している人
- 文章の他意を推測しない人
- モチベーションに左右されない人
リモートで仕事をする理由がある人
これは冒頭に書いた通りですね! 人間の本質は怠け者です。監視の目がないと怠けてしまう誘惑に負けてしまいますが、リモートで仕事をやらないといけない理由がある人はリモート勤務を守るためにがんばります。
孤独耐性が高い or 仕事以外のコミュニティに所属している人
特に在宅勤務の人は文章だけの簡素なコミュニケーションによって心を蝕まれることがありました。もしくはコミュニケーション不足で物足りないといって辞めていった方も居ました。
そのため、孤独でも全然大丈夫!といった元ひきこもりの方や、趣味の場などでコミュニケーションをよく取っている方は孤独に負けることなく淡々と結果を出していくことができますね。文章の他意を推測しない人
病みやすい人は要注意! 文章だけのコミュニケーションだとどうしても棘があるように感じてしまったり、「もしかして嫌われてるからそっけない文章なのかな?」などといった事を考え始めるともう仕事どころじゃありません。
そうなったら結果も何も出ないので、必要以上に文章の他意を推測する人はリモートワークで成功するのは難しいかもしれません。
*とはいえ、対策も可能なので弊社ではslackにオリジナル絵文字などを追加しまくって文章を楽しくしています!
モチベーションに左右されない人
リモートワークは基本的に性善説に基づいて運用されている企業が多いと思いますので、サボろうと思えばいくらでもサボれるんです。
人間は作業を始めると段々楽しくなってきて、仕事が捗ることがわかってきています。でもリモートだと出社という概念がなく、はじめる事を億劫に感じてしまうと、アウトプット0で終わってしまうことも多々あったようです・・・そのため、自分の気分に左右されずに決めた予定通り淡々と仕事を開始できる人が成功すると僕は考えています。
以上が今わかっているリモートワークで結果を出せる人ですね。みなさんは当てはまっていますか??
まとめ:フルリモートでインターンに参画すると人生の選択肢が増える
色々とネガティブな面も書いてきましたが、リモートワークでのインターンは間違いなく働く選択肢を増やすことができると思います。
弊社が全員フルリモートの理由
弊社のミッションは『人生の選択肢を増やす』事です。そのためにあえて地方の人をエンジニアとして雇っています。
もちろんリモートワークの課題はたくさんあって全て上手くいっているわけではありませんが、難しいリモートワークを解決できるように取り組んでる最中です。
特に何かしらの理由で在宅やリモートで働かなければいけない人を雇う事でミッションを実現しようと日々活動しています。
現在2名ほどインターンを募集していますので、もしこの記事を読んで弊社に興味を持ってくださる方ぎ居れば、ご連絡いただければ幸いです。