ブログ

  • Hello world!

    WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。

  • seleniumとRPA

    seleniumとRPA

    今回は趣向を変えて、TIPS記事のようなものを作成していきたいと思います。
    記念すべき第一回目の記事はseleniumとRPAと、ちょっとだけAIについて書いていきたいと思います。

    IEのサポート終了

    2022年6月でIEのサポートが終了し、各プログラム言語に公式ライブラリとして備わっていたHTMLdocumentを使ったIEでのwebページのクローリングや自動操作が不可能になってしまいました。(アンインストールしない限りIEを起動させること自体は可能ですが、セキュリティ上大変危険なため皆さんは決して継続利用なさらないようにお願いします。)

    seleniumやRPAといったツールは、そんなwebページのクローリングや自動操作に必須となるツールとして、IEのサ終以前から注目されておりました。

    seleniumとRPAの違い

    この2つの大きな違いを語る前にそれぞれの言葉の意味をまとめてみました。

    selenium
    ・webページの動作テスト用に作成されたライブラリの名称
    ・PythonやJava、VBAなどの言語で参照でき、コーディングによってChromeやEdge、Firefoxといったブラウザをコントロールして任意の作業や繰り返しの作業を実行する

    RPA
    ・ロボティック・プロセス・オートメーションの略称で、PCでの仮想の労働者に業務を行わせる技術や機能の総称
    ・デスクトップ上の作業をRTAのエディタで記録して、繰り返し実行したり、条件分岐や定型フローを組み合わせて業務を実行させる

    といった感じ。ざっと羅列しただけでも違いがわかると思いますが、先ず大きな違いは「seleniumはWebを自動操作する」で「RPAはWebに限らずPCの操作を自動操作できる」の点になります。

    根本的な土俵の違い

    上のまとめだけを見ると「だったら、RPAを覚えた方が業務幅が広がるじゃん!」と思われがちです。

    確かにできる業務の幅でいったらその考え方になりますが、ここで両機能の1番目に載せた特徴の「webページの動作テスト用に作成されたライブラリの名称であることと、「PCでの仮想の労働者に業務を行わせる技術や機能の総称」 という違いがあることを説明していきます。

    先ずseleniumはライブラリであるため、単体で開発環境を持つことはなく、既に修復しているプログラム言語から参照して使用することができます。つまりプログラム言語でseleniumという機能をスタートさせて、プログラム言語で指定した通りの動作を再現してブラウザをコントロールしています。

    一方のRPAはほとんどの場合独自の開発環境やソフトをインストールする必要があり、記述やフローチャートを勉強する必要があります。この・については既に修復している言語が有るか否かで選択肢が別れる点かと思いますが、RPAのほとんどは自分が操作したログをプログラム言語化して記録し、その操作を繰り返すことで自動化しております。

    上記で説明しただけでも、「seleniumは記述したプログラムを動作にする」事と「RPAは動作を記録してプログラム化する」という決定的な違いが解っていただけると思いす。この点については真逆の性質を持っていると言えます。

    結局どっちが便利なの??

    決定的に真逆の性質を持っているとなると、どっちを使ったらいいの?という疑問が生まれてくると思います。
    適材適所としか言いようのない部分かもしれませし、これに関しては永遠の議題だと思っています。

    個人的な意見としては、この議題の明暗を分けるのが、タイトルに記載したAI分野の技術だと考えています。chatGPTの登場によってコーディングの精度や環境構築スピードが格段に上がったと感じる技術者は多い事でしょう。

    現在無料版のGPTでさえ「PythonでSeleniumを使ったコードを作成して」とトークしてみると、かなりの精度でコードをジェネレートすることが出来てしまいます。プログラム言語にちょっと疎くてもこれだけでseleniumはとっかかりが作れてしまいます。

    一方で「●●のソフトを自動化する為にどんなRPAソフトを導入すればいい?」とGPT聞いた場合も、高確率で意図している通りの機能が備わった環境が提供される事でしょう。こちらに関しても少しの手間でとっかかりが作れると思います。

    そこから先は使用する技術者の腕次第になりますが、それをサポートするAIの学習幅、解決能力は今のところseleniumに軍配が上がっているように思います。単純にGPT君のコーディングスキルがめちゃくちゃ高いので、コードから機能を作成するseleniumとの相性が良く、RPAのように明確な答えがない物の案内が苦手なような気がしています。

    しかし、今後のGPTのVer4やその先の技術の能力によっては、その環境やパワーバランスはすぐに覆ってしまうんじゃないかなと私は考えております。

    まとまりのない記事となってしまいましたが、seleniumとRPAの決定的な違いと、AIとの相性について参考になればと思います。

  • 私がITエンジニアになった理由(その3:そして専業へ)

    私がITエンジニアになった理由(その3:そして専業へ)

    エンジニアヒストリーの更新第3回目は、期間空いてしまいましたが、前回に引き続きユウスケが部門内エンジニアから、いかにして専業エンジニアになり、BitDesignLaboに所属するようになったかをお話ししていこうかなと思います。

    1、職場との別れ

    私が部門内のエンジニアとして活動を終えた理由はズバリ退職したからです。といっても、その時点で専業を目指して自主退職をした訳ではなく、大幅な組織改革により遠方に転勤になるか、会社都合扱いで退職となるかの判断を迫られたのです。

    前回までに登場していた上司も同じように決断を迫られておりましたが、上司は開発者である以上にマネージャーとしての責任感から転勤を決めていました。退職を考えていた私はかなり強めに引き止められました。しかし、ハッキリ言って転勤した先で同じように自由な開発ができるとは思っておらず、この機会で専業としての道に進むことはできないかと考え始めました。組織や上司への恩義はありましたが、このまま転勤族として生きる事になるより、会社都合で退職できるタイミングで新しい業界に飛び込みたいという意欲がわいてきたのです。

    そこからはエンジニアの求人を探して転職活動を始めました。当初は年休消化期間の早い段階で次の職場を決めて、バカンスでも楽しもうかと浅はかな考えを抱いておりました。しかし実際のエンジニアとしての実務経験が乏しく、ほぼ未経験扱いの私で面接までたどり着きそうな中途採用求人は、私の地域にはほとんどありませんでした。

    2、次の会社と新しいエンジニアの形

    結果としてバカンスを楽しむヒマはなく、在職中に取引のあった協力会社に雇っていただくこととなりました。『結局専業じゃないのか?』と疑問に思われたかと思いますが、求人を探しているうちにフルリモートのエンジニア求人やクラウドワークス等でのフリーランスのエンジニアとして働く業態があることを知ってから方向性を変えたのです。
    求人の決まらない私に声をかけてくれたその協力会社が副業OKだったので、クラウドワークスで副業としてエンジニア経験を積む方向に切り替えました。

    正式に職場を退職してからノータイムで新たな会社に配属された私は、日中は本業での仕事をこなしながら、夜中はクラウドワークスで私のこなせるレベルの仕事を探して経験を積むという生活が始まりました。

    ほとんどの募集はトレンドになっていたpython等の即戦力エンジニア募集ばかりでしたが、VBAやVBなどのスタンダードな開発言語の募集やオペレーション業務の募集もあり、その分野ではすぐに実績を残すことができました。

    納期を遵守し、報連相を豆に取るだけで実績と高い評価のレビューが自然とついてきます。クライアント様から逆にオーダーされることや、『別の言語で経験を積んでみないか?』と勉強用のサンプルが渡される機会も増えてきました。

    持ち前のコードを読み解く根気と、元上司から教わった『先ずは終わらせる』の精神でクラウドワークスに食らいついた私はVB以外にVC#、Unity(VC#)、html(cssとjsも)などの開発言語(環境)を力づくで体得していき、サーバーもSQLserver以外にもMySQLの環境作成まで経験していくこととなりました。サーバーについてはリモート操作でサーバーでセットアップする経験も豊富についていきました。

    技術習得以外にも、一つの企業に所属しているだけでは到底得られなかったようなトレンドが知れたことも、副業でエンジニアを続けていくモチベーションだったと思います。
    どんな企業がどんなツールを欲しているのか、世の中にはどんな業務ツールが存在しているのか、トレンドや世間を知る事は前職でサーバー構築に触れたとき以上に概念を壊した経験だったと今になって思います。

    当然ですが本職での就業規則を守りながらの副業ですので、休息しなければならない時間の確保にも苦労しましたが、それ以上に実績を積める楽しさで毎日アドレナリンが全開だったと思います。(健康を著しく害する危険があるため、他人にあまりお勧めできないような業務体系でした。)

    3、ついに専業へ

    しばらくそんな副業での経験を積んだ後に、拾っていただいた協力会社を円満退社し、晴れて私の経験を認めてくれたBitDesignLaboに正式に専業エンジニアとして所属することになります。

    …部門内エンジニアでのエピソードに比べると駆け足でのエピソードになってしまいましたね。(実際のところ、守秘義務等の問題があるため、詳しくお話できるエピソードがとても少ないのです…)

    まとめになりますが、タイトルに書いてあった『私がエンジニアになった理由』とは、『新しい概念と出会うため』と言うことができると思います。この新しい概念との出会いが、一貫して私の開発への情熱に直結していたと思いますし、今ブログでこのエピソードを書いているのも、新しい刺激になるなと考えております。これからも新しい技術や概念と出会えることを生きがいとして、エンジニアの業務を遂行していきたいと思います。

    といった感じで、3記事にわたって今の業態になるまでの経緯を書き連ねてまいりました。次回以降はTIPS系の記事なんかを書いてみようかな~と考えております。

    次回の更新をお楽しみに!!

  • エンジニアへの道(主婦編)2

    エンジニアへの道(主婦編)2

    第2話: サムライエンジニアへの入塾と学びの喜び

    サムライエンジニアへの入塾は、私にとって大きな転機でした。子育ての合間に自分自身の成長を追求することができる環境に身を置くことは、非常に貴重な経験でした。

    入塾後、私はプログラミングの基礎から学び始めました。初めは不慣れなコードの世界に戸惑いもありましたが、丁寧なメンターの指導や学習仲間との励ましに支えられ、段々と自信をつけていきました。

    サムライエンジニアの学びの醍醐味は、実践的なプロジェクトに取り組むことでした。実際の課題に直面しながら、プログラミングの知識や技術を活かして解決策を見つける経験は、非常に充実感を与えてくれました。

    また、サムライエンジニアでは学習仲間との交流も盛んでした。他の受講生との情報共有やアイデアの発信、お互いの成長を励まし合うことで、モチベーションを保ちながら学習を進めることができました。

    プログラミングの学びは私にとって新たな知識だけでなく、新しい視点や思考法を与えてくれました。論理的思考や問題解決能力を鍛えることで、日常生活や子育てにも活かすことができました。さらに、自分自身の成長を実感することで、社会復帰への自信を深めることができました。

    サムライエンジニアでの学びの喜びは、私の人生に新たなエネルギーや希望を与えてくれました。子育てとの両立が大変な時期でもありましたが、プログラミングの学びを通じて、自分自身の可能性を信じ、新たな道を切り拓くことに向けて前進しました。 次の第3話では、私が副業としてWEB制作を始め、収入を得ることに成功するまでの道のりについてお伝えします。

  • エンジニアへの道(主婦編)1

    エンジニアへの道(主婦編)1

    第1話: プログラミングの道への興味

    私は主婦として二人の子供を育てる中で、自分自身のキャリアについて考える機会が少なくなっていました。しかし、子育てに専念する中で、新たなチャレンジへの興味が芽生えました。

    テクノロジーの進化が進む現代において、プログラミングの存在に興味を持ち始めました。デジタルの未来において重要なスキルを身につけることで、自分自身の成長と社会復帰の可能性を広げたいと強く思ったのです。

    プログラミングは私にとって未知の領域であり、初めてのステップを踏み出すことは少し不安でした。しかし、子供たちが将来的にデジタル時代で活躍することを考えると、私も彼らと一緒に成長し、共通の言語を話せるようになりたいという思いが強くなりました。

    プログラミングの学習は私にとって自己成長の機会でもありました。新しい知識を得ることや、創造的な問題解決を通じて論理的思考を養うことができました。また、子供たちにも良い影響を与えることができると感じました。

    そんな中、私はサムライエンジニアというプログラミングスクールに入塾しました。初めての授業やプロジェクトに挑戦する中で、自分自身の可能性を感じることができました。他の学習者との交流や励ましもあり、不安な気持ちを乗り越えて学習を進めることができました。

    プログラミングの学習は私にとって新たな道を開くきっかけであり、自己成長の一歩となりました。子育てとの両立には時間と努力が必要ですが、私はプログラミングの学びを通じて、社会復帰への道を切り拓くことを決意しました。 次の第2話では、私がサムライエンジニアでの学びを深める過程についてお伝えします。

  • DXって難しい!!

    DXって難しい!!

    我々は、日々進化し続けるデジタル世界において企業が競争力を保つために必要不可欠なデジタルトランスフォーメーション(DX)を支援することに取り組んでいます。

    我々の目指すものは、単に技術的な面だけを改善することではありません。人々の働き方を改革し、業績を向上させ、さらには企業全体の競争力を高めることにつながる全面的な変革を目指しています。

    「DX」という言葉が広く叫ばれていますが、それは単に新しいソフトウェアやツールを導入するだけではなく、ビジネスプロセスそのものをデジタル化し、最終的には企業全体の価値を最大化することを意味します。しかし、その一方で、DXの道のりは困難に満ちています。特に中小企業では、リソースやスキルの不足、既存のシステムやプロセスへの依存性、変化への抵抗など、さまざまな課題が立ちはだかることがあります。

    我々はこれらの課題に対する解決策を提供します。我々のDXサービスは、技術的な専門知識と戦略的な視点を組み合わせたもので、企業のビジネスゴールに合わせたカスタマイズが可能です。我々の目標は、あなたの企業がデジタル時代に適応し、成長し、最終的には競争優位性を築くのを助けることです。

    我々の提供するサービスは以下のようなものです:

    デジタル戦略策定:企業のビジネスゴールと現状の技術的な能力を理解し、最適なDX戦略を策定します。

    技術的な実装:適切なテクノロジーとツールを選定し、それらを効率的に導入・実装します。

    教育とトレーニング:スタッフが新しいツールやプロセスを適切に利用するための十分な教育とトレーニングを提供します。

    データ管理と分析:データを適切に収集、管理し、ビジネスに価値をもたらす洞察を提供します。

    継続的なサポート:導入後も継続的にサポートを提供し、DXの取り組みが持続的に成果を上げられるようにします。

    それぞれの企業に合った形でデジタルトランスフォーメーションを進めるために、我々はテクノロジーだけでなく、人々や組織全体にも着目します。新しいテクノロジーを導入するだけではなく、企業文化を変え、変革を受け入れる準備ができているかどうかを評価し、必要に応じて調整します。これにより、我々のクライアントは自社のビジネスニーズに最適なデジタルトランスフォーメーションの道筋を描くことができます。

    我々は、デジタルトランスフォーメーションが単なる一時的なトレンドではなく、持続的な競争力を確保するための重要な手段であると考えています。それは単に新しいテクノロジーを導入すること以上のもので、ビジネスモデルそのものを変革し、価値を創造する新たな方法を模索するプロセスです。

    このような視点から我々のサービスを提供することで、中小企業の皆様がデジタル化の波を乗り越え、業績を向上させるための強力なパートナーとなることを目指しています。

    我々の提案に興味を持っていただけましたら、ぜひ一度お話しする機会を設けていただければと思います。あなたのビジネスの現状と目標、そして我々がどのようにサポートできるかを具体的に話し合うことで、一緒に新たな成長の道筋を描くことができると確信しています。

    是非ご連絡下さい、心よりお待ちしております。

  • プログラミングの習得は言語を覚える事ではないのです

    プログラミングの習得は言語を覚える事ではないのです

    オンラインプログラミング塾の講師をしています。

    最近、言語をやたら暗記しようとする生徒さんが多いような気がしています。プログラミングとはという目線で独り言を書いてみます。

     

    プログラミングを学ぶ意義は多面的で、特に、文部科学省が推奨する「プログラミング的思考」の習得に重要です。

    まず、プログラミングを学ぶことは、具体的なスキルだけでなく、問題解決のスキルを身につけることでもあります。プログラムは問題を解くための一連の手順を組み立てるプロセスです。つまり、プログラミングは論理的思考を強化し、複雑な問題をより小さな管理可能な部分に分解する能力を向上させます。

    次に、プログラミング的思考は、科学的なアプローチと直接結びついています。仮説を立て、それをテストし、その結果に基づいて調整するというプロセスは、プログラミングと科学的方法の両方に共通しています。

    また、プログラミング的思考は、創造性も刺激します。コードを書くことは芸術に似ており、無限の可能性があります。学習者は自分だけのプロジェクトを作成するために自分自身の創造性を用いることができます。

    さらに、プログラミングは、今日のデジタル社会におけるリテラシーの一部ともなっています。私たちの生活はますますデジタル化され、多くの職業がテクノロジーに依存しています。プログラミングを理解することは、この変化する世界での成功をサポートします。

    最後に、プログラミング的思考は、より効率的なコミュニケーションとコラボレーションにつながる可能性があります。明確な指示を作成し、他人と共有する能力は、プログラミングだけでなく、日常生活における重要なスキルです。

    これらすべてを合わせると、プログラミングを学ぶことの意義は明らかです。それは単にコードを書く能力を得ること以上のもので、思考の方法、問題解決の手段、そしてこのデジタル世界で生き抜くための道具を提供します。

     

    是非、プログラミングを学習して、将来に渡る、ビジネススキルを身に付けて下さい。


  • VBAは古い?

    VBAは古い?

    オンラインプログラミング塾の講師をしています。最近VBAを学びたい生徒さんが増えた気がします。

    VBAについて改めて考えてみました。

    VBA(Visual Basic for Applications)は、古い言語として知られていますが、実は今もなお注目を集めています。プログラミングを学ぶ際にVBAを最初に学ぶメリットはいくつかあります。

    まず第一に、VBAは使いやすいという点です。初心者でも直感的に理解しやすい文法や操作インターフェースが特徴です。ExcelやWordなどのMicrosoft Office製品で使われており、すでに身近な環境で使えるので、学習のハードルが低いです。

    また、VBAは効率化や自動化に役立ちます。例えば、Excelの大量のデータ処理やWordでのドキュメント作成を自動化することができます。繰り返しの作業を省くことで時間を節約し、ヒューマンエラーを防ぐこともできます。

    さらに、VBAはカスタマイズ性が高いです。既存の機能をカスタマイズしたり、新しい機能を追加したりすることができます。自分のニーズに合わせてオリジナルなプログラムを作成できるので、創造性を発揮することができるんです。

    データ処理や分析にも役立ちます。Excelのデータの読み込みや集計、グラフ化などを自動化することで、効率的にデータを扱うことができます。ビジネス上で重要な意思決定を行うためのデータ分析にも役立つでしょう。

    最後に、VBAは豊富なリソースが利用できます。多くのオンラインコミュニティやチュートリアル、サンプルコードが存在し、学習をサポートしてくれます。困ったときには助けを求めることもできるので、初心者でも安心して学び進めることができるんです。

    VBAは古い言語とされることもありますが、その実力は今もなお健在です。使いやすさや効率化の面でメリットがあり、ビジネスや日常生活で活用する機会が多いです。プログラミングを始める最初の一歩として、VBAの学習は非常に価値があるので是非試してみて下さい。

  • 私がITエンジニアになった理由(その2:部内エンジニア編)

    BitDesignLaboの更新第2回目は、前回に引き続きブログ更新担当:ユウスケが部門内エンジニアになってからの経緯をお話ししていこうかなと思います。

    1、部門内エンジニアの業態って?

    前回までの記事で、私は上司の作ったVBAから独学でコーディングを学習し、その能力を認められて2人態勢で活動を始めた所までお話しましたが、実際に部門内エンジニア時代がどんな環境でどんな業態だったかの説明がチラッとしかできていなかったので、そのお話もしていきます。

    まず環境ですが、2人体制とは言っても上司は概要をさらっと教えてくれたのみで、VB.NETとSQL Serverも独学で学習し、フォームアプリとデータベース構築の基礎を身に着けることとなります。

    一番最初に任されたのが、とあるグループで新規に立ち上げた販売事業の注文管理システムの修正でした。もともと上司がデータベースから作成したフォームアプリのシステムで、アプリからデータベース内のレコードを更新して、販売情報の登録や進捗を管理するというシステムでした。

    前述の通り、上司はアプリ大枠を教えたら多忙なマネージャーとしての業務に戻ってしまうので、コードを読んで細かい内容を確認していきます。要件定義や仕様書、wikiのようなものは当然なく、別の担当者と共有することを一切考慮していないアプリケーションでしたので、今考えるとよくこんな仕事に手を出したなと考えてしまいます。(社内SEあるあると言えばそれまでなのでしょうがw)

    それから勉強として部門内アプリの修正と改修を繰り返しました。実際のところ新規にアプリを作るだけのコーディングの知識も企画力もまだ備わっていなかったので、なんの説明もないジャングルをかき分けるようなコード修正でも、とてもいい勉強だと言い聞かせ続けました。になりました。

    そして業態はというと、上司はマネージャーを兼務しているのは前述通りですが、わたしも今までやっていた通常業務(販売や物流の事務とオペレーション)と兼業で開発を行っておりました。こればかりは会社や組織や部門によって大きく変わるとは思いますが、前回の記事でも書いた通り、配属された部門ではVBAやアプリ開発技術が評価に直結することはありませんでしたし、いくら業務を効率化できても私一人分の業務を他人に回せるほどの高効率化とはならないのが現実でした。その代わり、上司のように開発の知識に関して理解がある人が目をつけてくれて、回り道となっても積み重ねた業務効率化の実績が評価につながっていくといううれしさもありました。

    2、得られたのは新しい『概念』

    VBAからプログラミングに入門した方なら、なんとなく共感していただけると思いますが、VBAからVB.NETへの技術的な適応はそれほど時間がかかりませんでした。どちらも昔ながらのBasic言語なので、Google等で検索をすれば先人たちが質問したQAやブログにまとめられたサンプルコードがたくさんありました。それらを自分なりに適応させて、開発を行っておりました。

    しかし、データベースという『概念』を自分に定着させることは非常に苦労しました。なぜなら業務をする上で『データを纏める=Excel』という概念が根強く残っていたためでした。VBAのコードをいじっているときから、データベース(AccessやSQL Server)にアクセスしてデータを読み込んだり更新したりという知識は持っておりましたし、テーブルとカラムとレコードも『Excelのシートとか行列と一緒やな~』なんて思っておりました。

    しかし、今までコードの修正ばかり行っていた私が、いざ1からフォームアプリやデータテーブルなど一連のシステムを構築するとなると話は違ってきました。Excelでの表づくり癖というか概念が逆に邪魔をしてしまい、最初のころは『カラムにLEFT式を入力したが、計算式が文字列で入力されるだけで計算結果が出ないのは何故だ!?』と本気で悩むくらいにはExcelの固定概念に支配された脳みそをしておりました。(特に初めてAccessに最初に触れたときは、同じOfficeのアプリケーションだったため、Excelとの違いすらよく分かっていないほどのトンチンカンっぷりでした…)

    それの固定概念を打ち壊せた理由について、ハッキリとした自覚がありませんが、一つだけ上司に言われて意識していたことは『先ずは一連の動作を完成させる』というテーマでした。その言葉通り、先ず一つの動作を作ってからは、これまでの概念にとらわれることなく、自然と開発の速度が上がっていき、全体のシステムを完成させることができました。後々解ることですが、上司から言われたこの言葉はFacebook開設者マーク・ザッカーバーグ氏の『完璧を目指すよりまず終わらせろ』という言葉に触発されて教えられた教訓でした。

    本来この言葉は完璧主義にこだわらないことで、業務を効率化させたり、面倒なことを先送りにしないための教訓の言葉だと思うのですが、私にとってこの言葉は、データベースという概念を『完璧』に理解できていなくても『こういうものか』と流して作っていくことで、後から概念を定着させていくことができる魔法の言葉となりました。

    それ以降は、特に新しい技術や概念と直面することはなく、VB.NETとSQLserverを駆使して、4~5年ほどの間部門内エンジニアとしての使命を全うしていくこととなります。(この辺りは文章にしてもしょうがないなぁというような内容なので、割愛させていただきます。)

    ここまでが、部門内エンジニアとして活動していた期間の経緯でした。前回の記事で、『ここからいかにして専業エンジニアを目指すようになったか』という予告をしておりましたが、ちょっと長くなってしまったので、次の記事こそは本当に専業エンジニアとしての私の活躍を描いていきたいと思います。

  • 私がITエンジニアになった理由(その1:プログラムと出会う)

    私がITエンジニアになった理由(その1:プログラムと出会う)

     今回はBitDesignLaboの第1回目の更新ということで、私がエンジニアを目指した理由について書いていきたいと思います。

     申し遅れましたが、私はブログ更新担当のユウスケと申します。

    私は将来フリーランスのITエンジニアとして独立するべく、現在BitDesignLaboに所属してITエンジニアとしての実務経験を積んでいるところです。

    …なんだか堅苦しい導入になってしましたが、↓からエンジニアを目指した理由を書いていきます。

    1、プログラミングと出会う

     私がプログラミングと出会ったのは、社会人になって2〜3年目の事でした。
    地元の工業高校を卒業後、私は電化製品メーカーへ就職し、製品の修理現場で働いておりました。当時のは義務教育の授業にプログラミング学習は無く、工業高校でも情報科でなければプログラム言語に触れる機会もなく、まさか自分が今後エンジニアを目指そうなどとは全く考えておりませんでした。

     きっかけは、何年目かの人事異動で、業務内容がデスクでの間接業務に変わった時でした。
    部門内のデータや実績をまとめるために使われていた、Excelのマクロ機能(正式にはVBA)と出会ったのです。

    それまで私の中でExcelは表をやグラフを作成したり、計算機の上位互換くらいにしか考えておりませんでした。(Microsoftに怒られそうなので自主規制いたしましたw)

    その時触ったマクロ機能は、
    ①データベースからデータを抽出
    ②データからピボットテーブルを自動作成
    ③ピボットの内容が印刷用のシートに反映
    ④自動で印刷プレビューが表示される。

    という非常にシンプルなシステムでした。同期が「システム化してるんですねー」などありきたりな感想をつぶやく中、私は1人ショックを受けていました。

     当時私はパソコンの知識には若干自信があり、プログラミングこそできなかったものの、データをまとめる作業など朝飯前だと思っていました。
    それが、Excelの標準機能で自動化できると知り、マクロの記録を使えばコーディングの知識すら必要ないと知ったとき、私はなんと小さな世界にいたのかと思い知らされました。(かなり大げさに聞こえますが、相当ショックでしたw)

    2、部門内のエンジニア(?)になる

     そこからはVBAのコードに興味を持ち、そのマクロ機能を作成していた上司へと教えを乞いました。
    しかし、その上司はとても忙しく、私1人へ時間をさくほどの余裕がなく、「またあとでねー」などとあしらわれるのみで、教えてもらうどころではありませんでした。
    それでも、どうしても自動化を身に着けたい私は、作成されたマクロのコードを1行ずつ意味を調べてはステップイン(1行実行)→調べてはステップインを繰り返し、力づくでコードの意味を解読していきました。

     その甲斐あってか、ルールのある程度を知ってからは、既存のコードを切り貼りして、日々の業務に役立ちそうな機能を作って他のメンバーよりも、効率的に業務をこなしていきました。
    そうなってくると、他のメンバーも「その機能使ってみたい!!」となってくるので、Excelを配布して機能の使用感を聞いてみました。

    「こういう機能もあったら便利だな~」⇒ 作ってみる ⇒ 皆で使用感を確認してみる ⇒「こういう機能も…」

    そうしているうちに、自分でオリジナルのマクロ機能を作成できるようになりました。
    当然、評価に直結しませんでしたが、効率改善ができたことは先に登場した上司の耳に届くまで時間はかかりませんでした。

    上司「一緒にデータベースとかアプリの開発やってみない?」

     上司からかけられた言葉はホントに思い付きのような提案でした。上司は先述の通り毎日忙しそうにしておりました。上司の業務内容はメンバーのマネジメントは当然ですが、部門内で使用するExcelのマクロ機能、VB.NETによるアプリケーションの開発も一手に請け負っていた為、システムの保守や開発で毎日時間をとられていることを聞かされました。

     私は「おもしろそうだ!」と思い、すぐにその話に飛びつきました。上司はその時使用していたVisual Studio(Basic)とSQL Serverのセットアップ方法、基本的な操作方法を教得てくれました。が、

    上司「あとはコードのサンプル渡すから、自分で何か1つアプリ作ってみてよ!」

    と言って上司は通常の業務に戻ってしまいました。

    その時の私はこんな顔⇒( ゚д゚)になっていたと思います。ここまで来てもまだ直接は教えてくれないのかと。

     教えてもらえないんじゃ仕方がないので、私はVBAを覚えた時と同じく、あたえられたサンプルコードを解読し、学習しながら知識をつけていきました。解読に関してはGoogleでの検索がメインだったので、文字通りGoogle先生の恩恵あっての技術習得となりました。

     今にして考えれば、コーディングについて対面で教わることも重要ですが、「このコードはどんな風に書き換えたら可読性が高くなるだろうか」「こんな機能を追加したら操作性が上がるのではないか」と考える力を育むために一人で考えさせられていたのかなと思っています。(実際の腹の中は未だに不明ですが…)

     その後も上司とはアプリについて大枠の説明を行うのみで直接コーディングについて打ち合わせや説明をすることなく、部門内エンジニア(正式な役割ではありませんでしたが)2人体制で開発を続けていきました。

     ここまでが、私がプログラム言語に触れて、部門内でエンジニアのような役割を担うまでの経緯でした。
    ここからいかにして、専業エンジニアを目指すようになったかは、文字数の関係で次の記事でお話していこうかと思います。