派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

特別編集 量子コンピュータ、そういえば知らなかったなという方へ

なぜ注目が続くのか?「量子コンピュータ」

コンピュータの処理能力を飛躍的に向上させるとして、何かと話題の「量子コンピュータ」。一般のニュースでも耳にするようになりました。2022年のノーベル物理学賞が「量子もつれ」の研究者に贈られたことでも話題に。

そこで今回は、量子コンピュータ・プログラマが解説する連載記事をまとめてご紹介します。なにがすごい?の基礎の基礎から、量子プログラミングまで。実用化を目指す量子コンピュータは、今年も注目すべきキーワードです。

 

量子コンピュータの反対語はなに?

現在、私たちが使っているコンピュータは量子コンピュータと区別するために「古典コンピュータ」と呼ばれます。エニアックからはじまったコンピュータは、現代生活には欠かせないものとなり、最先端ではスーパーコンピュータの研究・開発がなされています。

しかしながら、コンピュータの発展にともない、私たちが扱うデータ量は膨大になり、より高度な問題の解決も求められつつあります。このように複雑化したニーズに対して、現状の古典コンピュータが応えるには、コンピュータの物理的な限界に達しつつあると言われています。

 

限界を超えられるか? 量子コンピュータをざっくり理解

ここで登場するのが量子コンピュータです。

量子力学で明らかになった量子がもつ不思議な特性を活かして開発されたのが、量子コンピュータです。これにより従来のコンピュータを超えるパワーをもった、全く異なるアプローチの量子計算ができるようになりました。

量子コンピュータはこの量子計算をベースに、量子を高度に制御することによって、従来のコンピュータでは難しい計算を可能にする次世代技術として期待が高まっているのです。

 

集まる注目、広まる誤解?

一方で、注目が集まるにつれて、量子コンピュータに関する誤解も広まっているのだとか。

例えば、「量子コンピュータがあれば、すべての計算が早くなる」「スーパーコンピュータがいらなくなる」といった言説は多くあり、一度は耳にしたことがあるかもしれません。これらの言説は量子コンピュータの現状から見れば、必ずしも正しくないのだとか。

話題の技術であっても、しっかりと実態を把握しながら学んでいく必要があるのかもしれません。

 

量子コンピュータをもっと知りたい方にオススメの記事6選

ここまで読んで、もっと詳しく知りたいと思った方へ、量子コンピュータの記事をまとめてご紹介。以下では、簡単に読み進められるものから順に並べてみました。
数式とは切っても切れない量子コンピュータ、具体的な計算式などが登場する記事もありますが、どうか諦めずに読みやすいものから読んでみてくださいね。

Pickup

一番やさしく量子コンピュータの概要を理解したい方へ

・絵と解説でやさしく解説
・量子コンピュータの2つの種類

もう少し量子コンピュータの理解を深めていきたい方へ

【※古典コンピュータの解説はこちら】
・数式なしで理解できる量子コンピュータの仕組み
・古典コンピュータとの違い、量子コンピュータへの誤解

量子コンピュータを学ぶための準備体操がしたい方へ

・量子コンピュータの理解に役立つ行列を復習
・ユニタリ行列を丁寧に解説

量子プログラミングに挑戦したい方へ

・実際にコードを書いて量子プログラミングをシミュレーション
・環境構築から一つずつ解説、ソースコードもあり

量子計算の基本をおさえたい方へ

・量子ビット、量子状態とは
・ユニタリ発展を易しく解説

量子コンピュータのゲートについて詳しく知りたい方へ

・基本の量子ゲートを紹介
・CNOTゲートを図解

 

特別編集 Accessのススメ

データベースをサクッと整備するならAccess

「Accessって事務のソフトでしょう?パソコンに入ってはいるけれど……」と、日々のちょっとしたデータ管理にはもっぱらExcelを使っている、という方は少なくないはず。

図表の作成や見栄えの良い資料を作るのに、Excelはとても優秀なソフトです。しかし何万行ものデータの処理をするには動作が重たくなってしまうことも。どんな仕事でもパソコンが固まってしまうと、イライラしてしまいますよね。

