PCだい「ちゅき」

気がつけば庶事手伝い

目次

Blog 利用状況

ニュース

・H24/01/02
 Microsoft MVPを受賞しました
・H23/11/18
 MCTの憂鬱さんと相互リンクを張っていただきました^^
・H23/09/10
 プログラミング生放送でスピーカーさせていただきました^^ ・H22/12/18
 わんくま同盟でスピーカしました^^
さて、来年はどんな年になるかな。予想が当たるといいなぁ。
・H22/07/17
 わんくま同盟でスピーカしました^^
技術系のセッションは久しぶり。VB! VB!
・H22/03/13
 Tech FieldersでLTのスピーカしました^^
・H21/12/12
 わんくま同盟でスピーカしました^^
最近はずっとLT担当だったので、ちょっと新鮮でした^^
・H20/11/18
 Tech Fielders セミナー 大阪の
 Lightning Talkで優勝しました^^
・H20/8/23
 わんくま同盟で2回目のスピーカしちゃいました
 WCFと戯れてみました^^
・H20/5/17
 わんくま同盟でスピーカしちゃいました^^
 ちゃんとスピーカー持参しましたよんw
・H20/2/22
 なめ猫の参加証もらいました^^
・H20/1/22
 テンプレートを変えてみました^^
・H19/7/23
 ACEプログラムで、ナップサックをもらった上、工具セットももらえることになりました^^
・H19/1/11
 1が並ぶ縁起の良い日に投稿開始!。今後ともお付き合いよろしくお願いします
・H18/10/29
 参加させていただきました^^
ド・初心者ですがどうぞよろしくお願いします。

↓うーん、仕事しろ^^;
Chukiの脳内メーター

Chukiの脳内メーター

書庫

日記カテゴリ

ギャラリ

コミュニティ

相互リンク

2021年7月26日

RPAをやる前の事前準備。Excelの基礎知識

★★★この記事はUiPathブログ発信チャレンジ2021サマー、26日目の記事です。★★★

RPAで効果を上げていくためにはExcelのデータ活用がとても重要です。
そして、Excelのルール作りや徹底はなかなかに大変です。(とくに、ずっと使ってた人たちに表記方法変えてもらうのとか、すごくハードルが高いです)

そんな時、一言「国のルールですよ?」の一言で終わるナイスな資料があります。
そう、みんなご存知、タロー(河野太郎代議士)のTwitterネ申対応!で有名な神エクセル対応の資料が昨年末出ています。

話題になっている割には、RPA界隈で出てこないので、ぜひ皆さんExcelシートの見直しに使ってください。
表向き、すごく難しそうなお題がついていますが、内容は「ネ申エクセル対応!」くらいに平易でデータ活用に必要なことが書かれています。ちゃんと、修正前のダメな例と直し方を例示されてあって、どんな人にもわかるようになってます。DBの理論とか知らなくてもちゃんとわかるように書いているあたり、すべての国民に周知させることがお仕事の人たちが作った資料だけあります。


GodExcelSample
図:1セル1データとなっているか


総務省|報道資料|統計表における機械判読可能なデータの表記方法の統一ルールの策定 (soumu.go.jp)

(なんか、ブログチャレンジ2021サマーに参加したいな、と思ったらちょうどいい早い者勝ちネタが残ってました^^;)

posted @ 11:44 | Feedback (75)

2018年12月19日

Windows OSとか Active Directoryのセキュリティーグループに所属するかを確認したい!

ここ最近、UiPathでイロイロ遊んでます。そこでUiPath (ja) Advent Calendar 2018に参加してみました。第二弾!

結論!

セキュリティー担保したいなら、Orchestrator買え。以上。


はじめに

UiPathを軽くみんなでお安く使用しようとすると、Node-Lockedライセンスという共有端末をみんなで使うライセンス形態があります。しかし!、この場合、どのユーザーでログインしても、端末に入っているすべてのロボットが見えてしまいます。つまり申請系と承認系のロボットが起動できてしまうという、監査人大喜びのツッコミどころができてしまいます。

そこで、ユーザーがActive DirectoryなりWindows OSのセキュリティーグループに所属しているかを確認するプログラムを作ってみます。

Active Directoryでは、グループの中にグループを突っ込めたりするので、単にグループのメンバーの一覧取得だと、ガッつり再帰かけないといけないので面倒すぎます。この時IADsGroupクラスのIsMember を使うのがいつものパターンです。

