技術情報ブログ

技術情報ブログ

以前のブログでは、

ExcelやAccessの限界

属人化の問題

バージョンアップの落とし穴

についてご紹介しました。

現在、その状況はさらに変化しています。

しかし興味深いことに、

私たちが最近よく受ける相談は、

「Excelが限界なんです」

という相談ではありません。

むしろ、

「Excelから脱却したはずなのに、また困っているんです」

という相談です。

今回は、多くの企業が陥る「次の課題」についてお話ししたいと思います。

Excel管理から始まった業務改善

多くの企業では、

まずExcelで業務を始めます。

例えば、

顧客管理

案件管理

日報管理

在庫管理

などです。

これは決して間違いではありません。

会社が小さいうちは、

素早く始められることの方が重要だからです。

問題はその後です。

会社が成長すると、

管理項目が増え、

担当者が増え、

拠点が増えます。

すると、

「今のやり方が苦しい」

と感じ始めます。

そこで登場したローコード・ノーコード

近年、

kintoneやPower Appsなどのローコードツールが急速に普及しました。

これらの最大の魅力は、

“業務部門でもシステムを作れる”

ことです。

以前ならシステム会社に依頼していたような内容も、

比較的短期間で実現できるようになりました。

実際、

私たちのお客様でも

Excel管理だった業務をkintoneへ移行し、

業務効率が改善した例は数多くあります。

しかし、新たな問題が発生している

ところが最近増えているのが、

次のような相談です。

kintoneのアプリが50個以上になっている

データの入力先がわからない

カスタマイズした人しか直せない

他のシステムと連携できていない

結局Excelへ出力して管理している

実はこれ、

10年前にAccessやExcelベースの業務システムで起きていた問題と非常によく似ています。

作った当初は便利でも、利用範囲が広がるにつれて運用が複雑化し、特定の担当者しか全体を把握できなくなるのです。

ツールは変わりましたが、根本的な問題は同じなのです。

「手軽に作れる」は「簡単に維持できる」ではない

ローコードツールの大きなメリットは、

導入スピードです。

しかし、

作ることと維持することは別問題です。

例えば、

最初は営業管理だけだったものが、

見積管理

契約管理

顧客管理

売上管理

へと広がります。

さらに、

会計システム

生産管理システム

販売管理システム

との連携が必要になります。

すると、

当初の「簡単な業務アプリ」が、

いつの間にか会社全体を支える重要システムになっていることがあります。

実は一番困るのは「システムが増え過ぎること」

現在、

本当に多い課題は

システム不足ではありません。

むしろ、

システムの過剰導入です。

例えば、

営業部はkintone。

製造部は別システム。

経理は会計ソフト。

現場はExcel。

勤怠はクラウドサービス。

こうなると、

同じ会社なのに、

情報があちこちに分散します。

すると、

お客様の情報を変更するだけでも、

複数のシステムを更新しなければなりません。

実際には、

システム化によって効率化するはずが、

システム間を人がつなぐ仕事が増えてしまうのです。

業務の見直しが必要になる瞬間

私たちはシステム開発会社ですが、

何でもフルスクラッチ開発を勧めるつもりはありません。

実際、

kintoneで十分な業務もたくさんあります。

しかし、

次のような状況になったときは注意が必要です。

システム間の手入力が増えている

同じデータを複数回入力している

独自ルールが多い

社内でしか通用しない運用で成り立っている

こうした場合は、

個別のツール改善ではなく、

業務全体を見直す時期かもしれません。

大切なのはツール選びではない

最近、

「kintoneを導入したい」

「Power Appsを使いたい」

という相談をいただくことがあります。

しかし私たちはまず、

ツールの話よりも業務の話をお聞きします。

なぜなら、

本当に解決すべき課題は、

Excelでも、

Accessでも、

kintoneでもないことが多いからです。

問題は、

データがどこにあるかわからない

同じ作業を繰り返している

知っている人しか運用できない

という業務プロセスにあります。

まとめ

「どのツールを使うか」

よりも、

「会社全体の情報をどうつなげるか」

が重要な時代になっています。

Excelにも役割があります。

kintoneにも役割があります。

既存システムにも役割があります。

大切なのは、それぞれを置き換えることではなく、適切に組み合わせることです。

私たちがお客様のご相談をお受けする際も、いきなりシステム開発の話をすることはほとんどありません。まずは業務の流れを整理し、「どこに本当のムダやボトルネックがあるのか」を一緒に見つけるところからスタートします。

ツールの流行は数年で変わります。しかし、業務の本質を見極めることは、10年後でも価値のある投資になります。

「Excelから脱却したものの、業務が複雑になってきた」

「システムが増えすぎて全体像が見えなくなっている」

そんな課題を感じている場合は、一度業務全体の流れを整理してみることをおすすめします。

ハイテックスでは、ツールの選定や開発ありきではなく、業務プロセスの整理からご支援しています。

お気軽にご相談ください。

日増しに暑さを感じる頃となりましたが、体調には気を付けていきたいところです。

さて、今回は「Windowsのサポート期限」をテーマに話をしようと思います。

Windows にはサポート期限があることをご存知でしょうか?

「期限をすぎると使えなくなるのか?」

「何か対策しないといけないのか?」

「サポート期限は知っているけどもサポートはどういうものなのか?」

など、疑問に思っていることは多いと思います。

今回は、「Windows」のサポートについて紹介します。

1.サポートとは? 

ざっくり言うと、マイクロソフト社が提供する製品サポートです。

サポート期間中は Windows オペレーティングシステム(OS)に対するセキュリティ更新プログラムや機能更新プログラムなどが提供されます。

  • セキュリティ更新プログラム:マルウェアやウイルスなどの脅威からパソコンを保護するために必要不可欠なもの
  • 機能更新プログラム:新しい機能を追加したり改善したりするためのアップデート

