2016年11月29日

Excelで同じ数同士の引き算をしても、結果が0にならない不思議

【1−0.1×10は? 人工知能に怯える前に知ってほしいこと】
http://itpro.nikkeibp.co.jp/atcl/watcher/14/334361/112100725/

この記事では、Excelで1−0.1×10を計算すると0にならない、ことを紹介しています。
※厳密には(1−0.1−0.1・・・)と0.1を10回引き算するのですが。

小学校で算数を勉強した人からすれば意外に思う点ですが、これはコンピュータ計算の特性でもあります。
記事中でも次のように書かれていますが


これは、コンピュータのすごさとダメさの両面を、その仕組みとともに体験したうえで、コンピュータとの付き合い方を考えて身に付けるきっかけになればという思いからである

人工知能の脅威に怯える前に、コンピュータおよびプログラミングについて理解を深め、それらとの付き合い方を考えてみてはいかがだろうか。


人間が考えるようにコンピュータを動作させることの難しさを表現した記事でもあります。

実は、人間が学校で学んだ計算処理方式と、コンピュータが採用している計算処理方式が同じでないため、こういうことが起こるのです。
この記事では、なぜ1−0.1×10が0にならないかについては、丁寧に説明をしていません。
この記事を読んだ一般の人は、納得いかない妙な気分だけが残ってしまったかもしれませんね。私はその理由を知っていますが、これを説明するにはある程度の文章量でいくつかの前提を説明する必要があるので、私もここは割愛します。
怒らないでください(笑)


さて、この「同じ数を引き算すると0にならない事象」ですが、金融の現場では無視できないこともあります。
例えば、ライフプランシミュレーションなどシミュレーション系のシステムなら適当に四捨五入しちゃって問題ありません。
でも、例えば次のような場合、

・住宅ローン返済で、最後の月の返済をしたときに、住宅ローンの残高が1円未満の微量数になる
・預金の全額払い戻しの時、口座残高が1円未満の微量数になる

というケースでは、この微量数をうやむやにすることはできません。

この1円未満の微量数も、取引件数が増えて積みあがればその合計は1円を超え、時には万円の単位を超えることもあります。
これは金融取引会計上には現れないお金ともなるので、このお金をこっそり自分の口座に送金・・・なんてことがあってはいけないわけです。
なので、きっちりと小数点以下の端数処理を規定したり、そもそも同じ数の引き算をして0にならない仕組みを採用してプログラムを作っています。

システム屋さんの教育でも使われる話であり、久しぶりに思い出させてくれた記事でした。
でも、本文は人工知能とは一切関係ないのに、「人工知能に怯える前に」なんてタイトルをつけているので、これは釣りタイトルだなあとも思ったのでした。
posted by キヨ at 08:04| Comment(0) | TrackBack(0) | システム開発

2016年11月18日

Excelで、すぐに印刷プレビューする方法

もっと早くに知っていればよかった、というExcelのワンポイントテクニックです。

Excelには、印刷の見栄えをチェックするための「印刷プレビュー」という機能があります。
印刷プレビューをしたいとき、今まではメニューをたどって印刷プレビューを探したり、Excelの設定を変更して印刷プレビューのアイコンをリボンの中に埋め込んだりしていました。

でも、もっと簡単に印刷プレビューをする方法がありました。

「Ctrl + F2 キー」を押すのです。
この操作だけで、一発で印刷プレビューを呼び出すことができます。

印刷プレビューは、個人的には頻繁に使う機能です。
それが、一発で呼び出せるのは大変ありがたいです。

もっと早くに、このことを知っていればよかった・・・と妙に後悔しましたが、これからはスピーディに印刷のチェックができるので、「Ctrl + F2 キー」を愛用しようと思います。
posted by キヨ at 08:15| Comment(0) | TrackBack(0) | ビジネススキル

2016年11月08日

優秀なエンジニアの採用と育成

優秀なエンジニアをどのように採用し、どのように育成するのかは、IT業界にいる人であれば関心あるところでしょう。
こういう施策がある企業とない企業とを見比べると、そこに集うエンジニアの技量に差があることは、私自身の体験でも感じているところです。

共感できる記事がありましたので、ご紹介しておきます。

【サイバーエージェントの新卒教育は「不公平」である】
http://itpro.nikkeibp.co.jp/atcl/column/16/092700215/110100005/
posted by キヨ at 08:19| Comment(0) | TrackBack(0) | ビジネススキル

2016年10月21日

バグ発見の報奨金の仕組みも、万能ではない

【田嶋陽子氏、システムのバグ発見で1000万円単位の報奨金を…銀行員11億円着服容疑で提言】
http://headlines.yahoo.co.jp/hl?a=20161014-00000088-sph-soci


