Slide 1

Slide 1 text

小さな工夫で 効率化をもっと 効率的に オートメーション・エニウェア・ジャパン 佐野千紘

Slide 2

Slide 2 text

自己紹介 $ 名前 $ 佐野千紘 $ 出身 $ 山梨県 $ 趣味 $ 小説を書くこと $ 2020年最大のニュース $ 第19回えほん大賞(ストーリー部門) にて、作品『犀の背中』が優秀賞に 選ばれました!

Slide 3

Slide 3 text

生産性とは? 刈り取れる 成果 投入する 資源 - 売上・顧客満足・契約継続率 - 働きがい・仕事の楽しさ - よりよい世の中・夢・希望 - 人・時間・お金・設備 - 現状維持 - 効率化 - 効率化ツールの保守

Slide 4

Slide 4 text

① 処理の意味単位の明確化 処理の意味単位1-2:ヘッダー部分の取得 処理の意味単位1-1:ファイルのオープン 処理の意味単位2-1:ループの前準備 処理の意味単位2-2:データ行の転記 - 入力.xlsxを開く - 出力.xlsxを開く - 入力.xlsxのB2セルを変数Nameに入れる - 入力.xlsxのB8セルの値を変数Dateに入れる - 入力.xlsx C6セルの値を変数Teamに入れる - 入力.xlsxの最終行を取得する - 変数Countに0を入れる - 変数hasHenpinをFalseにする - 入力.xlsxの4行目から最終行までをループ - A列の値を変数Idに入れる - B列の値を変数Hinmeiに入れる - C列の値を変数Tankaに入れる - D列の値を変数Suryoに入れる - TankaとSuryoをかけて変数Totalに入れる - 変数Idを出力.xlsxのA列のTimes行目に入れる・・・

Slide 5

Slide 5 text

① 処理の意味単位の明確化 ただ処理を 並べて書くだけ よりも……

Slide 6

Slide 6 text

① 処理の意味単位の明確化 小さな箱に入れて 整理すれば スッキリ!

Slide 7

Slide 7 text

② データとプログラムの独立

Slide 8

Slide 8 text

② データとプログラムの独立 F列に値があれば -入院のラジオボタンを選択 -入院日をF列から入力 -G列に値があれば 退院日をG列から入力 -G列に値がなければ 退院日をB列から入力 H列に値があれば -通院のラジオボタンを選択 -通院日をH列から入力

Slide 9

Slide 9 text

② データとプログラムの独立 F列って何が 入ってるん だっけ…… F列に値があれば -入院のラジオボタンを選択 -入院日をF列から入力 -G列に値があれば 退院日をG列から入力 -G列に値がなければ 退院日をB列から入力 H列に値があれば -通院のラジオボタンを選択 -通院日をH列から入力

Slide 10

Slide 10 text

② データとプログラムの独立 まったく同じ処 理だけど、断然 わかりやすい! ⇒ こうするためには…… 入院日に値があれば -入院のラジオボタンを選択 -入院日をF列から入力 -退院日に値があれば 退院日をG列から入力 -G列に値がなければ 退院日をB列から入力 通院日に値があれば -通院のラジオボタンを選択 -通院日をH列から入力

Slide 11

Slide 11 text

② データとプログラムの独立 ループ(Bot)の途中で使うExcelの値を ループ(Bot)の先頭で変数に入れておく

Slide 12

Slide 12 text

② データとプログラムの独立 ループ(Bot)の途中で使うExcelの値を ループ(Bot)の先頭で変数に入れておく メリット1 処理の途中でExcelの番地を 意識する必要がなくなり、 処理の意味だけに集中できる メリット2 Excelの番地が変わっても 影響を極小化できる ここに郵便番号が入った場合 先頭で変数に入れておけば…… → Excelから変数に入れる部分 だけを修正すればOK! をやらないと…… → Excelの値を使っている箇所を 全部調査して修正 orz 保守 効率 ◎ 保守 効率 ×

Slide 13

Slide 13 text

③ 変数のネーミングルール 原則 a. 一見して変数の目的や中身が伝わるように b. 決まったルールに沿って整った形になるように c.「保守性」「可読性」を高める 具体的には? - 大文字/小文字のルールを統一しておくといいよ! - 変数の先頭(プレフィックス)に型を明示しておくといいよ! ……などなど、諸説ありますが…… Prefix 型 例 b Boolean (真/偽) bHasAddress n Number (数値) nTotalAmount s String (文字列) sCustomerName ルールはあくまでも原則を実現するため のものなので、自分たちの組織に合った ものを、話し合って納得した上で取り入 れることの方がずっと大切! 目的 手段

Slide 14

Slide 14 text

③ 変数のネーミングルール ??? KokyakuJuusho という変数名はダサい…… ??? → ダサいかどうかよりも、 同じ会社のメンバーがすぐに理解できるかの方がずっと大事! CustomerAddress / KokyakuJuusho TotalAmount / GoukeiKingaku | ZeikomiGoukei | ZeinukiGoukei PatientName / KanjaMei → ローマ字の変数名を使う場合は、 あらかじめ表記ルールを統一すると◎ (検索性UP) じゅう → juu / ju / jyuu / jyu しょ → sho / syo

Slide 15

Slide 15 text

③ 変数のネーミングルール ☆ 個人的に気に入っているTips ☆ Prefix(変数の先頭)のネーミングルール Prefix 意味 詳細 i input(入力) Botが外部(親Bot、人の入力)から受け取る値。 処理の中では変更しない(変更する場合はvariableに渡してから)。 例)iFolderPath c constant(定数) アクセスするWebサイトのアドレスなど、 処理によって変更する必要のない値。当然、処理の中では変更しない。 例)cCompanyWebsiteAddress v variable(変数) 処理の中で中身が変わっていく値。 (ループのたびに変わる、条件によって変わる) 例)vGoukeiKingaku  ループのたびに値が増えていく o output(出力) Botが外部(親Bot、画面)に出力する値。 処理途中では上記i,v,cの変数を使い、 処理の最後に値を受け取る。 例)oGoukeiKingaku  ループ処理をすべて終えた 最終的な値だけが入る

Slide 16

Slide 16 text

Thank you  使えそうな Tipsがあれば、 まねしてみて くだサイ