SlideShare a Scribd company logo
1 of 35
Download to read offline
1
Excel取込みで失敗した先生
Sonic先生
2
自己紹介
Connpass ID Sonic先生こと
.NETラボ 岡田 将
.NETプログラマーやっています
(VB.NET、C#、Xamarin、SQLServer)
技術ブログもやってます
http://sonic.blue/it/
Sonic先生のしっぱい
1. 古い技術で後悔
2. Excel取込みが便利すぎた
3. 2進数の基本が出来ていな
かった
4. 切り捨て処理を舐めすぎてた
3
質問:
業務のデータ入力では
どんな方法があると思います
か?
4
業務のデータ入力を
Excelでできればと思ったことは
ないですか?
5
古い技術で後悔
いっそExcelでやってしまう案
→ マクロでめちゃくちゃ対応した
6
古い技術で後悔
いっそExcelでやってしまう案
→ マクロでめちゃくちゃ対応した
結果:
VBAの機能が貧弱すぎて後悔
7
古
い
技
術
で
対
応
す
る
と
運
用
の
苦
労
と
技
術
的
負
債
し
か
生
ま
な
い
顧
客
の
動
作
要
件
は
必
ず
し
も
必
須
で
は
な
い
(イ
ン
フ
ラ
除
く
)
8
Sonic先生の教訓
Excel取込みが便利すぎた
ということで、
もちろん.NETで制御できます!
というかやりました
9
Excel Onlineとか
よりExcelっぽいForguncyやSpreadsheetという選択もあり!?
ちなみに、過去こんなことも
やっていました
10
これはExcelへの出力制御→
Excel取込みが便利すぎた
Excel取込みのメソッド
NPOIを利用する(Nuget)
取込みファイルを用意する
セル位置指定して取り込む
11
Excel取込みが便利すぎた
運用開始すると想定してない
トラブルが・・・
13
しっぱい例1
取込み用テンプレートを提供
念のためロックした項目が編集される
セル位置指定がずれたり、文字列が紛れ込む
エラー発生(調査大変)
14
しっぱい例2
ちゃんと取り込まれる
後間違えたので修正したい
修正画面を用意していない
データ入れ替え方式なのに修正部分取り込まれる
データ紛失(バックアップよりサルベージ)
15
しっぱい例3
条件付き書式でエラー警告
警告に気づかず取込み
取込みチェックを顧客要望で甘くしてた(削除
データでも取り込みたい)
データ不整合(データメンテ発生)
16
こ
れ
で
な
ら
使
え
る
だ
ろ
う
と
(
エ
ク
セ
ラ
ー
)
Excel使
い
や
っぱ
無
理
な
人
や
り
過
ぎ
る
人
17
Sonic先生の一句
質問:
Excelでは常に正確な値で
演算処理されるか?
18
質問:
Excelでは常に正確な値で
演算処理されるか?
→ 処理されないことがある
19
20
Excelデモ
21
Excelデモ
もちろん結果は違う!
Excelデモ
22
Excelデモ
Bを100に修正する計が変わってと結果が「同じ」に!
Excelデモ
23
Excelデモ
計から1を計算で引いてるのに、なぜか違うと表示される
Excelデモ
24
Excelデモ
表示桁数を増やすとさらに桁があった!
IEEE 754 規格で循環小数が
例えば0.1を2進数で表すと
0.0001100110011001…
必ずどこかで切り上げられます
25
2進数の基本が出来ていなかった
2進数の基本が出来ていなかった
これを知らずにいい気になって、
次のExcel案件もホイホイ受けて
しまった
26
ちなみにいままで整数だけだったものが、
今度はパーセントをあつかう処理へ!?
2進数の基本が出来ていなかった
Excel関数では合計100%判定
でも実際には有効桁数で保持
されている
それをアプリ側で処理すると・・・
27
2進数の基本が出来ていなかった
やらかしました!
28
やっぱり知っている人には常識らしい・・・。
しっぱいパターン
整数なら問題なかった
Excelでのチェックはもちろん正常
プログラム側できっちり「1(100%)」で比較判定
循環小数でなければ正常に処理される
ついに有効桁数で処理された100%以上が来る
合っているのにエラー警告
29
エ
ク
セ
ル
は
数
学
で
は
な
い
ほ
ぼ
15
桁
(字
余
り
)
30
Sonic先生の一句
切り捨て処理を舐めすぎてた
なので、切り捨て処理を確実に
行う必要があります
31
切り捨て処理を舐めすぎてた
これだけちゃんと覚えて
帰ってください
ROUNDDOWN関数
(Excel関数)
32
切り捨て処理を舐めすぎてた
結論:
Excelは悪くなかった!
33
IEEE 754 規格に準拠して処理していただけなので、
プログラム側で対応すべき事案!?
炎上する事態の鎮火方法として
マイクロソフトの説明(ナレッジ)
があれば、確実にこちらの説明
の信頼性が上がります!
どんどん活用しましょう
34
小
数
点
の
扱
い
に
は
く
れ
ぐ
れ
も
注
意
し
、
ち
ゃ
ん
と
有
効
桁
数
を
確
認
し
て
、
し
っか
り
切
捨
て
処
理
を
行
った
う
え
で
、
用
法
用
量
を
守
って
正
し
く
プ
ロ
グ
ラ
ミ
ン
グ
し
ま
し
ょ
う
。
仕
様
で
も
ち
ゃ
ん
と
確
認
す
る
こ
と
(
DB
で
は
基
本
な
ん
だ
け
ど
・・・) 35
Sonic先生からまとめの開発安全標語
以上で授業を終わります
ありがとうございました
36

More Related Content

More from Sho Okada

AppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かすAppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かすSho Okada
 
ChatAIの未来予想図
ChatAIの未来予想図ChatAIの未来予想図
ChatAIの未来予想図Sho Okada
 
勉強会参加のすゝめ
勉強会参加のすゝめ勉強会参加のすゝめ
勉強会参加のすゝめSho Okada
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さSho Okada
 
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術Sho Okada
 
いままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなしいままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなしSho Okada
 
今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史Sho Okada
 
SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集Sho Okada
 
オープンソースでExcelレポートプログラミング
オープンソースでExcelレポートプログラミングオープンソースでExcelレポートプログラミング
オープンソースでExcelレポートプログラミングSho Okada
 
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話Sho Okada
 
メガネ型デバイスの未来について考える
メガネ型デバイスの未来について考えるメガネ型デバイスの未来について考える
メガネ型デバイスの未来について考えるSho Okada
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠Sho Okada
 
止めないためのWEBインフラ入門
止めないためのWEBインフラ入門止めないためのWEBインフラ入門
止めないためのWEBインフラ入門Sho Okada
 
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用Sho Okada
 
WebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorWebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorSho Okada
 
初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本Sho Okada
 

More from Sho Okada (16)

AppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かすAppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かす
 
ChatAIの未来予想図
ChatAIの未来予想図ChatAIの未来予想図
ChatAIの未来予想図
 
勉強会参加のすゝめ
勉強会参加のすゝめ勉強会参加のすゝめ
勉強会参加のすゝめ
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
 
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
 
いままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなしいままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなし
 
今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史
 
SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集
 
オープンソースでExcelレポートプログラミング
オープンソースでExcelレポートプログラミングオープンソースでExcelレポートプログラミング
オープンソースでExcelレポートプログラミング
 
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
 
メガネ型デバイスの未来について考える
メガネ型デバイスの未来について考えるメガネ型デバイスの未来について考える
メガネ型デバイスの未来について考える
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 
止めないためのWEBインフラ入門
止めないためのWEBインフラ入門止めないためのWEBインフラ入門
止めないためのWEBインフラ入門
 
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用
 
WebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorWebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazor
 
初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (10)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Excel取込みで失敗した先生