ではやってみる。

image

↑OrchestratorなしのNode Lockedライセンスだと、すべてのロボットがどのユーザーにログインしても見えて実行が可能

Orchestratorなしで頑張ってみる

まずは、参照の追加。DirectoryEntryは System.DirectoryServicesの参照を追加して…あれ?IADsGroupはCOMだけどどうやって参照するんだ?

image

XAMLで追加するのはあくまでclr-namespaceなので、きっぱりあきらめる。
ここで登場するのは、「カスタムアクティビティ

自分でもサクっとアクティビティを作れてしまうのがUiPathのいいところ。だって、まんまWFなんだもの。

■作業

1、プログラムを作成

2、パッケージを作成

3、UiPathに読込

4、使ってみる


1、プログラムを作成

新しい.クラスライブラリ(NET Framework)のプロジェクトを作って次の4つを参照追加

.NET
・System.Activities
・System.ComponentModel.Composition
・System.DirectoryServices
COM

・Active DS Type Library

(コードは最後に入れてます)


2、パッケージを作成

詳しい作成方法は、「カスタムアクティビティ」をごらんあれ

image

3、UiPathに読込

「パッケージを管理」から設定を押して、作成したパッケージの場所を追加してください。詳しくは(以下略
Activitiesペインに表示されるようになります

imageimageimage


4、使ってみる

ローカルコンピューターのAdministratorsグループにいるかを確認

TargetGroup:”Administrators”
TargetService:System.Environment.MachineName

image

image

成功!!!

こんなもん作ってメンテナンスするくらいなら、Orchestrator買いましょう^^;

以下、コード

Imports System.Activities
Imports System.ComponentModel
Imports System.DirectoryServices
Imports ActiveDs

Public Class IsGroupMember
     Inherits CodeActivity

    <Description("Domain | Domain\ComputerName | ComputerName")>
     <Category("Input")>
     <RequiredArgument>
     Public Property TargetService As InArgument(Of String)

    <Description("対象のグループ名")>
     <Category("Input")>
     <RequiredArgument>
     Public Property TargetGroupName As InArgument(Of String)

    <Description("結果")>
     <Category("Output")>
     <RequiredArgument>
     Public Property Result As OutArgument(Of Boolean)
     Protected Overrides Sub Execute(context As CodeActivityContext)
         Dim comInfo As DirectoryEntry = New DirectoryEntry("WinNT://" + TargetService.Get(context))
         Dim theGroup As DirectoryEntry = comInfo.Children.Find(TargetGroupName.Get(context), "group")
         Dim localgroup As IADsGroup = CType(theGroup.NativeObject, IADsGroup)
         Dim currentUser As String = "WinNT://" + System.Environment.UserDomainName + "/" + System.Environment.UserName

        Result.Set(context, localgroup.IsMember(currentUser))
     End Sub
End Class

posted @ 21:00 | Feedback (612)

2018年12月13日

UiPathで"LINQ to DataSet”を使いたい!

ここ最近、UiPathでイロイロ遊んでます。そこでUiPath (ja) Advent Calendar 2018に参加してみました。

UiPathって、.NET使いなら見た瞬間あれもこれもしたくさせたくなるRPA製品だったりします。
かなり良くできていて、そのままでも十分使えるのですが、少しでも.NETを使ったことのある方ですと、.NETのアセンブリを使って、もっといろんなことがしたくなるはずです。勉強用や個人用だとタダで使えたりしますので皆さんもぜひ遊んでみてください。(詳しくはちゃんとライセンス条項読んだって下さい、責任なんて取れませんw)

本題

さて、皆さんDataTableの扱いどうされていますか?
現在は Entity Framework に押されて微妙な立場ですが、DataSet ではインメモリ DB を目指してたのでは?と思えるほどがっつりイロイロできます。UiPathは、ExcelのシートやCSVをDataTableに取り込めるのでDataTableをゴニョゴニョできるとすごく便利です。

そんな私に DataTable を SQL 文ライクでゴニョゴニョできる「LINQ for DataSet」はすごく便利です。
UiPathでは、データテーブル関連の部品が増えてきていますが、やっぱりLINQ使えると開発効率が全く違います。

ということで、LINQ for DataSetを使って遊んでみましょう

UiPathでLINQ to DataSetを使ってみる

1.準備

LINQ to DataSetで必要な.NETのアセンブリは次の二つです。

  • System.Data
  • System.Data.DataSetExtensions

早速使ってみましょう・・・ 無いorz

まぁ、アセンブリ参照の追加はいつものことなので、さっそく追加・・・ GUIが無いorz


■LINQ to DataSetを使うための準備

「UiPath.Web.Activities」をパッケージから追加する。そうすると、上記アセンブリが参照されて LINQ to DataSet が使えるようになります。

■開発者、というか保守まで考えてる人向け

欲しいアセンブリだけ入れれば良い。パッケージ追加は邪道!という個別参照追加命!な方へ

● UiPath で参照を手動追加、または参照しているアセンブリを確認する方法(実は一番ブログに残しておきたかったの、これかもしれない^^;)
1)追加したいワークフローの XMAL ファイルを、テキストエディタで開く
2)アセンブリ一覧を確認。必要なアセンブリがなければ追加する。
   <TextExpression.ReferencesForImplementation>
     <sco:Collection x:TypeArguments="AssemblyReference">
       <AssemblyReference>System.Activities</AssemblyReference>
       (中略)
       <AssemblyReference>System.Data.DataSetExtensions</AssemblyReference>