そんなときは、Access。Accessはデータを管理・集計するのに非常に向いているソフトです。一般的にAccessはWordやExcelと比べると習得に時間を要すると言われていますが、構造やAccessならではの機能を覚えてしまえば、ハードルはグッと下がります。さらにエンジニアの方であれば、VBAとSQLを組み合わせることで、より高度にAccessを使いこなすことも難しくないはず。

Accessは操作自体が難しいソフトではないため、非エンジニアの方でも運用しやすいデータベースを構築できるというのは社内でも喜ばれるポイントですよね。

今回は、いざというときのために役立つ、Accessの便利機能をご紹介します。Accessの基本から、Excelとの連携や、SQL+VBAでアプリケーションを作る方法まで。簡単なデータベースの構築にお困りの方や、大量のデータとExcelで格闘している方はぜひチェックしてくださいね。

こんな方におすすめ
 □ データが大量でExcelが重くなりがち
 □ 社内のデータベースをサクッと整備したい
 □ SQLとVBAの組み合わせ方を知りたい

Pickup

1:データベースの仕組みの復習から

注目ポイント
・そもそもなぜデータベースを使うのか?
・DBMSとSQLの関係
・SQLの基礎を確認

2:Accessの構造を理解し、VBA+SQLでデータベースアプリケーション

注目ポイント
・Accessで使う4つのオブジェクトとは?
・Accessは小規模プロジェクト向きのデータベース管理方法
・VBA+SQLのアプリケーション実装方法

3:知っておきたい、ExcelとAccessの連携のメリット

注目ポイント
・データ管理はAccessで、グラフ作成はExcelに読み込んで
・UIをExcelで作って、非Accessユーザにも優しく
・連携のためのサンプルコードあり

4:Accessを勉強すると耳にする、DAOとADOってなに?

注目ポイント
・データベースへ接続・操作する手段
・DAOとADOのおすすめの使い分け、SQLと組み合わせてテンプレ化
・コードテンプレートあり

5:SQLをおさらいしながら、VBAでSQLを扱うコツ

注目ポイント
・VBA内でのSQLの扱いは「文字列」
・より複雑なSQLを組み込むには

番外編:Accessってナニ?という方へ

Accessは大量のデータを整理して、必要なときに取り出せるように管理するソフトです。もちろん、Excelでも同様のことができますが、大量のデータを扱う際はExcelが固まってしまうなどスムーズに作業できないことも。それはExcelとAccessの得意分野の違いによるものです。ExcelとAccessの違いについて基礎から知りたい方は、こちらの動画でやさしく解説していますので、ぜひご覧ください。

>>動画「らしく働くためのAccess入門」(らしさオンライン|リクルートスタッフィング)」


▲「動画「らしく働くためのAccess入門」より

 

 

 

特別編集 学びたいランキング1位のクラウドをやさしく解説

クラウド時代はすでに始まっているのか

Amazon Web Service(AWS)やMicrosoft Azureなどのサービスに代表される、クラウドコンピューティング(クラウド)の利用が拡大しています。スモールスタートを叶えられることや、物理的なデバイスから開放されるという利点から、導入する企業が増えているそうです。

実際に、世界的な調査によるクラウドの市場急拡大のレポートや、「クラウドコンピューティング」人材が「量」・「質」ともに今後不足が見込まれるとした日本政府の調査結果(※1)が公表されていて、クラウドエンジニアへの関心と需要がますます高まっていることがわかります。現在、サーバーやネットワークの運用・保守をされている皆さんの中にも、身近な変化として感じている方も多いのではないでしょうか。

クラウドが普及すると、エンジニアはどうなるのか

クラウド導入が推進され、企業はサーバーを管理せず、ネットワークはサービスを活用する、となれば、サーバーエンジニアやネットワークエンジニアというお仕事はなくなってしまうの?と不安になってしまいますよね。安心してください、そうではありません!クラウドを導入しても、それら全ての仕事内容をクラウドに任せてしまうことはできないんだそう。