田島氏が述べたような方法を採用することで、不正がなくなる、という気持ちはわからなくはないですが、残念ながら万能な方法でもありません。

メディアは、この報奨金の仕組みを素晴らしいと伝える傾向がありますが、現実には運用上の問題もあります。
思うような成果を上げられなかったり、報奨金の仕組みが別の問題を引き起こすこともあります。
例えば、次のような問題点が指摘されています。

■1
脆弱性を発見して報告しても、「問題ではあるが脆弱性ではない」と言われて報奨金をもらえないことがあります。
また、「その脆弱性は他の人からすでに発見しており、今回は報奨金の支払いにはならない」と言われることもあります。
実際、報奨金の支払いは、脆弱性報告全体の1割にも満たないともいわれています。
あるハッカーがこういう経験を積んでしまうと、以後見つけた脆弱性を素直に報告せず、自ら悪用してみる、または悪用する組織に情報提供して利益を受ける、というモチベーションに変わることがあります。
善意の心が、恨みに変わってしまうということです。

■2
外部からはどうやってもアクセスできないシステムに対しては、この報奨金制度は事実上役に立ちません。
今回の銀行員の不正が、原理的に組織内部の人間にしかできない操作だったのであれば、いくら外部の力を借りても発見することはできません。

■3
脆弱性を発見したがる方が、必要以上にシステムに負荷をかけていしまい、正規の利用者がそのシステムを利用できなくなることがあります。
脆弱性報奨金制度を採用する場合、それに備えてシステム増強のコストを積まなくてはならない場合もあります。

■4
報奨金を得る目的で、次のように開発者が悪事を働くこともあり得ます。
・ある開発者がわざと脆弱性を仕込む
・その開発者が脆弱性の報告をするわけにもいかないので、別の人に脆弱性を伝え、報告してもらう
・得た報奨金を、裏でこっそり、開発者と山分けする

■5
思った以上に脆弱性を発見されてしまうと、報奨金支払いが多額になり、財務状況の悪化を招くこともあります。そうなると、そのコストはどこかに転嫁されていくことになります。
へっぽこエンジニアたちによって作られたシステム、仕組みがぐちゃぐちゃになって容易にメンテナンスできないシステムだと、このリスクがあります。

 
といろいろ書きましたが、そもそも不正を防ぐということはなかなか難しいものです。
犯罪者を擁護するつもりは全くありませんが、権限を持つ人がその気になれば、不正は行えてしまうことも多々あるのです。
そういう土壌をなくしていくことは、組織全体で永遠に取り組み続けなければならないことですが、根本的には、外部に頼って解決できるものではないのです。
posted by キヨ at 08:40| Comment(0) | TrackBack(0) | システム開発

2016年10月20日

コマンドプロンプトで、特定のプロセスを切る方法

コマンドプロンプトで下記のコマンドを入力すると、特定のプロセスを切ることができます。

taskkill /F /T /IM excel.exe

子プロセスもろともkillしたい場合は、/Tを合わせて指定します。
posted by キヨ at 20:21| Comment(0) | TrackBack(0) | OS・Windows

2016年10月03日

スタックトレースに行番号が表示されない場合の対処法

例外発生時に、スタックトレースに行番号が書かれていると、ソースコード中のどの箇所でエラーが発生したのかを迅速に把握でき、プログラムの改修をピンポイントで行えるようになります。
スタックトレースに行番号が表示されない場合は、次の原因が考えられます。

■拡張子pdbファイルがない
実行環境に、pdbファイルを配置し忘れたなどの理由が考えられます。
pdbファイルを実行環境に配置すれば、行番号が表示されるはずです。

■pdbファイルの対応付けが誤っている
pdbファイルはあるが、異なるビルドタイミングで生成した拡張子dllやexeのファイルと併存していることが考えられます。例えば、dllファイルは更新したが、pdbファイルを更新せず古いままだった、などが考えられます。
同じビルドタイミングで生成されたdllファイルとpdbファイルを、実行環境に配置すれば、行番号が表示されるはずです。

■VisualStudioの設定
VisualStudioでのビルドの設定により、pdbファイルが生成されない設定になっていることが考えられます。
VisualStudioのプロジェクトのプロパティを開き、
設定項目:ビルド>詳細設定(D)>デバッグ情報
設定値:fullまたはpdb-only
と設定すれば、pdbファイルが生成されるようになります。

本番稼働環境にはpdbファイルを置くな、という意見も多くあります。
ただ、本番環境で万が一不具合が発生した時に、的確に最速でバグを回収して本番環境を再更新が必要とされる要件がある場合には、pdbファイルを置いておくのも一考に値します。
posted by キヨ at 20:40| Comment(0) | TrackBack(0) | .NET技術