3)保存
※いうまでもなく、アセンブリが足りないというエラーが出たときは、XAMLファイル開いてアセンブリを確認するよりも前にパッケージの有無やバージョンを確認しましょう


2. LINQ to DataSetの使い方

山ほど出てくるからググレ!(あ、終わった・・・)

せっかくなので、ちゃんとUiPathで動くか確認してみましょう。
以下、サンプルデータはこの投稿の最後にあるものをUTF-8形式のCSVで保存して使ってます

1) いわゆるWHERE句で検索

では、データから私「ちゅき」の行を取得してみましょう。

○代入(Assign)アクティビティ
左辺 (DataRow型):dr
右辺:From row In dt Where row("名前").ToString = "ちゅき"

はい、ビックリマーク来た

image_thumb1

下表では「ちゅき」は一意ですが、実際はいくつ返されるかわかりません。
そのため、受ける変数はコレクションである必要があります。

結果が一つしかないことが分かっている場合は上側、複数ある時は下側のように書きましょう

○代入(Assign)アクティビティ
左辺 (DataRow型):dr
右辺:(From row In dt Where row("名前").ToString = "ちゅき" ).FirstOrdefault()

○代入(Assign)アクティビティ
左辺 (System.DataEnumerableRowCollection<DataRow>型):dr
右辺:From row In dt Where row("名前").ToString = "ちゅき"


2) WHERE句で遊んでみる

当たり前ですが、こういう書き方もできたりします。ただ、いきなりString型にできず、いったんObject型になります。このあたり、褒貶毀誉があるLINQ to DataSetのバカかアホかと怒られる理由だったりします。

○代入(Assign)アクティビティ
左辺 (System.DataEnumerableRowCollection<Object>型):names
右辺:From row In dt Where row("住所").ToString.SubString(0,3) = "福岡県" Select row("名前")

取り出した namesはこんな感じで使えるので、イメージ通りだと思います。

image_thumb

取り出したデータを Count メソッドで数えればデータ個数なんかもすぐにとってこれます。


3)ほかにもいっぱいSQL文っぽいやつ

使える句はこんな感じです。ただ、思いっきりデータを展開して結合したりするので、あんまりえげつないことをするとメモリがパンクするかも・・・。まぁ、オンメモリDBがメモリイーターなのはご存知の通りですね^^;

クエリ一覧

Aggregate 句
Distinct 句
Equals 句
From 句
Group By 句
Group Join 句
Join 句
Let 句
Order By 句
Select 句
Skip 句
Skip While 句
Take 句
Take While 句
WHERE 句


最後に

LINQ使えるようになると、DataTableに限らず、VBでイロイロ記述できるようになるので是非のぞいてみてください。
UiPath開発者の必須項目になるかも・・・。


表.各地の勉強会でなんかあったらお世話になるところ

-- list.csv---
名前,郵便番号,住所,電話番号
中,100-8929,東京都千代田区霞が関2丁目1番1号,03-3581-4321
とっちゃん,231-0002,横浜市中区海岸通2丁目4番,045-211-1212
ちゅき,540-8540,大阪市中央区大手前三丁目1番11号,06-6943-1234
You & I,460-8502,名古屋市中区三の丸2-1-1,052-953-9110
むたぐち,650-0011,神戸市中央区下山手通5丁目4番1号,078-341-7441
ゆーち,812-8576,福岡県福岡市博多区東公園7-7,092-641-4141
どらん,803-0811,福岡県北九州市小倉北区大門1丁目6?19,093-583-1110

