HOME » 技術情報ブログ
技術情報ブログ
技術情報ブログ
AIってすごいの?
2024/07/16
- AIの定義
- AIのすごいところ
- AIの活用例と生成AI
- 0とはどんなもの
- 1とはどんなもの
- 9とはどんなもの
- 1、2、3、5、7は輪っかが無い
- 0、6、9は輪っかが1つ
- 4は三角形のような輪っかが1つ
- 8は輪っかが2つ
- 輪っかが繋がっていなくて、輪っかとして認識しなかった
- 画像のゴミを曲線や輪っかと誤認識してしまった
- 書き方のクセで三角形なのか輪っかなのか区別できない
- CT画像を画像認識による病気の早期発見
- 画像認識による不良品チェック
- カンニング防止システム
- 貨物量の予想
- chatGPT
- 画像生成AI
続きを読む:AIってすごいの?
C++という言語について
2023/09/12
- 他の言語と比べてどういう特徴があるか
- どういった分野、モノに使われているか
- なぜ「難しい」と言われているのか
- 余談
DXとは?
2023/05/19
IEが使用できなくなった?
2023/02/03
Windows11 にするとどう変わる?
2022/12/07
C/C++ のコンパイル時最適化に注意する
2022/08/19
C++ CString 文字列比較ってどれが速いの?
2022/05/11
今年の4月で入社11年目になりました。
自分はまだまだ若い気持ちでいますが、新入社員の方を見ると歳を感じますね...。
さて、久しぶりではありますが技術ブログの更新です。
前回の更新が5年前のようで...スミマセン。
「C++ CString 文字列比較ってどれが速いの?」
更にその中で、文字列を扱うクラスと言えば「CString」がありますね。
サイズを気にせず代入や結合が簡単にでき、フォーマットや文字列比較もできるという、至れり尽くせりな便利クラスです。
ということで、今回は「CString」について紹介していきたいと思います。
といっても全部紹介していると日が暮れるので「文字列比較」、更にはその「処理速度」にスポットを当てて話をしたいと思います。
- CString str1 = _T("abc");
- CString str2 = _T("123");
- bool bSame = false;
- if (str1 == str2) {
- bSame = true;
- }
上記のようなコードでもプログラム的に問題はありません。
しかし処理速度の観点から見ると、もっと良いコードが書けます。
ではどのようなコードが速いのか?
検証を行ってみたので、その結果を紹介したいと思います。
Vdk4jQnifyheeUVSJMAD2FdUXyCfR9HRTACieCMBVDguC3ALbU
vDK4JqNIFYHEEuvsjmad2fDuxYcFr9hrtacIEcmbvdGUc3alBu
使用した関数は以下の4つ。
- Cstring::Compare
- Cstring::CompareNoCase
- _tcscmp
- CStringの等価演算子(==)
測定する関数以外のコードはコメントアウトしています。
- bool bSame = false;
- CString str1 = _T("Vdk4jQnifyheeUVSJMAD2FdUXyCfR9HRTACieCMBVDguC3ALbU");
- CString str2 = _T("vDK4JqNIFYHEEuvsjmad2fDuxYcFr9hrtacIEcmbvdGUc3alBu");
- // 測定start
- auto start = std::chrono::system_clock::now();
- for (int i = 0; i < 1000000; i++) {
- //bSame = (0 == str1.Compare(str2));
- //bSame = (0 == str1.CompareNoCase(str2));
- //bSame = (0 == _tcscmp(str1, str2));
- bSame = (str1 == str2);
- }
- // 測定end
- auto end = std::chrono::system_clock::now();
- // ミリ秒→秒 変換
- double dSec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() * 0.001;
- // 出力
- CString strResult = _T("");
- strResult.Format(_T("%lf"), dSec);
- ::AfxMessageBox(strResult);
- Cstring::Compare 0.030
- Cstring::CompareNoCase 1.380
- _tcscmp 0.003
- CStringの等価演算子(==) 0.037
上記の結果を見ると、基本的には「_tcscmp」を使うのが良さそうですね!
C++11から導入された標準ライブラリで、現在時刻の取得や時間計測ができます。
以下は処理時間を計測する時のサンプルコードです。
- auto start = std::chrono::system_clock::now();
- // この間に測定したい処理を書く
- auto end = std::chrono::system_clock::now();
- // 処理時間を取得(ミリ秒→秒に変換)
- double dSec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() * 0.001;
応用すればラップタイムの出力もできるので、ぜひ使ってみてください!
ちょっとテーマがピンポイントすぎたかもしれませんが、皆さんのお役に立てれば幸いです。
次回も乞うご期待ください!
ありがとうございましたm(_ _)m
エクセルやアクセス利用時の落とし穴について
2017/02/14
- エクセルやアクセスのバージョンが変わったので利用できない
- 間違って更新、削除してしまう
- 属人化や維持メンテの問題
- 細かい権限設定ができない
エクセルやアクセスのバージョンが変わった際に、それまでのバージョンで動いていた処理が動作しなくなることがあります。
しかもそのシステムの定義書や設計書などが存在せず、開発者の頭の中だけに設計図があることが多く、さらに悪いことにシステムを作った人の異動や退職等で改修が不可能な場合は、そのシステムは使い物にならなくなったり、改修費用が想像以上にかかったりします。
何時間もかけて作成した集計表などを共有サーバにアップした際に、他の人の別のシートやデータベースの更新作業を行ったエクセルでアップロードされてしまい、せっかく作った物が更新、削除されてしまったことはありませんか?
結局、それまでの各々の作業時間がムダになりますし、似たような名前のファイルが作成され、何度もファイルの中身を確認しては入力し直し...の繰り返しで思いのほか手間がかかります。
どんな会社にも1人はいる"エクセルマスター"、"アクセス名人"。
複雑な関数やマクロを駆使して出来上がった、超便利なエクセルファイル。
ただしコピー&ペーストを繰り返しているうちに値がおかしくなっていき、原因を探ろうにも、参照先をたどっていくのが難しっかたり、その作った人が急に休職、退職してしまったら...もう誰にも直せません。
特定の部署や、特定の関係者だけで把握したり、利用したいデータがあるのに、ユーザによって編集・参照権限をデータの項目ごとに設定できずに困ったという経験はありませんか?
また設定とか確認のプロセスとか細かいことが沢山あって、利用する際に逆に複雑怪奇になってしまうことも多々あります。
「どこから手を付けてよいか分からないし、とりあえず今動いているからしばらくこのままでいいや」とお考えの方や、「どうせ高いんでしょ」と諦めている方も多いと思います。
しっかりとした業務分析や課題整理を行った後に導入するパッケージソフトやシステム化によって、エクセルでの作業をただ単純に効率化させるというだけではなく、会社全体として利益を生む、自社にマッチしたシステムが出来上がります。
ハイテックスでは、ITを活用した業務改善のお手伝いをさせて頂いております。
また、ご提案の際は、費用対効果を明示した上でシステム導入のメリットとデメリットをご説明させて頂きます。
小さな業務改善も近い将来の大きなビジネス変革につながっていきますので、先ずはお気軽にご相談頂ければと思います。
なぜ、エクセルで見積書や請求書を作成・管理すると、いずれ大変なことになるのか?
2014/10/16
さまざまな業務シーンで利用されているエクセルやアクセス。特にエクセルは簡単に管理が行えて、金額や数値の集計を行うには大変便利です。エクセルのシート間やファイルごとの集計も、マクロやVBAを利用することで、集計の自動化も可能で、データ管理や集計処理、一覧管理にはとても便利なものです。
しかし、扱う品目や項目が増えてきたり、データ量が多くなってくると、途端に管理するのが大変となってきます。また、どのエクセルファイルに何を記録してあるのかなど、すぐに必要な情報に辿り着くのも難しくなってきます。
さらには、見積管理だけと思って始めたものが請求管理、顧客管理、在庫管理などと業務量や取り扱うデータが広がっていったり、多拠点・多人数の大勢での情報共有となると、機能的制約で問題視されたり、管理できなくなってきたりします。
Excel(エクセル)も一応デジタルなのに、なぜこのような課題が出てくるのでしょうか?
答えは簡単で、Excel/Accessはあくまでも小規模利用を想定したファイルベースのアプリケーションであり、見積管理や顧客管理を行うための専用のツールではないからです。ただ見積管理ができそうなツール(Excel)が目の前にあったから普及しただけです。最初からインストールされていたPCなら新たに費用も発生せず無料ですし、また取っ付き易くて始め易いですから・・・
【Excelの限界点】
- 検索の手間
- データ容量増大による処理速度低下
- マルチユーザー環境での不満、同時に編集ができない
- データ管理が個人に依存しているため、組織で管理できていない
- セキュリティが不安
- 何回もの入力手間とミス
- バックアップの管理コスト
- 他の拠点や外出先では閲覧できない
お客様の名前や見積番号・顧客IDなどの簡単な条件での検索はできますが、「昨年10月ごろ?に見積した○○様の物件で...」などと複雑な検索条件を組み合わせて探すのが難しく、電話がかかってきたタイミングで目視で探したり、チェックしたりと手間が生じます。
ファイルベースであるが故の制限も多くあります。昨今では、データベースで画像やPDF文書のようなバイナリデータを扱うケースも増え、適用業務の拡大とも相まって、データサイズは日々増大する傾向にあります。
PCのスペックにも依存しますが、データサイズが大きくなり2,000件以上の見積管理(見積履歴や接触履歴などを含む)を行うのは、検索や編集時に"画面が止まる"というストレスを感じることもあるでしょう。
また、ファイルベースであるということでは、容量を2ギガバイト以上に拡張することはできません。対象ファイルのデータ容量が拡大すれば、どこかでファイル自体を分割しなければならず、ファイルを分割すれば、当然ファイル管理は煩雑となり、データを更新するにも対象のテーブル/ワークシートが見つからない、あるいはデータ分析を行うにも複数のデータベース/ワークブックからデータを抽出し、再結合するなどの余計な作業を強いられることにもなりかねません。
業務量が増えてくると、一般的にはデータを複数のスタッフで共有したり、スタッフ間でデータ交換を行う必要が出てきます。ところがエクセルの効果的な活用とは、単一スタッフによる集計・加工や、複数スタッフ間での情報閲覧に限定されものです。逆に言えば、複数のスタッフがひとつのエクセルファイルに書き込んだり、変更を加えるような業務活用には不向きです。たとえば同時に電話が鳴った場合など、誰かがエクセルを更新しているときには、その作業が終わるまで待たないといけません。スタッフ全員の待ち時間コストを合算すると組織全体では大きなロスとなります。
見積管理、請求管理、顧客管理などと、スタッフの増加や売上の拡大に伴い作業量は飛躍的に増えていくものです。
また、データが分散するため、同じような情報が点在したり、担当者がいないと何もわからない状況も起こり易いものです。さらには、マクロを駆使し作り込んだエクセルでも企業規模の拡大や使用期間が経てば、限界を感じてしまいます。エクセルはもちろんデータそのもののバージョン管理にも手間がかかります。
個人情報保護法がニュースや雑誌の紙面をにぎわせることが時々ありますが、ファイルコピーによって重要な情報が社外に持ち出されてしまうことが懸念されます。もちろん、適切なファイルセキュリティを設定すれば、ある程度は防げる問題かもしれませんが、データベースをファイル単位で管理している以上、そのセキュリティレべルには限界があります。ついうっかり忘れて全員から丸見えだったり、閲覧・編集など多彩なアクセス権の設定や、「住所」だけ見せたくないなど項目ごとのアクセス権の設定など、難しいものがあります。
各担当者から渡されるデータをエクセルで管理している場合、行のマージ、転記、シートの統合という細々とした作業が発生します。細かな作業を人手に任せると必ずある一定の割合でミスが混ざりこみます。ミスは発生当初ですぐに発見できれば大した問題になりませんが、遅くなると手戻りコストが大きくなります。
また、見積管理で入力したデータを請求管理や顧客管理で使おうとすると、その都度に再度入力しなければならず、二度手間三度手間の入力となりまず。さらにエクセル管理の場合、各担当が持っているデータを集めないといけないので、リアルなデータ反映はどうしても遅くなります。
ファイルベースなので、バックアップ作業はファイル単位で行わなければなりません。これは小規模利用での手軽さという意味ではいいですが、扱うべきデータ容量が増大したり、ファイルが分散した場合に、バックアップに要する工数は幾何級数的に増大していきます。また、バックアップに際しては誰も更新を行っていないことをまず確認してからでないと開始できない、という運用上の手間も発生します。
組織が成長して拠点が増える場合や、営業など事前に社内で確認していたとしても、全てを事前に確認することは難しく、急な予定があれば事前確認できないケースがあります。こういった場合の閲覧はもちろん編集には対応できず、クラウド化対応や専用ビューアなどとひと手間かけた工夫が必要となってきます。
以上のように、情報資産の有効な利活用、さまざまな管理データからの高度な集計や分析、組織内での効果的な情報共有を行いたいなら、そろそろ別な方法の考え時かもしれません。
なお、Postgressなどのデータベースや、Ruby on Railsなどのシステムのオープンソース(無料で利用可能)が普及したことで、システムの開発期間が以前より格段に短く、低価格でシステム開発が可能となってきています。エクセルファイルによる管理に限界や不便を感じましたら、一度、クラウドWEBシステム、オーダーメイド開発の導入を検討してみたら如何でしょうか。思ったよりも、低価格で簡単に導入することができると思います。
システムリニューアル、システムリフォームのキモ
「儲けを生み出すシステムづくり」
2013/09/18
長引く不況を背景に、システム需要も変わってきています。
今後のシステムに求められるものは何か、
弊社社長 下坂 芳宏へのインタビューをまとめました。
ビジネス環境の変化に通用するために
「日本経済が低迷を続けるなかで、どの業種も『今のままじゃだめなんじゃないか』という危機感を持っています。
人件費の安い東南アジアを生産拠点にして作られる他国製品に、国産品は、価格で勝つことが難しくなってきている。これまで通りのやり方が通用しなくなってきているんですね」
――システムについての要望も変わってきている?
「『手作業でやってきたことをコンピューターで置き換える』ような作業の効率化を図るシステムから、"儲けを生み出すシステムづくり"にニーズが変わってきている。企業の想いがそれだけ変わってきているということです」
商品の価値を伝える、売り方を変える
――具体的にはどんな要望があるのか?
「例えば、これまで直販していなかったメーカーが、自社で売ることを考えている話をよく聞きます。
これまでは、メーカーが問屋や代理店を通して販売してきましたが、このルートも守りつつ、新たに自社で直販をやるためにシステムをどう変えたらいいか、という相談を受けます。
代理店は、そのメーカーの商品だけを扱うわけではないので、エンドユーザーにもっと安くしてと言われたら、外国産の似たような商品を売ることもある。メーカーのこだわりや、なぜこの価格なのかという価値を伝えてくれないので、価格だけで負けてしまうことがあるんです」
エンドユーザーの声が届くように
「今は、楽天やヤフーなどのショッピングサイトが充実していますので、ネット通販を始めることも非常に手軽です。しかし、大手のモールの中では、店が多すぎて埋もれてしまったり、手数料が高くて続かないケースも多いんですね」
――ECサイトシステムに求められていることは何か
「自社商品の魅力やこだわりを直接伝えるには、エンドユーザーと直接つながるルートが必要です。それにより売上アップを図るのはもちろん、ユーザーからのフィードバックをもとに、更に魅力のある商品づくりにつなげていく動きが求められています」
情報の活用により新しいサービスをつくる
「また、近年増えてきた動きとして、センサーの活用が挙げられます。センサーネットワーク技術の発達により、遠隔地や、人が入ることのできない場所などから、センサーで実に詳細な情報が得られるようになりました。
例えば、メンテナンス頻度の低い設備など、これまでは、故障した場合にサービスマンが故障個所を調べに行き、想定外の故障や部品がない場合には、改めて修理に行かなければならなかった。
それが、センサーから得た情報を活用することによって、必要な部分を的確に短時間で修理することが可能になりました。
この動きで何が変わるのかというと、機械が止まる時間を短縮できるので、非稼働による損失を減らすことができます。また、メーカーがデータを得ることでメンテナンスサービスの魅力が上がり、その結果、保守売上が上げるという効果も期待できます」
儲けにつながるシステムづくりが求められている
「今までのシステムはなぜ儲けにつながらなかったのか。それは、システム側も、クライアント側も、双方に踏み込みが足りなかったんだと思います。手作業をコンピュータに置き換えるところで止まるのではなく、もっとその先に踏み込んだものが、今後は必要になってくるはずです」
――ハイテックスができることは?
「お客様と話をしていると、クライアント側も、問題点がはっきりわかっていない場合も多いのです。
弊社では、お客様が何に困っているのか、この先どうなりたいのかを、直にやりとりして、ひとつひとつ洗い出していく作業を、時間をかけて、一緒に進めていきます。
また、新しい儲けにつながる動きを考えていくため、これまでと違う業務の流れが発生します。仕事の方法の再整備や、業務改革も含めて話をします。
その後、お客様の『こんなことをやりたい』という要望を満たせるよう、ハードや回線、ネットワークを含め、予算の範囲内でどこまでできるかを提案していきます」
トップページ | 技術情報ブログの記事一覧 | 次のページ »