Upgrade to Pro — share decks privately, control downloads, hide ads and more …

201221 小さな工夫で効率化をもっと効率的に 佐野千紘さん

50bc42471d197d0dbef7171f2ef85bb6?s=47 comucal
PRO
December 21, 2020
590

201221 小さな工夫で効率化をもっと効率的に 佐野千紘さん

50bc42471d197d0dbef7171f2ef85bb6?s=128

comucal
PRO

December 21, 2020
Tweet

Transcript

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

  2. 自己紹介 $ 名前 $ 佐野千紘 $ 出身 $ 山梨県 $

    趣味 $ 小説を書くこと $ 2020年最大のニュース $ 第19回えほん大賞(ストーリー部門) にて、作品『犀の背中』が優秀賞に 選ばれました!
  3. 生産性とは? 刈り取れる 成果 投入する 資源 - 売上・顧客満足・契約継続率 - 働きがい・仕事の楽しさ -

    よりよい世の中・夢・希望 - 人・時間・お金・設備 - 現状維持 - 効率化 - 効率化ツールの保守
  4. ① 処理の意味単位の明確化 処理の意味単位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行目に入れる・・・
  5. ① 処理の意味単位の明確化 ただ処理を 並べて書くだけ よりも……

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

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

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

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

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

    -退院日に値があれば 退院日をG列から入力 -G列に値がなければ 退院日をB列から入力 通院日に値があれば -通院のラジオボタンを選択 -通院日をH列から入力
  11. ② データとプログラムの独立 ループ(Bot)の途中で使うExcelの値を ループ(Bot)の先頭で変数に入れておく

  12. ② データとプログラムの独立 ループ(Bot)の途中で使うExcelの値を ループ(Bot)の先頭で変数に入れておく メリット1 処理の途中でExcelの番地を 意識する必要がなくなり、 処理の意味だけに集中できる メリット2 Excelの番地が変わっても

    影響を極小化できる ここに郵便番号が入った場合 先頭で変数に入れておけば…… → Excelから変数に入れる部分 だけを修正すればOK! をやらないと…… → Excelの値を使っている箇所を 全部調査して修正 orz 保守 効率 ◎ 保守 効率 ×
  13. ③ 変数のネーミングルール 原則 a. 一見して変数の目的や中身が伝わるように b. 決まったルールに沿って整った形になるように c.「保守性」「可読性」を高める 具体的には? -

    大文字/小文字のルールを統一しておくといいよ! - 変数の先頭(プレフィックス)に型を明示しておくといいよ! ……などなど、諸説ありますが…… Prefix 型 例 b Boolean (真/偽) bHasAddress n Number (数値) nTotalAmount s String (文字列) sCustomerName ルールはあくまでも原則を実現するため のものなので、自分たちの組織に合った ものを、話し合って納得した上で取り入 れることの方がずっと大切! 目的 手段
  14. ③ 変数のネーミングルール ??? KokyakuJuusho という変数名はダサい…… ??? → ダサいかどうかよりも、 同じ会社のメンバーがすぐに理解できるかの方がずっと大事! CustomerAddress

    / KokyakuJuusho TotalAmount / GoukeiKingaku | ZeikomiGoukei | ZeinukiGoukei PatientName / KanjaMei → ローマ字の変数名を使う場合は、 あらかじめ表記ルールを統一すると◎ (検索性UP) じゅう → juu / ju / jyuu / jyu しょ → sho / syo
  15. ③ 変数のネーミングルール ☆ 個人的に気に入っているTips ☆ Prefix(変数の先頭)のネーミングルール Prefix 意味 詳細 i

    input(入力) Botが外部(親Bot、人の入力)から受け取る値。 処理の中では変更しない(変更する場合はvariableに渡してから)。 例)iFolderPath c constant(定数) アクセスするWebサイトのアドレスなど、 処理によって変更する必要のない値。当然、処理の中では変更しない。 例)cCompanyWebsiteAddress v variable(変数) 処理の中で中身が変わっていく値。 (ループのたびに変わる、条件によって変わる) 例)vGoukeiKingaku  ループのたびに値が増えていく o output(出力) Botが外部(親Bot、画面)に出力する値。 処理途中では上記i,v,cの変数を使い、 処理の最後に値を受け取る。 例)oGoukeiKingaku  ループ処理をすべて終えた 最終的な値だけが入る
  16. Thank you  使えそうな Tipsがあれば、 まねしてみて くだサイ