むしろ、クラウドが関わる分野が増えるほど「今ある現場の知識とクラウドをどう掛け合わせるか」という、これまで積み上げてきた専門性にしか考えることのできない問題が増えることになります。そのときには自身のスキルに加えて、クラウドについて広く理解していることが、エンジニアとして活躍する鍵になります。

全く新しい分野を勉強するぞ!と意気込む必要はありません。すでにインフラエンジニアとして働いている方も、インフラ未経験の方も、まずは知るところからはじめてみませんか。今回はクラウドについて解説した記事を2つご紹介します。

クラウドの基礎知識と新時代のエンジニア像

ゼロから学ぶクラウドの世界 クラウドの現在、未来はどうなるのか?そしてエンジニアは、どう学ぶのか」では、クラウドの基礎知識を学ぶことができます。 また、本記事で注目したいのは、クラウドサービスが変化するにつれて、新しく求められるようになる「T型人材」のお話。T型人材ってなんのこと?と気になった方は忘れずにチェックしてみてください。


▲「ゼロから学ぶクラウドの世界 クラウドの現在、未来はどうなるのか?そしてエンジニアは、どう学ぶのか」より

クラウドエンジニアへの近道は認定資格へのトライ

よし、クラウドエンジニアになろう!と思い立ったけれど、何からはじめていいかわからずにつまずいてしまったという方には、認定資格への挑戦がオススメ。AWSにもAzureにも認定資格が用意されています。資格取得でスキルを証明できることはもちろん、取得までステップを踏んで学習することで、体系的に学べることが最大のメリットです。

初心者歓迎!AWS認定ソリューションアーキテクトを目指すために」ではクラウドプラットフォームの世界シェア1位のAWSについて解説し、挑戦にオススメのレベルなど、AWS認定資格の勉強の始め方をご紹介しています。AWSについて知りたい、学び始めたいと思った方はぜひチェックしてみてください。


▲「初心者歓迎!AWS認定ソリューションアーキテクトを目指すために」より

まとめ

1:ゼロから学ぶクラウドの世界 クラウドの現在、未来はどうなるのか?そしてエンジニアは、どう学ぶのか

・2つの大きな潮流を理解
・エンジニアの境界が曖昧になる?必要とされるエンジニアとは
・クラウドの学び方と注意すべきセキュリティ

2:初心者歓迎!AWS認定ソリューションアーキテクトを目指すために

・AWS認定資格ってどんなもの?
・まずはソリューションアーキテクトに挑戦!
・試験のポイントとステップアップの道筋

クラウドのスキルを身につけると、時給UPやお仕事の幅が広がる?

最後にやっぱり気になるのは、クラウドエンジニアのお仕事事情。お仕事検索ページでは、インフラエンジニア、保守・運用のスキルに加えて、クラウドに関するスキルを身につけることで、ご紹介できるお仕事の数が約1.5倍に増加します(※2)。さらに、クラウドに関するスキルが求められるお仕事の時給は、エンジニア全体の平均よりも500円以上高い傾向に(※3)。お仕事事情からもクラウドエンジニアが求められていることがわかります。

現在のご自身の専門スキル×クラウドで自分だけの強みをもって、これからも長く活躍できるエンジニアであり続けられるように、この記事を学びのキッカケにしてみませんか?