Windows Update で「悪意のあるソフトウェアの削除ツール」「2024-10 x64 ベースシステム用」といった項目を見たことがある方はいるのではないでしょうか?

まさしく上記がそれに該当します。

ちなみに Windows Update は月 1 回(毎月第 2 水曜日または第 3 水曜日)配信されています。 普段あまり意識することはないかもしれませんが、実は定期的に更新してくれているのですね。ありがたい…!

もちろん 最新のWindows に限らず過去の Windows にもサポートが存在します。

最近はWindows 7 など古い OS を使っている方はほぼ見かけなくなりましたが、まだ使用されている方は更新か買い替えを強くオススメします。

(引用:https://www.4900.co.jp/smarticle/9235-2/)

上記は一般的なサポートですが、企業向けに有償サポートというサービスもあります。(今回は割愛)

2.サポート終了するとどうなる? 

前述したとおり、サポート期間中はマイクロソフト社から「更新プログラム」が提供されます。
しかし、サポート期間が終了してしまうと提供が受けられなくなります。

教科書的に言うと上記のような説明になりますが、「別にパソコン自体は使い続けられるのでは?」と思いますよね。(自分も昔はそのように思っていました)
実際そのとおりではあるのですが、様々なリスクがありオススメできない理由があります。
次は使い続けるリスクについて説明したいと思います。

~ウイルス感染やサイバー攻撃のリスクが高まる~

新たなセキュリティの脆弱性(※)やバグに対する修正が提供されなくなり、ウイルスやマルウェア、サイバー攻撃などに対して脆弱になる可能性があるため、注意が必要です。

Windows の更新プログラムが提供されないため、脆弱性が未修正のまま残り、脅威が拡大します。

セキュリティソフトが入っていても、次々と変化していくウイルスやマルウェアを全て防ぐことができないため、個人情報の漏洩やフィッシング詐欺などのトラブルに繋がりやすくなります。

※コンピュータの OS やソフトウェアにおいて、プログラムの不具合や設計上のミスが原因となって発生するサイバーセキュリティ上の欠陥のこと
(引用:https://www.soumu.go.jp/main_sosiki/cybersecurity/kokumin/basic/risk/11/)

~周辺機器・ソフトウェアが非対応になる~

パソコンに接続する周辺機器などの動作トラブルを引き起こすケースも考えられます。
周辺機器が Windows11 対応のアップデートを行った場合、Windows10 では今までのように動作しない恐れがあります。

また、先のことを考えたときには、新しい周辺機器・ソフトウェアは最新の OS バージョンに合わせて開発されるため、使える製品が限られていく点も懸念事項です。
当然、古い OS バージョンについては動作保証も対象外になります。
セキュリティソフトも例外ではなく、リスクは時間経過とともに高くなっていきます。

~サポートコスト~

サポート終了後、セキュリティを維持するためには、サードパーティのセキュリティソフトウェアやサービスを導入する必要が生じる可能性が高くなり、追加のコストがかかります。

危険性を回避するためには、何らかの独自の手段が必要です。
どうしても使い続けないといけない理由があるのであれば仕方ないですが、コスト面を考えると最新の OS バージョンに移行するのが良いですね。

3.他のOSにもサポートはある?

OS は Windows だけではありません。
スマートフォンに搭載されている「iOS」「Android」やプログラムに詳しい方は「Linux」など、聞いたことがあるのではないでしょうか?
もちろんこれらにもサポート期限が存在します。

本筋とは少し逸れるので細かい説明は割愛しますが「iOS」について紹介しておこうと思います。

以下は縦軸が「iOSバージョン」、横軸が「iPhoneの機種」を表した表になります。

(引用:https://tamatora.36nyan.com/?p=18253)

○ は iOS バージョンと機種の対応を示しており、新しい機種になると古いバージョンが使えなくなることが分かると思います。
当然、Windows のサポート終了に伴うリスクで説明したような「非対応アプリが増える」「セキュリティリスクが高まる」という問題があります。

たまに友人のスマホを見るとアップデートを放置していたのか、かなり古いバージョンを使っていることがあります。
アップデートすれば問題はないのですが、バージョンに大きな隔たり(例えば 3 年以上前のバージョンと最新バージョンなど)があると、アップデートに失敗することがあります。
自分はこれで失敗した経験があるので、アップデートは定期的に実施しましょう…!

4.サポート終了に対する対策

ここまで聞いて不安に思う方もいるかもしれませんが、ご安心ください。
Windows10 サポート終了に向けた対策をご紹介します。

~Windows 11 へのアップグレード~

まず 1 つ目は最新OS(Windows 11)へのアップグレードです。

なんと!今なら無償でアップグレードすることができます。
マシンの推奨スペックの要件やアップグレードできる条件などあるので、詳細は以下のリンクをご確認ください。

[Windows 11 のアップグレードの準備]

https://support.microsoft.com/ja-jp/windows/windows-11-%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%AE%E6%BA%96%E5%82%99-eb50813f-c7da-4cf8-89a3-6ba0d33b2773

注意点として、今は無償ですがいずれは有償になる可能性があります。(時期について、マイクロソフト社は名言していない)
一番安価な Windows 11 Home を購入する場合でも 2 万弱するので、早めにアップグレードしておくことをオススメします。

~PC の買い替え~

お金はかかってしまいますが、PC を買い替えるという方法もあります。
せっかくアップグレードしても Windows 11 に適していないマシンスペックだと動作が重くなったりします。(心なしか、Windows 11 になってからメモリ消費が多くなった気がします…)

通販サイトや家電量販店で売られているような PC は Windows 11 に適したスペックになっていると思うので、チェックしてみてください。

~延長サポート~

マイクロソフト社の製品は発売後、最低 5 年間のメインストリーム サポートと最低 5 年間の延長サポート (合計最低 10 年間) が提供されます。
Windows10 は延長サポートの期限を迎えることになるので、頼みの綱であった延長サポートも受けられません。

Windows 10 Home / Pro

2015 年 7 月 29 日 サポート開始
2025 年 10 月 14 日 サポート終了

最近の OS のように感じますが、10 年も活躍してくれていたのですね。すごい。
ちなみに、「Windows XP」はそれを超える 12 年半もサポートされたそうで、マイクロソフト社の歴史上、最も成功した Windows の 1 つと言われています。

5.まとめ

長々と話してきましたが、サポート終了まで 1 年を切っているので、何が必要かを確認した上で、確実に準備を進めていきましょう。
この記事がその手助けとなれば幸いです。

それでは、次回もご期待ください!

近頃、AI という言葉をよく耳にしますね。
実際に AI を仕事に活用しているという話もよく耳にするようになってきました。

皆さんは AI と聞くと何をイメージするでしょうか?

「なんかすごい便利なもの」でしょうか
「chatGPTみたいにしゃべり返してくれるんだよね」でしょうか
「画像生成AIみたいに絵が下手でも代わりに描いてくれるんだよね」でしょうか
はたまた、「SF 映画のロボットの中に知能として入っているもの」のような
未来技術をイメージする人も居るかもしれません。

今回は、そんな AI について簡単に解説します。
ぼんやりした AI のイメージを少しでも明瞭にできたらいいなと思います。

目次
  1. AIの定義
  2. AIのすごいところ
  3. AIの活用例と生成AI

—————————————————————————————————-

1.AIの定義

AI は Artificial Intelligence の略で、日本語にすると人工知能です。
実は明確な定義は無いとされていますが、
昨今、話題に挙がる AI といえば ディープラーニング(深層学習)の技術が使われているものを指す場合が多いと思います。
ディープラーニングとは機械学習の一種で
文字通り、「機械」に「学習」してもらう技術です。

いきなり用語をいろいろ出しましたが
AI、機械学習、ディープラーニングは図にすると以下の関係です。

tech_blog_20240716_01.png















~機械学習~
「機械」に「学習」してもらうとはどういう事でしょうか。

例えば、AIを使って手書きの数字を判定する場合を考えてみます。
まず、手書きの数字の画像と、それが何の数字なのかのデータを用意します。
これを教師データと言います。

教師データから数字を入力し、アプリに判定してもらいます。
tech_blog_20240716_02.png








判定が正しかったかどうか、不正解なら正解はどれかを入力します。
tech_blog_20240716_03.png








この操作を何度も繰り返します(数万回繰り返します)。
tech_blog_20240716_04.png






























最初は不正解だらけですが
繰り返すことで精度が向上していきます
tech_blog_20240716_05.png









































こうして学習させた結果、
学習に使っていない新しいデータ(たとえばあなたが今手で書いた数字)でも
正解できることが期待できます。
これが機械学習です。

tech_blog_20240716_06.png














いったいどんな計算をすればこんなことができるのかを今回は説明しませんが、
最初に説明したディープラーニングはこれを実現するための計算手法のひとつです。
実はディープラーニングの計算は私たち人間の脳の仕組みがモデルになっています。
人工的に人間の脳を作っていると考えると、確かに人工知能なだぁと実感できますね。

補足になりますが、
今回説明した学習方法を「教師あり学習」といいます。
教師データと呼ばれる手書きデータと正解のペアを用意して機械に学習を行いました。
機械学習では必ずしも正解を用意しません。手書きデータだけで学習させる手法もあります。
そういった学習方法には「教師なし学習」や「強化学習」といったものがあります。
興味を持たれた方は調べてみると面白いかもしれません。

—————————————————————————————————-

2.AIのすごいところ

さて、前章でAIがどんなものなのか、その学習方法について簡単に説明しました。
本章ではAIのすごいところを考えてみます。

~従来の方法と比べてすごいところ~
また前章の手書きの数字を判定するアプリを例に取ります。
さきほどの学習ではアプリに

  • 0とはどんなもの
  • 1とはどんなもの
                :
  • 9とはどんなもの

という情報は教えていません。
“手書きのデータとそれが何であるか”を繰り返し入力するだけで
機械が勝手にその特徴を認識して判定してくれるようになりました。
実はここがAIのすごいところです。

すごさを実感するために、
AIを使わずに前章の手書きの数字を判定することを考えてみましょう。

0 ~ 9はどんなものかを考える必要が出てきます。
例えば

  • 1、2、3、5、7は輪っかが無い
  • 0、6、9は輪っかが1つ
  • 4は三角形のような輪っかが1つ
  • 8は輪っかが2つ

とすれば4つには分類できるでしょうか。
そこから更に絞り込みます。
0、6、9を区別するには、6は輪の上に曲線が、9は輪の下に曲線が、といったかんじになりそうです。
1、2、3、5、7は線の場所やつながり方も見る必要が出てきそうです。

こう説明するとできるように感じてくるかもしれませんが、実際にはうまく動かないでしょう。
うまく動かない原因としては

  • 輪っかが繋がっていなくて、輪っかとして認識しなかった
  • 画像のゴミを曲線や輪っかと誤認識してしまった
  • 書き方のクセで三角形なのか輪っかなのか区別できない

といったことが起きそうです。

簡単に想像してみるだけでも、機械が手書き数字を認識することはとても難しいことだとわかります。
ですが、これをAIではデータと正解を繰り返し渡すことで簡単に実現できます。

以上のように
人間だとできるのに、機械には難しかったことが
AIの手法を用いることで解決できる可能性があります。
ここがAIのすごいところです。

~人間と比べてすごいところ~
AIを使って人間にできることが機械にもできるようになるとどんないいことがあるでしょうか。

①人間がやるより速い
1つ目は、AIに任せることで人間より圧倒的に早く処理できることです。
AIは学習には時間がかかりますが、1回の実行は短時間で行えます。
先ほどの手書きの数字を判定するアプリを使えば
10000枚の手書きの数字もあっという間にフォルダ分けしてくれるでしょう。

②疲れによる限界・ミスが無い
2つ目は、疲れによる限界・ミスが無いことです。
人間はミスをする生き物です。手書き数字が10000枚もあれば1つくらい「6」を「0」のフォルダに入れてしまうかもしれません。
AIでは(学習結果が変わらなければ)同じ画像は同じ結果になります。
休憩を取る必要もありません。

—————————————————————————————————-

3. AIの活用例と生成AI

AIは様々な分野に応用されています。

  • CT画像を画像認識による病気の早期発見
  • 画像認識による不良品チェック
  • カンニング防止システム
  • 貨物量の予想

また、最近ではAIの技術を更に発展させた生成AIの分野が注目されています。
ここまで説明した従来のAIは、学習データから正解を得るためのものでした。
それに対し、生成AIは、学習データから新しいデータを作ることができるものになります。

  • chatGPT
  • 画像生成AI

などが生成AIに分類されます。

—————————————————————————————————-

いかがでしたでしょうか。
今回は、AIについて説明しました。
駆け足にはなりましたが、すこしでもAIについてイメージが湧くようになっていると嬉しいです。
かねてから SNS やブログで「C++ は難しい。」といった内容の
投稿や記事を目にすることがあります。

正直私はピンと来ません。
20年近く「C++」をメインに多くのプログラミング言語に触れてきましたが、どの言語もちゃんと難しいです。

日本語も世界でトップクラスに難しい言語と言われますが、多くの日本人はそう捉えてはいないと思います。

しかしながら、比較的機械語に近い形である「C言語」がベースなっていて、
世のエンジニアの多くが躓きがちな「ポインタ」と「オブジェクト指向」という2つの概念の理解が必要。
と書いてみると確かに少し技術的なハードル自体は高い印象は受けますね…。

今回は、そんな「C++」について少し深堀りしてみたいと思います。

目次
  1. 他の言語と比べてどういう特徴があるか
  2. どういった分野、モノに使われているか
  3. なぜ「難しい」と言われているのか
  4. 余談
—————————————————————————————————-

1. 他の言語と比べてどういう特徴があるか

「C++」の特徴は細かいものも含めるとたくさんあるとは思いますが、
私がこれまでの業務経験の中で強く感じたことを2つ挙げたいと思います。

~自由度が高く、できることが多い~
「好きなことを思い通りに実現できる。」というのが私の「C++」に対するイメージです。
実際、大規模なシステム開発では「C++」を採用していることが多いです。

その反面、実現するための”準備”や”後始末”も全てエンジニアが面倒を見る必要があるため、
ソースコードが長く複雑になりやすい、というデメリットもあります。
その”準備”や”後始末”に不備があることにより思わぬ障害が発生してしまった経験もあります。

~処理速度が速い~
私は業務で大量の数学的な演算を行うことが多いのですが、それらの処理は
「Java」や「C#」といった他の言語と比べると、少なくとも 1.5~2倍 は速いと感じます。
(このあたりは言語によって得意不得意があるのかもしれません。)
また、処理速度だけでなくメモリの消費量も少ないというメリットもあります。

これらは「C++」が持つ「メモリ空間を直接操作することができる」という特性から来ていますが、
この特性はシステムの脆弱性にも繋がっており、所謂「バッファオーバーフロー攻撃」の標的にされる可能性があります。
この「バッファオーバーフロー攻撃」はプログラム側で対策が可能すが、
「C++」ではメモリ(バッファ)管理がエンジニアに委ねられているため、
脆弱性を脆弱なままにしないようプログラミングに気をつける必要があります。

—————————————————————————————————-

2. どういった分野、モノに使われているか

「1.」で取り上げたようにできることが多く、
『Webブラウザなどアプリケーションの開発』から『ロボットの制御』まで、
幅広い分野で使用されていて、最近なにかと話題のAI分野でも使用されていると聞きます。

皆さんの身近なところでいうと、『Windows』『Microsoft Office』『Google Chrome』も
「C++」を使用して作成されています。

よくゲームをプレイされる方だと、起動時に『Unreal Engine』というロゴを目にすることが多いと思いますが、
これはゲーム製作に特化したエンジンのことで、これも主に「C++」を使用して作成されています。

『自動車の自動運転技術』の開発も主に「C++」が使用されています。

これらはいずれも、実行速度を重視する必要があったり、
最低限の物理メモリで複雑な処理を実現する必要があったりするもので、
先に挙げた「C++」の特徴に合致していますよね。

—————————————————————————————————-

3. なぜ「難しい」と言われているのか

冒頭に書いたように「C++」ならではの難しさというものにピンと来ていないのですが、
以下の点が難しいと言われる要因なのではないかと考えました。

~ガベージコレクションがない~
これは「2.」で挙げた”後始末”についての話になります。
動的に確保したメモリは、不要になったら解放しないとその分のメモリを占有し続けてしまい、
長時間稼働するシステムの場合、それが原因で動作が遅くなったり停止してしまったりします。

この「不要になったら」というのをを自動で検知してメモリを解放してくれるのがガベージコレクションであり、
「Java」や他の言語にはあるのですが、「C++」にはこの機能はありません。
ですので、確保したメモリが不要になるタイミングを意識してプログラミングする必要があります。

ただし、「C++」でもSTLやスマートポインタを駆使することで、ガベージコレクションの代用は可能です。

~自由度が高すぎる~
「何らかの処理を実現するための方法」が無数にあることにより、
逆にどの方法を採れば良いのかが分からなくなってしまうことがあります。

また、エンジニアによってどの方法を採るのかの基準も異なるため、
他者が書いたソースコードを読むと全く別の言語に見えることがあります。

~テンプレート~
汎用的なプログラムを作成できる「C++」独自の概念です。
使いこなせると処理の再利用がしやすくなり、ソースコードの量を大幅に減らすことができます。
はっきり言ってこれは難しいです。(私は使いこなせていません。)

テンプレートを使わないと実現できないようなことはほとんどないですが、
その場合はソースコードの複雑化と可読性の低下は避けられないです。

—————————————————————————————————-

4. 余談

近年「C++」に変わるものとして「Rust」というプログラミング言語が注目されており、
私はまだ触れたことはないのですが、こちらも「C++」と同様に処理速度やメモリ消費量に優れているようです。
ですので、もしかすると近い将来では大規模システムの開発は「Rust」が主流になるかもしれません。

しかし、上に挙げた『ロボットの制御』や『自動車の自動運転技術』といったような、限られたリソース内で高効率の処理が求められる分野では、
「ポインタ」と言うメモリに直接アクセスする独自の技術仕様が非常に有効なので、まだまだ「C++」は活用され続けることでしょう。

最後に、私は「C++」が好きなので消えて欲しくないと思っています。

DXとは?

2023/05/19

今回は昨今よく耳にする「DX」の話になります。

DXとはデジタルトランスフォーメーション(Digital Transformation)の略称であり、
2004年に提唱され、2016年に日本国内で定義された考え方です。

ざっくり言うと「IT技術を駆使して製品(サービス)・業務・組織・社会を変革すること」になりますが、
これだけ聞くと「今までのIT化と何が違うの?」と思われるかもしれませんね。

tech_blog_202305_01.jpg

今までのIT化は、以下の2つに焦点が当たっていました。

①モノと情報のデジタル化(デジタイゼーション)
(例)
 ・紙の書類を電子化する
 ・会議をオンライン化する
 ・システムへ顧客や売上を入力する

②業務プロセスのデジタル化(デジタライゼーション)
(例)
 ・タブレット端末の導入
 ・RPA(ロボットによる自動化技術)の導入
 ・電子契約サービスの導入

基本的にIT化は ①デジタイゼーション⇒②デジタライゼーション の流れで進んでいく形になりますが、
ここまでは主に企業・組織自体の業務効率化を目指す段階になります。

DXはさらにその先の概念で、デジタル化を進めることで企業価値を高め、
取引先や顧客を含めた社会全体をより良いものにしていくことを指しています。
考え方としては、②デジタライゼーション を推し進めた結果として ③DX が実現するという流れとなります。

日本は海外に比べてDX化がまだまだ浸透していない面がありますが、国内でもDX化に成功した企業はあります。
以下にその一部を紹介します。

◆くら寿司株式会社(外食)
AI技術(ディープラーニング)を用いて、マグロの目利きアプリ「TUNA SCOPE」を開発。
⇒一部の職人に依存する業務が自動化され、安定した品質と価格で商品が提供可能となった。

◆トライグループ(教育)
スマホやタブレットから無料でオンライン授業を視聴できる「Try IT」のサービスを提供。
⇒端末とインターネット環境さえあれば、時間と場所を問わず誰でも勉強が可能となった。

◆スターバックスコーヒージャパン(外食)
事前に注文と決済を行えるスマホアプリ「MobileOrder & Pay」を提供。
⇒顧客はレジに並ぶ必要がなくなり、商品の受け渡しもスムーズになった。

◆クボタ(建機・農機)
建機・農機の故障診断アプリ「Kubota Diagnostics」を開発。
⇒診断プロセスを効率化し、機械の停止時間を削減することができるようになった。

◆資生堂(化粧品)
顔認証技術とAI技術を利用した「バーチャルメイク」のサービスを提供。
⇒時間帯を問わずオンラインでカウンセリングを受けられ、そのまま商品を購入することができる。

tech_blog_202305_02.jpg

現在多くの企業や組織が自社のビジネスモデルを見直しながらDX化を進めていますが、
まずは現状の分析して課題を明確化することが第一歩となります。

何から着手すればよいのか?どのように実現すればよいのか?費用対効果が見合うのか?
ハイテックスにもDXに関する多くのお問い合わせを頂いており、業務に応じたご提案をさせていただいています。
まずはお気軽にご相談頂ければと思います。

最後は弊社の宣伝のようになってしまいましたが、今回はここまでになります。
次回も乞うご期待ください。
今回は IE(Internet Explorer)のことについてお話したいと思います。
皆さんも使用されていたのではないでしょうか。

IEのサポートは既に終了している
ご存知かとは思いますが、 IEは2022年6月15日(※)にサポートが終了しています。
Windows11 環境ではアイコンすら表示されず、起動できません。
※Windows10 バージョン21H2 のサポート期間。OSやバージョンによってサポート期間が異なります。

私が使用している会社のPCのバージョンは Windows10 21H2 なので IE のサポートが終了している状態です。
ただし、起動自体はできる状態ですので、試しに起動してみますと…

tech_blog_202302_01.png

上記の画面が表示され、Microsoft Edge に自動で切り替わりました。
実質使用できない状態ですね。

サポートが終了しているものを使用するのは危険
Windows Update の更新が滞ってるOSでは、今でもIEを使用できる場合もありますが、
サポートが切れている状態で使用し続けることは、セキュリティ上危険です。
IEに限らず、OS や アプリケーションにはサポート期間というものがありますが、
サポート期間であれば、セキュリティ上の危険が見つかった場合、対応する更新プログラムが提供されます。
Windows Update を実施すれば、更新プログラムが適用されますが、
サポート期間が切れると、上記のような更新プログラムが全く提供されなくなります。
これにより、セキュリティ上の危険が増えていく一方です。
・サポートが終了しているものは利用しない
・Windows Updateを定期的に行う
・サポート期間を把握しておく
というのが大事です!

IEモードについて
また、2023年2月14日に一部のバージョンの Windows 10 で完全に無効になる予定とあります。
Internet Explorer 11 デスクトップ アプリケーションのサポート終了
着実に廃止化が進んできていますね。

どうしても IE を利用したい場合の方法の1つとしては、Microsoft Edge の「IE モード」機能を利用することです。
IE モードとは簡単に言うと、Microsoft Edge や Chrome 等で非対応のIE ベースの Web サイトを
直接 Microsoft Edge からアクセスできる機能です。 
利用方法はいくつかあるようですが、ここでは Microsoft Edge の設定メニューから設定する方法を紹介します。

Microsoft Edge の「設定」メニューを開く
「既定のブラウザ」メニューを開く
「Internet Explorer に Microsoft Edge でサイトを開かせる」で「互換性のないサイトのみ」または「常に」を選択する
「Internet Explorer モード (IE モード) でサイトの再読み込みを許可」で「許可」を選択する
「Internet Explorer モード ページ」に IE モードで開きたい URL を追加する

tech_blog_202302_02.png

IE モードに指定した URL のページを開くと、下記が表示され、IE モードで表示されていることが確認できます。

tech_blog_202302_03.png
移行の準備はお早めに
IEモードについては、 2029 年までサポートされる予定ですが、あくまでこれは暫定処置です。
IE のサポートについても当初は2025年10月までだったのが前倒しされて2022年6月になったので、
どうなるか分からないというのが現状です。
いずれにせよ、いつかは(はやいうちに)IE は使用できなくなります。
まだ使えるから大丈夫と思っている方、
なるべく早く、Microsoft Edge や Chrome 等のブラウザへの移行をご検討下さい!

以上になります。
次回のブログも乞うご期待下さい!
はじめまして、富山オフィスの上田です。
入社 10 年目で、最近では Java や JavaScript を使った Web システムを開発しています。

みなさん、 Windows11 は使っていますか?
Windows10 を使っていれば、無料アップデートではありますが、
ハードウェアが対応していないとアップデートできないなど
実は触ったことが無いという人も多いのではないでしょうか。

実は、私も自宅や職場のPCは Windows10 のままで、Windows11 はアプリのテストで少しだけ触った程度です。
Windows11 が出たのは 2021/10/5 です。
なんともう 1 年以上が経っています。
SE としてこれはマズい!ということで、今回はこのテーマにしてみました。

「Windows11 にするとどう変わる?」

Windows11 では Windows10 と何が変わるのでしょうか。
Webサイトで調べてみると次のようなことが書かれています。

・タスクバーが中央寄せ
・新しいデザイン
・ウィンドウのスナップ機能
・Androidアプリが実行できる
・セキュリティの強化

この中では、「ウィンドウのスナップ機能」が気になるので、操作感を見ていくことにします。
早速ですが、Windows11 を起動し、適当に 3 つほどウィンドウを用意しました。

tech_blog_202212_01.png

最大化にマウスカーソルを合わせるとこのようなポップアップが表示されます。

tech_blog_202212_02.png

移動したいレイアウトの形状にマウスカーソルを合わせクリックすると…

tech_blog_202212_03.png

ウィンドウが移動しました!
ちなみに ウィンドウのタイトルバーを掴んで、赤丸矢印のように画面端に持って行き…

tech_blog_202212_04.png

↓のようになったら、離します。

tech_blog_202212_05.png

これでもウィンドウはスナップします。Windows10 でも出来た方法ですね。
ただし、Windows10 では、スナップした残りの領域がウィンドウを指定する画面になっていましたが、Windows11 ではそれが無くなったようです。
個人的には要らない動作だったので、嬉しい変更です。

tech_blog_202212_06.png

(参考)Windows10 では、スナップした残りの領域がウィンドウを指定する画面になっていました。

tech_blog_202212_07.png

いかがでしたでしょうか。
今回は Windows11 のウィンドウのスナップ機能の紹介でしたが、
ほかにも Windows11 にはいろいろな新機能・変更点があるようなので、使いこなしていきたいですね。
はじめまして、富山オフィスの田財です。
私は普段  C++ を利用してシステム開発することが多いので、これに関連したテーマにしたいと思います。
テーマは「C/C++ のコンパイル時最適化に注意する」です。

まず、C/C++を含むプログラミング言語は、言語仕様に従ったソースコードから、
機械語あるいは元のプログラムよりも低い水準のコードに
変換(コンパイル)するコンパイラが存在します。(コンパイラ(Wikipedia)より引用)

また、C/C++の一般的なコンパイラには「最適化」という機能が備わっています。
ソースコードをコンパイルする際に、より高速で動くプログラムとなるように
ソースコードの示す結果が変わらない範囲で最適化してコンパイルする、という機能です。

今回はこのコンパイル時最適化についてのお話ですが、
テーマの本題に入る前に、まずはこの最適化がどのような機能なのか、説明します。

例を1つ提示してみます。


上記のソースコードは、10 の階乗に 0 ~ 9 を順に掛けて、
都度標準出力する単純なものです。
実は、このソースコードには、効率の悪い処理となっている部分があります。

プログラミング経験のある人であれば一目でわかるかもしれませんが、


の部分です。
このソースコードだと、i が 0 ~ 9 の範囲で順に 1 ずつ増えていく間に
何度も 10 の階乗を計算しているため、効率が悪いです。
最適化案としては、「上記の部分を for (int i = 0; i < 10; i++) {} の外に出す」でしょうか。
こんなイメージです。


これであれば、10の階乗の計算を最初に一度行うだけで済みますね。

では、実際にコンパイラに最適化してもらいましょう。
VisualStudio 2015 で、 /O2 で最適化した結果を逆アセンブルで見てみます。

20220819-1.png




注目は

20220819-2.png


の部分です。
・10 の階乗を何度も計算する必要が無いこと
・この計算結果は常に変わらないこと
を見事看破したコンパイラは、コンパイル時に


の部分をあらかじめ計算してしまい、x375F00(10進数で 3,628,800) という数字をそのまま使った処理にしています。
この数字を使って、出力に使用する変数が x229B600(10進数で 36,288,000) になるまで都度足しては出力する、
という内容に最適化したようです。

最適化した結果をソースコードに直して比較すると、以下のようになるでしょうか。

○最適化前

○最適化後

こちらが想定していた最適化案よりも、さらに効率が良いですね!

このように、コンパイラの最適化はとても賢いです。
コンパイラの最適化機能はどんどん発展しており、プログラマがあまり意識せずとも
高速に動作するプログラムが作成できるようになってきています。

さて、ようやく本題です。
上の例で示した通りとても賢い最適化機能ですが、一方で、
この機能によってプログラマが意図しないプログラムになってしまうこともあり、注意が必要です。
今回は、その1例を紹介します。

例えば、以下のようなソースコードがあります。


パスワードを char pwd に代入して操作し終わった後、
速やかに memset で 0 初期化するソースコードです。
いつまでもメモリ上に残存していることは、セキュリティ上リスクがあるためにこのようにしています。

さて、これが最適化されるとどうなるでしょうか。
先ほどと同じく、VisualStudio 2015 で、 /O2 で最適化した結果を逆アセンブルで見てみます。

20220819-3.png

memset  の下に命令が何もありません。
メモリを覗いてみると、return 0 まで辿りついても当然、パスワード(“abcd”)が残ってしまっています。

20220819-4.png

これはどういうことでしょうか。

pwd は if (GetPassword(pwd)) {} 以降一切利用されない変数です。
コンパイラ目線で見れば、プログラムが終了したら勝手に開放されるのだから、
今後利用されない変数 pwd をわざわざ 0 初期化しなくても良いはずだ、と判断できます。
そのため、最適化によって memset~ の一文はコンパイルせずにスキップしてしまっています。

このように、プログラマの意図しない最適化により、セキュリティ上リスクのある
プログラムになってしまったり、想定しない動作を引き起こすことがあるのです。

今回の例の回避策として、例えば以下のようにします。


最適化結果を逆アセンブルで見てみます。

20220819-5.png

今回はちゃんと命令がありますね。
メモリを覗いてみると、

20220819-6.png


のタイミングで、1変数ずつ0初期化されていっています。

20220819-7.png

↓

20220819-8.png


無事、すべて 0 初期化されました。

20220819-9.png

Windows API には、最適化によってスキップされないことを保証する
ZeroMemory(), SecureZeroMemory() があります。
これらを使うことで、意図しないスキップを回避することが出来ます。

コンパイル時最適化には、他にもプログラマが意図しない結果を引き起こすものがあります。
他の事例は機会があればまたいずれ。

ハイテックスではこのような事例も考慮して、日々開発を行っています!
はじめまして、富山オフィスの小坂です。
今年の4月で入社11年目になりました。
自分はまだまだ若い気持ちでいますが、新入社員の方を見ると歳を感じますね…。

さて、久しぶりではありますが技術ブログの更新です。
前回の更新が5年前のようで…スミマセン。

復帰第1回目のテーマは…
「C++ CString 文字列比較ってどれが速いの?」

Windowsのアプリ開発でよく使われているライブラリと言えば「MFC」が思い浮かぶと思います。(もしくはATL)
更にその中で、文字列を扱うクラスと言えば「CString」がありますね。
サイズを気にせず代入や結合が簡単にでき、フォーマットや文字列比較もできるという、至れり尽くせりな便利クラスです。

ということで、今回は「CString」について紹介していきたいと思います。
といっても全部紹介していると日が暮れるので「文字列比較」、更にはその「処理速度」にスポットを当てて話をしたいと思います。

文字列比較でよく見るコードは以下のような比較演算子を使った形ですね。
  1. CString str1 = _T("abc");
  2. CString str2 = _T("123");
  3. bool bSame = false;
  4. if (str1 == str2) {
  5.   bSame = true;
  6. }


上記のようなコードでもプログラム的に問題はありません。
しかし処理速度の観点から見ると、もっと良いコードが書けます。

ではどのようなコードが速いのか?
検証を行ってみたので、その結果を紹介したいと思います。

【検証内容】
以下の文字列の比較を 1,000,000回 行った速度を計測。

Vdk4jQnifyheeUVSJMAD2FdUXyCfR9HRTACieCMBVDguC3ALbU
vDK4JqNIFYHEEuvsjmad2fDuxYcFr9hrtacIEcmbvdGUc3alBu

使用した関数は以下の4つ。
  • Cstring::Compare
  • Cstring::CompareNoCase
  • _tcscmp
  • CStringの等価演算子(==)

【検証コード】
比較結果をbool型の変数に代入するだけのシンプルなコードです。
測定する関数以外のコードはコメントアウトしています。
  1. bool bSame = false;
  2. CString str1 = _T("Vdk4jQnifyheeUVSJMAD2FdUXyCfR9HRTACieCMBVDguC3ALbU");
  3. CString str2 = _T("vDK4JqNIFYHEEuvsjmad2fDuxYcFr9hrtacIEcmbvdGUc3alBu");
  4. // 測定start
  5. auto start = std::chrono::system_clock::now();
  6. for (int i = 0; i < 1000000; i++) {
  7.   //bSame = (0 == str1.Compare(str2));
  8.   //bSame = (0 == str1.CompareNoCase(str2));
  9.   //bSame = (0 == _tcscmp(str1, str2));
  10.   bSame = (str1 == str2);
  11. }
  12. // 測定end
  13. auto end = std::chrono::system_clock::now();
  14. // ミリ秒→秒 変換
  15. double dSec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() * 0.001;
  16. // 出力
  17. CString strResult = _T("");
  18. strResult.Format(_T("%lf"), dSec);
  19. ::AfxMessageBox(strResult);

【検証結果】
結論:_tcscmpが一番速い
  • Cstring::Compare
  • 0.030
  • Cstring::CompareNoCase
  • 1.380
  • _tcscmp
  • 0.003
  • CStringの等価演算子(==)
  • 0.037
  ※5回計測した平均値、単位は[秒]

上記の結果を見ると、基本的には「_tcscmp」を使うのが良さそうですね!

【Tips】
今回の速度計測に用いたライブラリ「std::chrono」を簡単に紹介しておきます。
C++11から導入された標準ライブラリで、現在時刻の取得や時間計測ができます。

以下は処理時間を計測する時のサンプルコードです。
  1. auto start = std::chrono::system_clock::now();
  2. // この間に測定したい処理を書く
  3. auto end = std::chrono::system_clock::now();
  4. // 処理時間を取得(ミリ秒→秒に変換)
  5. double dSec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() * 0.001;

応用すればラップタイムの出力もできるので、ぜひ使ってみてください!

以上、いかがでしたでしょうか?
ちょっとテーマがピンポイントすぎたかもしれませんが、皆さんのお役に立てれば幸いです。

次回も乞うご期待ください!
ありがとうございましたm(_ _)m
前回の技術ブログでは、なぜエクセルで見積書や請求書を作成・管理すると、いずれ大変になるのか?
という話題で、エクセルやアクセスを使った社内システム利用時の問題点についてまとめました。
今回はさらにもう1歩進んだ、エクセルやアクセス利用時の落とし穴についてご紹介したいと思います。


office-1356793_960_720.png
顧客リストや案件管理、日報、売上の管理など、エクセルやアクセスでされている企業は多いと思います。
手軽に利用し始めることができるため、関数やマクロを使いこなせれば、とても心強いビジネスツールとなります。
しかし、皆様のお悩みとして下記のようなお声をよくお聞きします。

  1. エクセルやアクセスのバージョンが変わったので利用できない
  2. エクセルやアクセスのバージョンが変わった際に、それまでのバージョンで動いていた処理が動作しなくなることがあります。
    しかもそのシステムの定義書や設計書などが存在せず、開発者の頭の中だけに設計図があることが多く、さらに悪いことにシステムを作った人の異動や退職等で改修が不可能な場合は、そのシステムは使い物にならなくなったり、改修費用が想像以上にかかったりします。

  3. 間違って更新、削除してしまう
  4. 何時間もかけて作成した集計表などを共有サーバにアップした際に、他の人の別のシートやデータベースの更新作業を行ったエクセルでアップロードされてしまい、せっかく作った物が更新、削除されてしまったことはありませんか?
    結局、それまでの各々の作業時間がムダになりますし、似たような名前のファイルが作成され、何度もファイルの中身を確認しては入力し直し…の繰り返しで思いのほか手間がかかります。

  5. 属人化や維持メンテの問題
  6. どんな会社にも1人はいる”エクセルマスター”、”アクセス名人”。
    複雑な関数やマクロを駆使して出来上がった、超便利なエクセルファイル。
    ただしコピー&ペーストを繰り返しているうちに値がおかしくなっていき、原因を探ろうにも、参照先をたどっていくのが難しっかたり、その作った人が急に休職、退職してしまったら…もう誰にも直せません。

  7. 細かい権限設定ができない
  8. 特定の部署や、特定の関係者だけで把握したり、利用したいデータがあるのに、ユーザによって編集・参照権限をデータの項目ごとに設定できずに困ったという経験はありませんか?
    また設定とか確認のプロセスとか細かいことが沢山あって、利用する際に逆に複雑怪奇になってしまうことも多々あります。


accountant-1794122_960_720.png
取り敢えずエクセルでやっておこう!の前述のような困った状態から脱却し、会社全体の利益を考えたパッケージソフトやシステム化を考えたいというお客様はお気軽にご相談ください。
「どこから手を付けてよいか分からないし、とりあえず今動いているからしばらくこのままでいいや」とお考えの方や、「どうせ高いんでしょ」と諦めている方も多いと思います。
しっかりとした業務分析や課題整理を行った後に導入するパッケージソフトやシステム化によって、エクセルでの作業をただ単純に効率化させるというだけではなく、会社全体として利益を生む、自社にマッチしたシステムが出来上がります。

f4be6bf966a34e724766e1a4cfec84cf_m.jpgハイテックスでは、ITを活用した業務改善のお手伝いをさせて頂いております。
また、ご提案の際は、費用対効果を明示した上でシステム導入のメリットとデメリットをご説明させて頂きます。
小さな業務改善も近い将来の大きなビジネス変革につながっていきますので、先ずはお気軽にご相談頂ければと思います。

技術情報ブログアーカイブ

弊社開発実績はこちら

新規開発からシステムリフォームまで、豊富な実績でお応えします。

ソフトウェア開発実績はこちら

製品パッケージのご案内

ワンストップで利用出来るハイテックスのパッケージソフトウェア。

製品パッケージはこちら

ハイテックスの特徴

経験豊富なスタッフがローコストで使いやすいソフトを開発します。

ハイテックスの特徴はこちら

よくある質問

システム開発についての疑問点に丁寧にお応えします。

よくある質問はこちら

料金の目安

ご予算に応じてシステムのご提案をいたします。

料金の目安はこちら

無料相談受付中

専門スタッフがシステムのご提案をいたします。

無料相談お申し込みはこちら

採用情報はこちら

経済産業省認定情報処理支援機関

Copyright Hitechs Inc. All Rights Reserved Worldwide.