posted @ 22:00 | Feedback (3233)

2017年2月10日

わんくま同盟大阪勉強会#69への道順

2月11日のわんくま同盟大阪勉強会第69回会場への道順です。
会場の東淀川区民会館は、駅を降りて道なりに行けばつくのですが、初めてですと入り口がわかりにくい・・・。
ザックリ道順です。
1、駅を降りたらデイリーストアのある信号までひたすら南下。地図見てわかるとおり、南行きの道はすべてこの信号へ通じてます。
ひたすら南下
2、デイリーストアがある信号まで来たら左折してください。
3、スポーツセンター前の看板を右折して歩いていくと、奥の建物が図書館などが入っている会場です。
会場は看板手前の道を入って奥の建物隣

(地図はBingマップ、画像はGoogleマップから作成しています)

posted @ 11:53 | Feedback (39)

2017年1月14日

Windows 10 のIME モードを画面に表示する

Windows 10をアップデートしたら、IMEモードが画面のど真ん中に表示されてとてもありがたい。

image

 

まだ表示させていない人は、タスクトレイの「あ」とか「A」とか表示されているところを右クリックしてプロパティを表示して「アイコンをデスクトップに表示する」のチェックを入れてみてください。

imageimage

posted @ 14:17 | Feedback (0)

2017年1月2日

【ご報告と本年の抱負のようなもの】Microsoft MVPを再受賞しました

旧年中はお世話になり大変ありがとうございました。

おかげさまで、Enterprise MobilityとしてMicrosoft MVPを再受賞することができました。
賞に恥じぬよう、今後も精進してまいります。

現況はクラウドコンピューティングサービスやマルチデバイス化の方向性はすでに当たり前の段階であると言える状況下です。思えば、昨年度はクラウドコンピューティングに関する今後のビジネスについて、関学IBAで修士を取得しこれからのICT業界についてのインプットをさせていただいた年だったと考えております。本年度はEnterprise Mobilityでのコミュニティー活動で皆さんがICTを通して幸せになれるようアウトプットの年にしてまいりたい所存です。

今後とも一層関西を中心に日本そして世界がICTを通して幸せになれるよう、精進してまいりますのでどうぞよろしくお願いいたします。

 

image

posted @ 8:10 | Feedback (2710)

2016年1月2日

Microsoft MVP再受賞のお礼

このたび2016年もMicrosoft社からMVPの受賞をいただくことができました。

今後とも、少しでもIT業界から世界へ貢献できるよう努力してまいりますので今まで通りのご指導よろしくお願いいたしますm(__)m

 

以上、手短ですがお礼とご報告まで

posted @ 0:55 | Feedback (2)

2015年10月18日

画像検索、知らなきゃ損?

資料などに使う画像。一応、Googleさんの「検索ツール」で探せます。

ほんとに許可されてるかどうかは知らん^^;

毎回ちゃんと確認してください^^;

 

posted @ 11:28 | Feedback (0)

Active Directoryといえば思い出すもの「Azure Active Directory Domain Services」

ADってディレクトリなのに、やっぱり思い出すのはドメイン。
NTのころからドメインといえばポリシー作って参加するモノの構成を縛るための機能。
やっぱりこれがないと、ADという気がしません。
(一応、認証系のサービスとドメインサービスはActive Directoryの中で別れていますが、やっぱり認証とドメインがくっついてこそのADですよねぇ^^;。ドメインコントローラ立てることをAD立てるっていう人多いし^^;)

 

元ネタ:

[Windows]Azure Active Directory Domain Servicesを触ってみた

http://damedame.monyo.com/?date=20151017#p01

posted @ 10:35 | Feedback (1)

2015年10月12日

Windows 10でもまだまだ Windows Live Writer

このブログの書き込みには、まだまだLive Writer が現役です。

Mailとかは OS 付属の Universal アプリを使っていますが、書き込みにはまだまだこれを使てます。

楽ちんなんですよねぇ^^;

http://windows.microsoft.com/ja-jp/windows-live/essentials

それにしても、URL直打ちしないと私のBlogが出てこないのは、もう使用なんですねぇ(T_T)

http://blogs.wankuma.com/chuki

が死んでからどれくらい経つんだろう^^;

posted @ 15:09 | Feedback (0)