※1 出典:「IT人材の最新動向と将来推計に関する調査結果~報告書概要版~ 」,経済産業省商務情報政策局情報処理振興課)(https://www.meti.go.jp/shingikai/economy/daiyoji_sangyo_skill/pdf/001_s02_00.pdf)(2022年6月22日に利用)
※2,3 2022年6月時点で、お仕事検索ページに掲載されている案件から「エンジニアスタイル」調べ

 

特別編集 動画・記事で学ぶJavaScript入門

今やWebサイトやWebアプリケーションの作成に欠かせない、プログラミング言語JavaScript。デザイナーの皆さんや新しい言語に挑戦したい方にとっては真っ先に思い浮かぶ言語かもしれません。ただ、ちょっとだけハードルが高いという声もよく聞きます。

いきなりコーディングをするのは難しそうに見えますが、実はJavaScriptは環境構築の必要がないため、気軽に学び始められる言語。そして、少しでも学ぶと挑戦できる仕事の幅がぐっと広がります。

こんな方にオススメ
□ JavaScript超初心者!まずはどんな言語なのか触れてみたい
□ フロントエンジニアにも挑戦してみたい
□ WebサイトのUIについてもコードを理解しておきたい
□ エンジニアとして、キャリアの幅を広げたい

今回はJavaScriptを実際に書いて動かす体験ができる入門講座動画を集めました。サクッと学びたい方はレポート記事から、じっくり学びたい方は動画で動きを確認しながら理解するのがおすすめです。「やってみたいけど、難しそう」とJavaScriptが気になっている方は、結構多いはず。本記事を最初の一歩にしてみませんか。

Pickup

1:【動画】JavaScriptってどんな言語?体験入門講座#1

注目ポイント
・はじめてでも大丈夫!JavaScriptってどんな言語?
・サンプルデータを使って実際に動かしてみる
・HTML/CSSを書き換えて、動きのあるUIをつくってみる

2:【#1動画レポート】JavaScriptのオブジェクトとメソッドを理解しよう

注目ポイント
・サクッと記事で学びたい方はこちらから!
・動画とあわせて読んで、さらに理解を深めよう
・オブジェクト(対象)とメソッド(操作)の書き方

3:【動画】JavaScriptでスライドショーをつくる体験入門講座#2

注目ポイント
・サンプルデータを使って、簡単なスライドショーがつくれる
・コードの意味と構造を理解しながら進められる
・JavaScript初心者におすすめの学習方法と注意点

4:【#2動画レポート】JavaScriptの定数をつかって要素を一括取得してみる

注目ポイント
・サクッと記事で学びたい方はこちらから!
・動画とあわせて読んで、さらに理解を深めよう!
・変数と定数の違いを理解しよう

5:ここまで学んでWebエンジニアに興味をもったら

注目ポイント
・フロントエンジニアに転身する価値とは?
・動画にも登場したHTML&CSSを押さえておこう
・UIデザイン、PHPについても一気にチェック

 

特別編集 エンジニア力を発揮するためのビジネススキル

エンジニアの技術的スキルは足りていても、コミュニケーション不足で意図しないミスが発生したり、技術的な内容がどうしても相手に伝わらなかったりして、プロジェクトが円滑に進まなくなることもありますよね。そんなときは、ビジネススキルを見直してみませんか。相手の行動を読み、先回りできるようになれば、あなたのエンジニアとしてのスキルをもっと活かせるようになるかもしれません。

□ スキルアップといっても何からはじめればいいかわからない
□ 「結局何が言いたいのかわからない」と言われたことがある
□ プレゼンテーションに自信がない
□ 相手とのコミュニケーションですれ違うことが多々ある

今回は上記のような、いわゆるビジネススキルに関する記事をご紹介します。案外忘れている基本的なことや、改めて読むと新しい気づきがあるかもしれません。これを機におさらいしてみてくださいね。

Pickup

1:モチベーションが下がっていませんか?エンジニアの3つのスキルとは

気になるポイント
・エンジニアのスキルは「ソフトスキル」「ハードスキル」と「〇〇スキル」
・アジャイル開発のテクニックを応用、パフォーマンス目標をつくるワークあり

2:キタミ式に学ぶ、伝えるときに気をつけること

気になるポイント
・プログラミングと本を書くことは同じ?マンガから学ぶこととは
・わかりやすい文章のポイントは「情報の〇〇」

3:プレゼンテーションの目的は「行動」してもらうこと

気になるポイント
・スライドに入れたイメージ画像、混乱させているだけかもしれません
・形式的に作っていませんか?重要なのは「〇〇〇〇スライド」

4:コミュニケーションスキルは「獲得」できるもの

気になるポイント
・わかったつもり、伝えたつもり、自分勝手なコミュニケーションに注意
・「報連相」にも改善の余地あり、相手に何を〇〇しているのか?

 

エンジニアへの挑戦状 #03 テストデータ作成問題

f:id:itstaffing:20220330142838j:plain

あなたのプログラマとしての力を測る問題です。
非プログラマにはわからない。
言語問わず、プログラマならわかるはず。
さて、あなたは解けますか?

所要時間:3~5分

考え方がわかれば、1分足らずで解けるかも!?

【問題】

ある飲食店で注文された商品の金額を計算するプログラムを作成しました。次のように、4つの項目が引数として与えられ、それぞれの項目について3つの分岐に分かれています。なお、FOOD_UMEなどの定数は他の場所で定義されているものとします。

int calc(int main, int side, int drink, int tax) {
    int price = 0;
    if (main == FOOD_UME) { /* メインが松竹梅の梅のとき */
        price += 500;
    } else if (main == FOOD_TAKE) { /* メインが松竹梅の竹のとき */
        price += 700;
    } else { /* メインが松竹梅の松のとき */
        price += 1000;
    }

    if (side == FOOD_SALAD) { /* サラダをサイドメニューにしたとき */
        price += 200;
    } else if (side == FOOD_POTATO) { /* ポテトをサイドメニューにしたとき */
        price += 250;
    } else {
        /* サイドメニューなしのとき */
    }

    if (drink == DRINK_SET) { /* セットドリンクのとき */
        price += 150;
    } else if (drink == DRINK_ONLY) { /* ドリンク単体のとき */
        price += 300;
    } else {
        /* ドリンクなしのとき */
    }

    if (tax == TAX_IN_STORE) { /* 店内での飲食のとき */
        price *= 1.1;
    } else if (tax == TAX_TAKEOUT) { /* お持ち帰りのとき */
        price *= 1.08;
    } else {
        /* それ以外は消費税なし */
    }
    return price;
}

この関数の戻り値をテストするために、自動テストのテストコードを書くことにしました。たとえば、次のようなテスト処理を用意し、その中にテストデータを並べます。

void testCalc(){
    TEST_ASSERT_EQUAL_INT(calc(FOOD_UME, FOOD_SALAD, DRINK_SET, TAX_IN_STORE), 935);
}

分岐の条件に不具合が1ヶ所あったとき、自動テストの結果から不具合の場所を特定するために、最低限必要なテストデータの個数として正しいものを選んでください。

【選択肢1】
81個

【選択肢2】
27個

【選択肢3】
9個

答えはわかりましたか?時間がかかってしてまった方や、つまずきを感じた方はこれを機に「直交表」について学んでみましょう。
正解とその解説は5月に掲載する予定です。お楽しみに。

【出題者】
増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピューターを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『プログラマを育てる脳トレパズル 遊んでおぼえるPythonプログラミング&アルゴリズム』『もっとプログラマ脳を鍛える数学パズル アルゴリズムが脳にしみ込む70問』『プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問』『図解まるわかり アルゴリズムのしくみ』(以上、翔泳社)などがある。

 

エンジニアへの挑戦状 #02 Pythonでお宝探し【解説】

f:id:itstaffing:20220318155953j:plain

この記事は、2022年3月11日に配信した「エンジニアへの挑戦状 #02 Pythonでお宝探し」の解説となります。まだ問題を解いていない方は、こちらからご覧ください。
https://www.r-staffing.co.jp/engineer/entry/20220311_1

あなたのPythonスキルを測る問題でした。
迷わずに選択肢から解答を選べましたか?早速、解説していきます。

問題を解くための考え方

換字式暗号は古典的な暗号方法の一つで、最も有名なシーザー暗号も換字式暗号の一つです。シーザー暗号は紀元前100年ごろに発明されたと言われており、ABCという文字列をBCDのように決められた数だけズラして暗号化する方法です。

今回の問題では、これの発展系で変換先の対応表が必要になります。

単純な暗号方式なので暗号を解読するのに必要な対応表が与えられない場合でも、解読されてしまう恐れがあるので現代では実用的ではありません。重要な情報は現実的な時間で解読ができない複雑なアルゴリズムで暗号化する必要があります。

暗号化されていない文章のことを「平文(ひらぶん)」と言います。平文を解読不能な情報に変換することを暗号化と呼び、平文に戻すことを復号化と呼びます。

問題文のプログラムの中に、以下のような対応表があります。

```
    plain_chars = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげご "
    encrypted_chars = "くけこそるれのぎぐよおみせかはらいえまねちもがをうふへほたろすあむげりめひさしんきやゆごわつてとなにぬ "
```

これは、「あ」を「く」に書き換え、「い」を「け」に書き換えるというように1文字ごとに変換先の文字が指定されています。最後のスペースはスペースのままです。

そして、

```
    encrypted_text = "られしふ おけぬう みすも れぎみら"
```

を復号化するのが目標です。プログラムを読むことができなくても、対応表が与えられているので1文字ずつ照らし合わせれば解読できます。

復号化は `decrypt` というメソッドで実装しています。 `decrypt`は `transform_text` メソッドを利用しており、引数は暗号文及び辞書型の変換表を持ちます。暗号文を平文に変換する変換表は `encrypted2plain_key` で、キーに暗号化されたときの文字、バリューに平文のときの文字が保存されています。 `transform_text` では、暗号文に対して変換表を使いながら1文字ずつ処理していけばいいことになります。

解説

これらを踏まえて、今回の選択肢を順に見ていきましょう。
まずは【選択肢1】です。

```
for value in key.values():
    replaced_char = key.get(value, "")
    text = text.replace(value, replaced_char)
return text
```

では、変換表のバリュー(平文時の文字)に対して、 `replaced_char` でキー(暗号字の文字)を取り出しています。

`text.replace` は引数1つ目の文字を2つ目の文字に変換します。つまり平文時の文字を暗号字の文字に置き換えています。ここでは暗号化済みのテキストを変換したいので、平文時の文字として扱うのは不適切なので誤った選択肢です。

【選択肢2】はどうでしょうか。

```
output = ""
for char in text:
    output += key.get(char, "")
return output
```

textに対して1文字ずつ繰り返し処理をしています。 `key.get` では暗号文の文字をキーにして平文時の文字を取り出しています。それをoutputという文字列に追記しています。text が暗号文で欲しい出力が平文のため、【選択肢2】が正解の選択肢です。

【選択肢3】も見てみましょう。

```
output = ""
for char in text:
    output += key.pop(char, "")
return output
```

【選択肢2】と非常に似ていますが、 `key.pop` な箇所が異なります。popは1度取得したキーを辞書から削除してしまいます。暗号文に同じ文字が2回出ると変換することができないため、誤った選択肢です。

正しい方法で復号化すると「たからは さいの しまに かくした」になります。

果たして海賊団は宝を見つけることはできたのでしょうか。今回は、換字式暗号を題材にして文字列の置換や辞書型の取り扱いを紹介しました。少しでも皆さまのためになりましたら幸いです。

【出題者】
早川 敦士さん
株式会社DATAFLUCTで事業責任者(プロダクトマネージャー)として従事。データと機械学習をビジネスに活かすプロダクトを開発している。また、株式会社ホクソエムで執行役員を務めたり、プログラミング教育に携わる。新卒でリクルートコミュニケーションズに入社しWeb広告やマーケティングオートメーションなどのB2Cマーケティングを経験し、その後ユーザベースにてB2BマーケティングプラットフォームであるFORCASのクローラーやデータ分析基盤を開発するチームリーダーをする。大学在学中に『データサイエンティスト養成読本』(技術評論社刊)を共著にて執筆。その後も『機械学習のための特徴量エンジニアリング』(オライリー・ジャパン刊)や『Pythonによるはじめての機械学習プログラミング』(技術評論社刊)などで執筆活動を続けている。Youtubeチャンネル『データサイエンティストgepuro』で動画を投稿。
・Twitterアカウント