2016年09月28日

suicaカードをバージョンアップしてきた。快適suicaライフ〜!

私はsuicaを、電子マネーの中で最も活用しています。
自宅にある機械で、suicaにチャージしたり残額を確認することもできます。

suicaを愛用している理由は、電車にスムーズに乗れることはもちろん、suicaで買い物をすれば常時1.5%のポイント還元があるからです。
手持ちのクレジットカードより還元率がよく、同じ買い物をするにしてもsuicaで払った方がいちばん得になります。ビットコインにはこんな仕組みがないので、個人的にはビットコインなんか使う気になれません(笑)

さて、この週末に、suicaカードを更新してきました。
suicaのサービスの中には、インターネットに対応したサービスがいろいろあります。しかしsuicaのカードにもバージョンがいくつかあり、古いsuicaだとインターネットサービスが利用できないのです。
手元にあったsuicaカードの1枚が、今から15年ほど前に入手したもので、インターネットサービスに対応していませんでした。見分け方は、suicaマークの右下に緑色の●記号が2つついているかどうかで判断できます。
2つの緑の●記号があればインターネットサービスに対応、そうでなければ非対応、ということになります。

どうしてもこの非対応カードを、インターネットサービスが使える定期券として利用したかったので、みどりの窓口でカードを更新し、めでたく最新バージョンのsuicaカードに変えてもらいました。手数料は無料です。
さらにこの定期券にオートチャージの機能もつけて、改札機でも自動チャージするよう対応させました。駅の券売機でも自宅でもチャージの手間がなくなるので、とても便利です。

suicaの更新に当たり、チャージ金額は新しいsuicaに移行されます。しかし更新前のsuicaは、10年以上使っていないものでした。
チャージした金額は10年使われず経過すると無効になると規約で定められています。恐る恐るチャージ金額を確認すると、ありがたいことに残額が移行されていました。100円だけでしたけれど(笑)
無利息で10年以上も温存されていたこの100円を、今後ありがたく使うことにします。

suicaの更新に関しては、JR東日本のサイトにも書いてあります。リンク張っておきますので、同じく更新が必要な方は参考にしてくださいね。
https://www.jreast.co.jp/suicainternetservice/registcard/suica.html
posted by キヨ at 20:40| Comment(0) | TrackBack(0) | 日記

2016年09月21日

amazonのサービスレベルにちょっとがっかりした、というお話

先日、数万円の高価なパソコンの部品が郵便受けに放り込まれていました。
amazonで購入したものでしたが、手渡しでなく受領のサインも行われず、数万円もする品をポストにポン!というamazonの配送姿勢に、疑問を持ってしまいました。

調べてみたところ、以前からある一定サイズ以下の配送物であれば、amazonはこういった郵便受けに入れる形態の配送方式を採用しているようです。
この方式だと、何かしらの配送トラブルがあったり、郵便受けから抜き取られても、補償を受けることができません。ダイレクトメールじゃあないんだぞ!ってこちらは思っているわけであるのですけれども。

これまでamazonを何度も使っていましたが、いずれも郵便受けに入らないサイズのものだったので、ゆうパックや宅配便など玄関先で受領サインを伴う受け取り方式でした。今回初めて、こういう配送のありかたに遭遇したのです。

amazonは送料無料をうたっていますが、まさかポスト投げ込みだとは想像していませんでした。もしかしたら注文時にどこかにそんな記述があったのかもしれませんが・・・
amazonとしては送料分だけコスト負担があるので、できるだけ安くすませるために、こういう方法をとっているのかもしれません。
amazonプライム会員という年会費4000円ほどのサービスに加入すれば、ポスト投げ込み方式ではなく玄関受け取り方式になるのか・・・と思いきや、そこは同じみたいですね。

これが外資系企業の標準サービスであり、サービスの質にこだわるのは日本人特有なのかなあ、とかいろいろ考えてしまいました。

ちなみに、ヨドバシカメラの通販も結構利用しています。
こちらは350円のプリンタインクを1個だけ買った場合であっても、わざわざ玄関まで配達してくれ、受領のサインまで求められます。
これとは大きな違いだなあと感じます。

これを機会に、今後の通販サービスでは、配送方式がどうかまでチェックしようと思ったのでした。
でも、送料込みで同じ価格だったら、もうamazonは選ばないかなあ・・・
amazonのサービスレベルに、ちょっとがっかりしたというお話でした。
posted by キヨ at 08:55| Comment(0) | TrackBack(0) | 日記