ラベル プログラマ の投稿を表示しています。 すべての投稿を表示
ラベル プログラマ の投稿を表示しています。 すべての投稿を表示

2020年8月14日金曜日

PHP初心者が勉強する方法は?


こんにちは。

最近、「プログラミングを勉強しています」という声をよく耳にします。

特にWebエンジニアを目指している方が多いようです。

Webエンジニアになるには、以下の技術が必要になります。
  • HTML
  • javascript
  • PHP
HTML、javascriptは、クライアント側で主にデザイナーが担います。

PHPは、サーバー側でエンジニアの仕事となります。

そこで今回は、PHP初心者へむけて勉強方法を書いていきます。

ちなみに、私は、組み込みエンジニアとして7年ほど、その後は、Webエンジニアとして10年ほど働いて来ました。

PHP初心者が勉強する方法は?


PHPを勉強する方法は、以下になります。
  1. 基礎を勉強する
  2. ソースコードを読む
  3. 実際に作業を行う
PHPに限らず、プログラム言語を勉強する方法は、上の3つになります。

では、詳細を以下で説明します。

1.基礎を勉強する


何をやるにも基礎は大事です。

なので、PHPの勉強も基礎からやっていきます。

まずは、Hello World からですね。

いろんなプログラム言語を習得している方でも、はじめはここから始めます。

理由は、使用する環境が正常に動作するかの確認です。

その後は、プログラミングの基礎の勉強をします。
  • 分岐
  • ループ
  • 関数
  • クラス
この辺ですかね。

PHPの基礎については、Webで「PHP 入門」と検索すれば、たくさん出て来ますので、そこで勉強すればOKです。

なので、ここでは細かく取り上げません。

2.ソースコードを読む


PHPの基礎が理解できたら、一旦、他の方が書いたソースコードを読んでみましょう。

この、「ソースコードを読む」を飛ばして、実際に作業をする方が多いですが、そういう方が書いたソースコードは、読み辛く、無駄な処理が多いです。

ソースコードは、同じ処理や同じような処理を、関数やクラスでまとめて重複しないようにするのが1番です。

そう言った方法は、他の人が書いたソースコードを読むことで身に着きます。

まずは、ソースコードを読んでいて読みやすいと思うソースコードを真似することで、自分でも読みやすいソースコードが書けるようになるのです。

また、プログラミング言語には、それぞれにコーディング規約があります。

PHPだとSRP-2ですかね。

コーディング規約を読むことも必要なのですが、いろんなソースコードを読んでいると、次第に身に着いてきます。

今では、githubなどで多くのソースコードが公開されています。

ここで必要なことは、ロジックを理解する事ではなく、ソースコードの書き方や、クラスのまとめ方を見るようにしてください。

3.実際に作業を行う


ここまで来ると、勉強はおしまいです。

実際に作業をしましょう。

最初は、難しいと思います。

実際の作業は、勉強とはレベルが違います。

しかし、勉強ばかりしていても、実績が着きません。

なので、実際に作業をしながら勉強するようにしましょう。

PHPには、標準でいろんな関数が用意されています。

Webで検索すれば出て来ますので、困ったときは検索するようにしましょう。

それでもない時は、ロジックから考えて作ることになります。

技術は本では身につかない


PHPなどのプログラミングもそうですが、技術と言われるスキルは、本を読むだけでは身につきません。

本で知識を習得したら、手を動かし実際にやってみる必要があるのです。

プログラミングを習得するなら、本を読みながら手を動かし、実際にソースコードを書いてみて動かしてみるのです。

最初は、動かないことが多いかもしれません。

でも、それを乗り越える事でスキルは身についていくのです。

そして、基礎勉強が終わったら、実際に作業をする必要があります。

上にも書きましたが、実際に作業としてプログラミングを行うと、壁に何度もぶつかります。

それを、一つずつ乗り越える事で、実績が積み上げられるのです。

まとめ


今回は、PHP初心者が勉強する方法について書きました。
  1. 基礎を勉強する
  2. ソースコードを読む
  3. 実作業を行う
この方法は、他のプログラミング言語を勉強する時も同じです。

コツコツと勉強することができれば、数ヶ月で実際に作業ができるまでに成長できます。

でも、モチベーションが保てなくて挫折する人も多いです。

そんな時は、お金を払ってプログラミング講座を受講するのも良いと思います。

お金を払って勉強しても、実際にプログラマーになれば、すぐに元が取れますし、勉強するモチベーションも保てると思いますよ。

では、今日はこの辺で。

2020年6月20日土曜日

今後IT業界は成長するのか



こんにちは。

今日は、「今後IT業界は成長するのか」について考えてみたいと思います。

最近、SNSやビジネス系YouTubeを見ていると、「今後IT業界は成長する」という声をよく耳にします。

私は、10年以上IT業界でプログラマーとして仕事をして来ました。

なので、IT業界の内側から見て、「今後IT業界は成長するのか」について考えてみたいと思います。

まずは、「成長する」とはどう言うことかを定義しておきます。

 成長とは

1 人や動植物が育って大きくなること。おとなになること。「子供が成長する」「ひなが成長する」「経験が人を成長させる」

物事の規模が大きくなること。拡大。「事業が成長する」「経済の高度成長」

goo辞書


つまり、「IT業界が成長する」とは、「IT業界の規模が大きくなる」ということです。

この定義で考えた場合、私の考えは以下のようになります。
  1. 世界的に見るとIT業界は成長する
  2. 日本のIT業界は成長しない
  3. 日本のIT業界は成長しないが十分に仕事がある
以下でひとつずつ考えていきます。

1.世界的に見るとIT業界は成長する



GAFAMの動きを見ると明らかだと思います。
  • Google
  • Apple
  • Facebook
  • Amazon
  • Microsoft
これら一流のIT企業は、今以下の開発に取り組んでいます。
  • AI
  • IoT
  • ブロックチェーン 
  • 自動運転自動車
  • VR/AR
これらの最先端技術は、アメリカや中国がいち早く取り組んでいます。

特に中国の技術力は、日進月歩で急成長をしています。

そのため、今後、このようなシステムが安定して開発されることで、IT業界は一段と成長することが考えられます。

また、このような分野は、スタートアップ企業が狙っています。

海外のスタートアップは、フットワークが軽いし、技術力も高いので、そういう点でもIT業界はさらに成長していくでしょう。

つまり、世界的に見るとIT業界は成長していくと言えます。

2.日本のIT業界は成長しない



では、日本のIT業界も成長するのかというと、残念ながら成長はしないと考えています。

上にも書きましが、日本は以下の分野において完全に出遅れてしまっています。
  • AI
  • IoT
  • ブロックチェーン 
  • 自動運転自動車
  • VR/AR
日本のIT企業も、必死に上記の分野について学ぼうとしています。

しかし、日本のIT企業で行われているのは、すでに海外で開発されたフレームワークを使用して、現状のシステムへ組み込むことです。

全ての日本のIT企業が、そうだとは言いません。

必死に追いつこうと頑張っている企業もたくさんあります。

しかし、投資される資金が、海外と比べると少なすぎるのです。

なので、日本では、通常のシステム開発を行いながら、最新技術の開発を行わなければならなくなるのです。

海外では、上記のような分野へ多くの投資が集まります。

なので、日本のIT企業には成長するチャンスが極端に少ないのです。

3.日本のIT業界は成長しないが十分に仕事がある



とは言え、日本のIT業界の仕事はなくなりません。

何故なら、日本には多くの中小企業が、今だにアナログな方法で仕事をしているからです。

アナログな仕事が悪いとは言いません。

しかし、人がやるよりもシステムに作業をさせた方が良い作業がたくさんあります。

今、日本のIT業界では、そういった中小企業をターゲットとしています。

もちろん、大きな企業は、銀行や大手企業の基幹システムを扱っていますが、中小のシステム会社は、中小企業のシステム化を扱っています。

つまり、中小企業のシステム化を行うプログラマーは、まだまだ必要なのです。

また、そうやって開発されたシステムは、保守も必要になってきます。

そうした、保守要員としてのプログラマーも必要になるのです。

そして、古くなった基幹システムの再構築という仕事もあります。

そう考えると、今後、日本のIT業界は成長はしないものの、仕事がなくなることはないのです。

まとめ


世界的に見ると、「今後IT業界は成長する」と言えるでしょう。

世界的な大手企業は、どんどん新しい技術に挑戦しています。

それが実用化されるようになると、いっきに社会のIT化が進み、それによりIT業界もさらに成長していくでしょう。

しかし、残念ながら日本ではIT業界の成長は期待できないでしょう。

すでに日本のIT業界は、世界のIT業界から大きく遅れをとっています。

資金面でも日本のIT業界へ投資される額は、他国から比べると、かなり少ないのです。

そのため、世界的な大手企業と競えるだけの体力がないのです。

ただし、日本のIT業界の仕事はなくなることはありません。

中小企業のシステム化が進んでいるため、その開発、保守をするプログラマーは、まだまだ必要とされているのです。

なので、はじめに書いた、SNSやYouTubeで「今後IT業界は成長する」というのは、間違いではありません。

ただし、本当のIT業界の成長は、日本以外の国で行われています。

これから、IT業界で頑張ろうとしている人は、最新技術の開発に携わりたかったら、海外で仕事をすることをお勧めします。

これからIT業界への就職を考えている方は、こちらの記事も参考になるかもしれません。


では、今日はこの辺で。


2020年6月14日日曜日

もし私がITエンジニアとして転職するなら



こんにちは。

今日は、もし私がITエンジニアとして転職するならどう動くかについて書いていきます。

私は、現在プログラマとして仕事をしています。

IT業界の経験は、約20年になります。

そんな私が、もし別の業界にいて、プログラミングも知らない素人で、これからITエンジニアとして転職を決めたとします。

その時、私はどういう工程を経てITエンジニアへの転職を目指すかを考えてみたいと思います。

結論を言うと以下の順番になります。

  1. 基本技術を習得する
  2. 転職先を探す
  3. 転職先で経験を積む

この順番で経験を積むことで、3年でスキルチェンジを目指します。

転職するためなら2までとなるのですが、「ITエンジニアとして一人前になる」と言うことがスキルチェンジだと私は思うので、そこまで説明していきますね。

1.基本技術を習得する



どんな転職でも同じだと思いますが、まずは、その業界の基本技術がないと話になりませんよね。

なので、私ならば以下の勉強に100時間以上はかけると思います。
  • html
  • CSS
  • javascript
  • PHP
  • SQL
フロントエンド(ブラウザ側)のみのエンジアになるには、上から3つ、html、CSS、javascriptを勉強すれば良いのですが、ITエンジニアとなるとバックエンド(サーバー側)の開発もある程度できるようになっておいた方が良いです。

また、上の5つは基本が分かるくらいまでで大丈夫です。

ただし、この5つの基本を習得するには、最初は100時間ほど手を動かして勉強が必要になると考えています。

「100時間も勉強が必要なの」と思うかもしれませんが、やってみると分かると思いますが、最初はキーボードもうまく打てないでしょうから、これくらいの時間は必要になります。

では、仕事をしながら、どうやって100時間もの時間を作るかと言うと、毎日1、2時間、休日は、6時間以上の時間を3ヶ月ほどかければ達成できます。

勉強方法はWebを使います。

プログラミングスクールへ通うのも良いのですが、今はWebで検索すれば基本技術の習得はできるのでそれで十分です。

私ならば、まずは、html、CSS、javascriptを使って、自己紹介のホームページを作ります。

もちろん、インターネット上に公開する必要はありません。

自分のPC内にテキストを作成すれば、インターネットに公開しないホームページは作成できます。

デザインは、いろんなホームページを見ながら、これと思うものを真似すれば良いのです。

もちろん、ソースコードまで真似してはいけませんよ。

検索サイトで、「html CSS」と検索すればソースコードの書き方が出てくるので、1から手を動かしながら勉強しましょう。

5ページほど作れば十分に基本技術は習得できます。

また、ランディングページ(最初に表示されるページ)にjavascriptで動きを着けてみましょう。

作成したページは、ポートフォリオとして使えるので、必ず残しておきましょう。

それ以外に、PHPとSQLは別に勉強しておきましょうね。

PHPとSQLもWebで検索すれば、すぐに勉強できます。

この時点で、コーディングをするのが苦痛に感じるのでしたら、ITエンジニアとしての転職は難しいと思います。

転職したら毎日コーディングする必要があります。

最初は、分からないことがたくさん出て来ます。

調べながらコーディングする事になるので、それを楽しめないと精神的にもちません

IT業界は、エンジニアだけではないので、自分にあった職種を探してみましょう。

2.転職先を探す



100時間ほど勉強したら、転職先を探し始めましょう。

一つ注意ですが、今勤めている方は、あわてて退職願を出さないでくださいね。

実経験のない人が、IT企業に転職するのは、かなり難しいです。

今は、エンジニア不足ですが、それは、実経験を積んだエンジニアが不足しているのです。

受け入れるIT企業側から考えると、中途採用しているのは即戦力となるエンジニアを探しているのです。

なので、実経験がない人を雇えるだけの余裕がある企業でないと、実経験がないと言うだけで不採用となることはよくあります。

では、どうやって転職先を探すかと言うと、私ならば以下の2つの方法を使います。

  • 転職サイトに登録して探す
  • Webサイトを見て探す

仕事をしながら転職先を探すには、上の2つの方法が良いと思います。

転職サイトに登録して探す


まずは、転職サイトに登録しましょう。

登録するのは、メジャーな転職サイトを探して2件ほどで良いと思います。

中途でエンジニアを探している企業は、複数の転職サイトに掲載していることがよくあります。

複数の転職サイトに登録しても、検索して出てくる企業が同じと言うのはよくあります。

転職エージェントを使うのも良いでしょう。

ただし、転職エージェントを使う場合は、少し注意が必要です。

転職エージェントのビジネスモデルは、転職が成功することで転職先企業から、あなたの年収に応じて数パーセントを紹介料として受け取るモデルとなっています。

なので、実経験がない場合、「難しいから、まずはIT業界の営業とかも探してみませんか」などと言ってきます。

そこを理解した上で、転職エージェントは使うようにしましょう。

では、転職サイトでどのようにして転職先を探すかを書いていきます。

まずは、「ITエンジニア 未経験」もしくは「Webエンジニア 未経験」で調べてみましょう。

実経験がない人を雇えるような企業は、キーワードに「未経験OK」みたいなことを書いている企業が多いです。

なので、このキーワードでヒットする企業を優先に応募していきましょう。

その際の注意点としては、募集要項をきちんと確認することです。

どういったエンジニアを募集しているのか、どういった条件で募集しているのか確認しましょう。

また、募集している企業のホームページも確認しましょう。

IT業界の中には、営業を業務の中心としている企業と、技術を業務の中心としている企業があります。

営業を中心としている企業は、Webサイトの構築を受注することに力を入れている企業です。

営業が大きな力を持っているので、技術者は無理な要望を安い価格で行わないといけない状態になっている可能性が多いです。

なので、こういう企業の技術者は、自分の会社はブラック企業だと思っていることが多いですし、実際、ブラック企業だったりします。

では、どうやって判断するかというと、営業と技術者の比率を調べるのです。

技術者に比べて営業が多い場合は注意が必要です。

Webサイトで探す


これは、少し時間がかかります。

しかし、転職サイトを使用せずに、自社ホームページで中途採用をしている企業も結構あります。

もし、通勤できる範囲で探す場合は、検索サイトで「IT企業 地域」や「Web開発 地域」で検索してみてはどうでしょうか。

ホームページから、その企業がどんな企業かを読み取って、もし良い企業ならば、そのホームページに採用ページがないか探しましょう。

採用ページで中途の募集があれば、履歴書や職務経歴書を送るというのもありだと思います。

ただし、その際はホームページの採用ページを見て応募する旨を一筆添えましょう。

どんな企業でも書類だけ送るのはNGです。

中途の募集をしていない企業でも、良いと思ったら電話で中途の採用をしていないか問い合わせるのも良いと思います。

もしかすると、転職サイトではなくハローワークのみに出している場合もあるので、電話で確認するのが良いと思います。

中途の採用していなくても、問合せしたことで、一度会ってみようと思ってもらえる可能性もあります。

転職先を探す時は、なるべく多くの企業に応募して自分にあった企業を探すようにしましょう。

面接まで漕ぎ着けたら、基本技術を勉強する際に作成したポートフォリオを持参しましょう。

画面キャプチャを印刷して画像集を持って行っても良いのですが、できればPCやタブレットなどに入れて持って行き、実際に見てもらうのが良いと思います。

面接では、入社時期についても聞かれると思いますが、聞かられなかったとしても、こちらから入社できる時期について具体的に伝えましょう。

転職先が決まったら、今働いている会社に退職願を出しましょう。

退職する際は、今働いている会社も、将来、顧客となる可能性があるということは意識しておきましょう。

3.転職先で経験を積む



転職先に入社できたら終わりではありません。

実経験のない人を採用した企業からすると、短期間で実戦で活躍できると判断したから採用したのです。

なので、それに応える必要があります。

転職に成功したら、そこがスタートラインなのです。

最初は、業務に着いて行くだけで一杯だと思います。

それでも、業務に必要な技術をどんどん吸収していく必要があります。

そのため、業務時間だけでなく自宅でも勉強をする必要があります。

ITエンジニアとして一人前になるために、以下のことを意識しておきましょう。

  • 何でもやる
  • 最低3年は経験を積む
  • 技術以外の知識も勉強する

何でもやる


まずは、何でもやるという意識が必要です。

ITエンジニアにも本当はいろいろな作業があります。

実経験がないと、自分がどんなエンジニアに向いているのか分かりません。

なので、与えられる仕事な何でもやってみましょう。

正直、難しいと思います。

でも、IT業界に転職したのですから、周りには技術に詳しい人ばかりです。

自分で調べて分からないことは、どんどん周りの先輩に聞いて吸収していきましょう。

その際、先輩は、どうやって調べているのか、どんな風にPCやツールを使っているのか観察することも大切です。

見て学ぶというやつですね。

最低3年は経験を積む


技術者として一人前になるには、一般的に3年はかかります。

最初は、作業に時間がかかるかもしれませんが、次第に時間もかからずに作業できるようになります。

3年も経験を積めば、十分に利益を出せるまでになるでしょう。

そこまでやって初めて、ITエンジニアとなれるのです。

技術以外の知識も勉強する


前職での知識もあるので、3年間技術者として経験を積めば、周りの技術者よりも知識的には有利に立つことができます。

しかし、IT業界は、日進月歩で進化しています

なので、技術も勉強する必要がありますが、それ以外のIT業界について勉強する必要があります。

また、ビジネスも進化していきますので、ビジネスについても勉強をする必要があります。

前職での知識、IT業界の最新の知識、3年以上の技術経験があれば、これはかなり有利な立場へ立つチャンスになります。

ここまで来ると、いろいろな選択肢が出て来ます。

会社の利益につながる提案もできるようになるでしょう。

もっと給料のいい会社を探すこともできるでしょう。

フリーランスとして独立することもできるでしょう。

全く別業界へ転職することもできるでしょう。

まとめ


これまでITエンジニアとして転職する工程を、私ならどう動いていくかを書いて来ました。
  1. 基本技術を習得する
  2. 転職先を探す
  3. 転職先で経験を積む
この3つは、ITエンジニアへ転職する場合だけでなく、別の業界へ転職する際には必要な工程だと思います。

また、同じITエンジニアでも、組み込みエンジニアからWebエンジニアに、スキルチェンジする際にも有効です。

実際、私も、組み込みエンジニアからWebエンジニアへスキルチェンジする時に、この工程を踏みました。

同じIT業界ですが、組み込みエンジニアとWebエンジニアでは、使う技術が違います。

私の感覚としては、全く違う業界へ転職する感覚でした。

ただ、私の場合は、「2.転職先を探す」時に知り合いの会社へ応募したので、苦労することなく転職できたことです。

このブログが、IT業界へ転職しようとしている方の手助けとなれば嬉しいです。

では、今日はこの辺で。

2020年6月4日木曜日

変数の命名方法



こんにちは。

今日は、変数の命名方法について書いてみます。

プログラマの中には、命名規則に沿っていないソースコードを書く人がいます。

特に、経験の浅い人は、自分の好きなように、関数名や変数名を書く人が多いようです。

しかし、システム開発は、1度作ったら終わりとなる開発はありません。

有名なシステムの場合は、半年ごとに機能が見直されるため、自分が作った機能を、他の誰かが改造することは良くあります。

なので、命名規則には十分に注意が必要なのです。

では、最低限守った方がいい命名規則が以下になります。
  • 英単語を使用する
  • 1文字の変数は使用しない
  • プロジェクトで統一する
では、それぞれ説明しますね。

英単語を使用する


変数は、見ただけで何の値が格納されているのかが分かるように命名します。

プログラマの中には、日本語をローマ字で書く人もいます。

確かに、日本語をローマ字にした変数名だと、日本人には分かりやすいかもしれません。

しかし、今はグローバル社会ですよね。

今外国人と仕事していなくとも、後々、そのソースコードを外国人が修正するかもしれない。

その時、日本語をローマ字に変換しただけの変数名だと、外国の方には、記号にしか見えないのです。

なので、ソースコードを誰でも修正できるように、変数名は、英単語の変数名にしましょう。

1文字の変数は使用しない


日本語をローマ字に変換しただけの変数が、外国人には記号にしか見えないのと同じように、1文字の変数は誰が見ても記号です。

特に、入れるのインデックス値を1文字の変数にする人が多いです。

1文字の変数は、見てすぐに何の変数か分かりませんよね。

インデックスならば、indexと書いてあった方が意味が分かりやすいですよね。

これて、修正に修正が入って、ソースコードが長くなったりすると、1文字変数は意味が分からないくなることが良くあります。

なので、ソースコードが長くなると、不具合の原因になることが良くあるのです。

私も、長く修正が行われているソースコードで、1文字変数の意味が途中で変わって不具合になっているのを見たことがあります。

なので、1文字の変数は使わないようにしましょう。

1文字の変数が良く使われるのは、ちょっとしたサンプルのソースコードで良く使われるからです。

サンプルのソースコードって、短いし、後に修正が行われることを考える必要がないので、1文字の変数でもいいのです。

しかし、仕事でソースコードを書く場合は、後に修正が行われることを意識して書く必要があるのです。

プロジェクトで統一する


変数名の付け方は、プロジェクトで統一しましょう。

開発する時は、統一されているかもしれませんが、修正されるたびに変数名がぐちゃぐちゃになることが良くあるのです。

一番ひどいのが、英単語の変数名と日本語をローマ字に変換した変数名が混在している場合です。

プログラマの中には、自己流の命名規則に則って修正を行う人が結構いるのです。

修正する時に、命名規則がない場合は、修正する前にソースコードを読みましょう。

必要なソースコードだけでなく、他のソースコードも読むと変数名をどうすれば良いかは分かるはずです。

今は、オブジェクト思考でコーディングされていることが多いですよね。

なので、必要なクラスのソースコードや、継承元のソースコードを読めば良いのです。

まとめ


では、もう一度繰り返しますね。

変数名をつける時は、以下のことに気おつけるようにしましょう。
  • 英単語を使用する
  • 1文字の変数は使用しない
  • プロジェクトで統一する
少なくとも上記のことに気おつけることで、ソースコードが読みやすくなります。

できれば、会社で命名規則を統一しておくと、他のプロジェクトでも取り組みやすくなるので良いと思います。

では、今日はこの辺で。

2020年5月24日日曜日

プログラマの種類



こんにちは。

先日、ブログでシステムエンジニアとプログラマの違いについて書きました。


今日は、プログラマの種類について書いてみようと思います。

私が就活をしていた頃は、特に気にしていなかったのですが、プログラマは大きく「組み込み系」と「Web系」に分けられます。

今、就活している方も、あまり気にしていない方が多いように思います。

しかし、組み込み系とWeb系では、必要な知識や仕事内容が異なってきます。

なので、就活する際は、自分が身に付けたいスキルを考えて、受ける会社を検討した方が良いと思います。

では、それぞれの違いについて説明したいと思います。

組み込み系



組み込み系のプログラマーは、今では少なくなってきているような気がします。

私も10年ほど前までは、組み込み系の仕事をしていました。

組み込み系の仕事は、相手いがセンサーなどのハードになります。

つまり、センサーから送られてくるデータを加工し、必要なデータをアプリ側へ渡すプログラムを作成するのです。

私が昔携わった組み込み系の仕事は、ロボットの制御だったり、ガラ携のドライバやミドルウェアの作成を行っていました。

ただ、ガラ携からスマホに時代の流れが変わったことで、組み込み系の仕事がほとんどなくなってしまったので、私はWeb系のプログラマへスキルチェンジしました。

今でも、IoT機器の開発や、自動運転システムの開発などで、組み込み系の仕事はそこそこあるようです。

組み込み系の職場は、自分のデスクが実験室みたいになります。

大きな電源と基盤が各プログラマに渡されて、基盤にプログラムを書き込んで動作確認していきます。

つまり、プログラムを動作させる環境が必要になるので、大抵がお客様の指定した事務所で作業することになります。

シミュレータを使ってプログラミングすることもあるのですが、最終的には、ハードを使った試験が必要になります。

なので、今回のような外出自粛となってしまうと、結構な影響を受けてしまうのではないでしょうか。

ただし、良い点もあります。

IoT機器の開発や自動運転システムの開発などは、最先端の技術を使用します。

また、そのシステムが世の中に投入されると、一般の人からの喜びの声をすぐそばで聞くことができるのです。

私の場合だと、ガラ携のシステムを開発していた時は、携帯ショップで自分たちが開発した携帯を手にとっと喜んでいる人をみると、やってて良かったなと思ったりしていました。

Web系



Web系のプログラマと聞くと、すぐに頭に浮かぶのは、ホームページではないでしょうか。

でも、Web系のプログラマがホームページを作成することは、ほとんどありません。

ホームページの作成は、今ではデザイナーが行います。

では、Web系のプログラマの仕事はというと、Webシステムの開発がメインになります。

簡単に言ってしまうと、ブラウザーからの要求に対して、データベースからデータを取得し、要求されたデータを返すシステムの開発になります。

つまり、アプリケーションの開発などもWeb系のプログラマの仕事となります。

ただし、ブログサイトの構築やECサイトの構築は、ほとんとデザイナが行います。

なぜかと言うと、ブログだとほとんどが、Wordpressで十分なサイトが構築できてしまうからです。

Wordpressだと、詳細な処理はPHPと言うプログラム言語で作られているのですが、必要な処理はWordpressの中に作り込まれているので、あとは画面デザインをどうするかになるのです。

ECサイトもEC-Cubeと言うフレームワークがあります。

EC-Cubeは、商品の管理から売り上げの管理まで可能なのです。

なので、あとはサイトのデザインをどうするかなので、デザイナの仕事になります。

では、Web系のプログラマはと言うと、会社の基幹システムの開発が多いです。

例えは、これまで紙で作業していたのを、パソコンを使った作業に切り替えるとなると、Webプログラマが作業することになります。

この場合だと、要件を営業が聞いてきた後、プログラマが機能を設計し、デザイナが画面デザインを設計し、プログラマが適切な値を画面に表示するためのプログラミングを行います。

今では、いろんなソースコードがオープンソース化されているので、そのようなオープンソースを組み合わせてシステムを構築することもあります。

また、Web系のプログラマは、基本仕事をする場所が固定されません。

バーチャルサーバーをローカルPCに構築してしまえば、あとはPCひとつで仕事ができます。

なので、今回のような外出自粛の要請が出ても、すぐにリモートワークに切り替えることも出来たと思います。

もしかすると、その前からリモートワークしている会社もあったと思います。

Web系のプログラマが大変なのは、仕事をする相手が人だと言うところでしょうか。

なので、コミュニケーションが苦手な人にとっては、難しいと感じることがあるかもしれませんね。

まとめ


今回は、プログラマの種類についてまとめてみました。

プログラマには、大きく組み込み系Web系があり、それぞれ仕事内容が異なっています。

プログラマとして就活をしている方は、自分が将来どのようなプログラマになりたいのか決めてから、受ける企業を決めることをお勧めします。

中小企業のシステム会社では、組み込み系、Web系、関係なく募集している場合があります。

そんな時は、どのような仕事が多いかを確認するようにしましょう。

プログラマは、成長し続けないと長くやっていけない仕事です。

なので、自分の将来にマッチしない会社は避けるようにしましょう。

では、今日はこの辺で。

2020年5月18日月曜日

システムエンジニアとプログラマの違い



こんにちは。

今日は、システムエンジニアとプログラマの違いについて書いていこうとと思います。

私が就職活動や転職活動を行っている時に、システムエンジニアとプログラマの職種が別々に募集がありました。

当時の私は、将来的にシステムエンジニアの方が収入もいいかなと思って、システムエンジニアの募集ばかりを受けていたのです。

しかし、経験を重ねていく上て、システムエンジニアとプログラマの違いって、作業内容がほとんど変わらないことが分かってきました。

結論を言ってしまうと、システムエンジニアとプログラマの違いが大きくなるのは、大きな企業だけなのです。

中小企業のシステム会社では、システムエンジニアとプログラマは、同じ作業になります。

そう言うことが分かると、大企業以外であれば、システムエンジニアとプログラマの両方を視野に入れて就職活動を行うと、選択肢が大きく広がるのではないでしょうか。

今年は、新型コロナウィルスのために、就職活動が遅れていると思います。

なので、システムエンジニアとプログラマの両方を視野に就職活動を行うと、選択できる企業が断然増えると思います。

今日は、以下のことについて詳しく説明していきます。
  • 一般的なシステムエンジニアとプログラマの仕事に違い
  • 大企業のシステムエンジニアとプログラマの違い
  • 中小企業のシステムエンジニアとプログラマの違い

上記の説明をする前に、私の経歴について説明しますね。

プロフィールにも書いているように、私は、組み込み開発からWebシステム開発までを網羅的に作業してきました。

26歳でIT企業に就職し、組み込み開発は10年程度、Webシステム開発も7年程度の経験があります。

組み込み開発を行っていた時は、派遣として大手企業で開発しており、小さな開発から大きな開発まで携わり、機能リーダーを経て、プロジェクトマネージメントの助手もしていました。

Webシステム開発にスキルチェンジしてからは、中小企業で要件定義から納品までの一連の作用を行ってきました。

なので、大企業と中小企業の差についても、よく理解していると思っています。

では、説明に入りたいと思います。

一般的なシステムエンジニアとプログラマの仕事に違い


では、まずは、一般的なシステムエンジニアとプログラマの仕事の違いについて説明します。

システムエンジニアの仕事は以下になります。
  1. 要件定義
  2. 基本設計
次にプログラマの仕事は以下になります。
  1. 詳細設計
  2. コーディング
  3. 試験仕様書作成
  4. 試験の実施
つまり、システムエンジニアが上流工程を行い、プログラマが下流工程を行うことになります。

そして、プロジェクト全体を管理する、プロジェクトマネージャーがいます。

新卒でシステム企業に就職すると、以下のように経験を積んでいくことになると思います。
  1. 試験の実施
  2. 試験仕様書作成
  3. コーディング
  4. 詳細設計
  5. 基本設計
  6. 要件定義の作成
大体、3年程度で詳細設計までの経験を積むことができると思います。

私も、上記の順で経験を積んできましたが、派遣で企業に常駐していたので、詳細設計までは3年ほどで経験できましたが、基本設計や要件定義をできるまでには6年目くらいからでした。

大企業のシステムエンジニアとプログラマの違い


大企業では、システムエンジニアとプログラマでは、作業に大きな違いがあります。

作業に大きな違いがあるので、収入も違ってきます。

システムエンジニアの作業は、まさに上流工程のみになります。

つまり、要件定義と基本設計の作業のみを行うことになります。

そのため、要件定義を作成して、基本設計が終わると、次のプロジェクトへ移動することになります。

時には、複数のプロジェクトを掛け持つこともあります。

私が派遣で大企業に入っていた時に、システムエンジニアの手伝いをしたことがありました。

その時は、要件定義を会議資料をもとに作成し、作成した要件定義をもとに基本設計を作成しました。

その間に、システムエンジニアは、別のプロジェクトの要件定義を作成していました。

つまり、そのシステムエンジニアは、私が手伝うことで2つのプロジェクトを掛け持っていたのです。

また、そのシステムエンジニアの収入はかなり高かったようです。

私は、派遣で入っていたので、作業によって収入が変わることはありませんでしたが、話によると、その会社のプログラマーの1.5倍ほどの収入があったようです。

大企業のプログラマは、多くが派遣やSESでパートナー企業から集められたプログラマでした。

そこに、その企業の経験の浅いプログラマが参加することで、プログラマとしての経験を積むような構成となっていました。

大企業のプログラマは、プログラマとしての経験を積んだのち、システムエンジニアに移行していきます。

中小企業のシステムエンジニアとプログラマの違い


中小企業でのシステムエンジニアとプログラマの仕事には違いがありません。

中小企業では、上流工程から下流工程まで全てを行わなければなりません。

小さい企業では、上流工程から下流工程まで一人で作業することもあります。

これは、プログラマとしては、経験が積める機会多いとも言えます。

しかし、これまで大きな企業でシステムエンジニアとして、上流工程のみを経験してきた人にとっては、このような環境は難しいかもしれません。

収入についても、残念ながら上流工程と下流工程で変わることもありません。

では、どのようにして収入を上げるかというと、1度にひとりでどれだけのプロジェクトを請け負えるかで上げることができます。

なので、経験を積みたいプログラマには、中小企業は打ってつけなのです。

しかし、新卒で中小企業に入社すると、最初からプログラマとしての仕事ができるとは限りません。

中小企業においては、新卒で入社しても、短期で業務へ着けることを求められます。

これは、新卒で社会に出た人にとっては、結構、苦しいことかもしれません。

また、最近は、転職でプログラミングを勉強し、中小企業の募集へ応募してくる人もいます。

その場合はもっと苛酷かもしれません。

中途で募集している中小企業は、即戦力のシステムエンジニアやプログラマを求めています。

つまり、上流工程から下流工程をすでに作業できることを求められるのです。

では、転職してプログラミングを勉強して、中小企業のシステム会社に入れないのかというと、そうでもありません。

プログラマとしての経験がなくとも、前職での経験が中途の人にはあると思います。

そのため、前職での経験を交えて自分の価値を主張することで、中小企業のシステム企業に入ることは可能だと思います。

まとめ


システムエンジニアとプログラマでは、一般的に作業は分けられています。

しかし、実際にシステムエンジニアとプログラマの作業が分けられているのは、大きな企業の場合だけです。

中小企業のシステムエンジニアとプログラマには、ほぼ区別がありません。

なので、就活する際には、大企業を目指すのでなければ、システムエンジニアとプログラマを切り分ける必要がないのです。

ちなみに、私は、プログラマを肩書きとしています。

これは、IT業界では、システムエンジニアとプログラマの違いを理解できるのですが、一般的には、システムエンジニアという肩書きが曖昧に捉えられるからです。

プログラマだと、一目で仕事内容が分かりますよね。

では、今日はこの辺で。


2020年4月5日日曜日

コーディング規約の重要性

こんにちは。

今日は、コーディング規約の重要性について書いてみようと思います。

結論から言うと以下になります。
  • コーディング規約を無視したソースコードは読み辛い
  • フレームワークを使う場合はフレームワークのコーディング規約を使う
  • 独自コーディング規約よりも公式のコーディング規約を使おう
個人でWebサービスやソフトウェアを作っている時は、コーディング規約なんて気にしないと思います。

でも、チームで開発する時は、コーディング規約はとても重要です。

この辺を、私の経験を踏まえながら書いていきますね。

コーディング規約を無視したソースコードは読み辛い

チームで開発をしていると、コードレビューをします。

私も何度もチームメンバーのコードレビューをしてきました。

でも、コーディング規約を無視して書かれたソースコードは本当に読み辛いです。

コーディング規約を無視してコーディングする方は、大体がソースコードは動けばいい、くらいにしか考えていない方が多いです。

でも、考えてください。

システムは、一度作ってしまえは終わりと言う時代は昔の話です。

今は、システムは、育てていく時代です。

つまり、自分が書いたソースコードは、いつかは修正されるのです。

読み辛いソースコードを書いていると、修正をする方がとても苦労します。

苦労するだけじゃなくて、修正に時間がかかってしまい、修正する方へ大きなストレスを与えるのです。

私も、プログラマとして働き出したばかりの頃は、コーディング規約を重視していませんでした。

でも、時間がたった後で、自分のソースコードを修正する時、自分ソースコードなのに読み辛く、修正に多くの時間が必要でした。

自分の作ったソースコードに対して、「誰だこんなソースコードを書いたのは」と突っ込んでいたくらいです。

なので、チームを持つようになってからは、コーディング規約に沿ってないソースコードは、時間がなくても書き直してもらうようにしています。

若いプログラマの中には、不平・不満を言う方もいます。

そういうプログラマには、コーディング規約の重要性と、今のシステムを育てて、今後もっといいシステムにしたい意思を伝えるようにしています。

フレームワークを使う場合はフレームワークのコーディング規約を使う

仕事としてシステム開発をしていると、フレームワークをよく使います。

最近では、いちからスクラッチで開発することはほぼありません。

フルスクラッチで開発する時も、laravelやreactなどのフレームワークを使用します。

その場合は、laravelやreactのコーディング規約に沿ってコーディングを行うことで、読みやすいソースコードになります。

例えば、Wordpressのプラグイン開発をする場合を考えてみましょう。

Wordpressのプラグインを開発する場合、Wordpressで公開されている関数をよく使います。

そんな時、Wordpressのコーディング規約を知っていると、公開されている関数や変数を探しやすくなります。

また、他のプラグインと連携するのも容易になります。

これが、全く違うコーディング規約を使ったらどうなるでしょうか。

まず、Wordpressで公開されている関数を見つけるのに時間がかかってしまいます。

もしかすると、同じような処理をする関数を1から作ることになるかもしれません。

でも、自作した関数は、セキュリティ的に大丈夫か、想定外のデータを取得した場合の処理は適切かなど、検討しなければいけないことが増えてしまいます。

他のプラグインとの連携でも同じことが考えられます。

Wordpressのコーディング規約に沿って開発するだけで、少しでも手間が省けるのです。

以下にワードプレースのコーディング規約へのリンクを貼っておきますね。

Wordpressコーディング規約 (外部リンク)

独自コーディング規約よりも公式のコーディング規約を使おう

大手のシステム企業では、独自のコーディング規約を設けている所もあります。

でも、これからコーディング規約を作るのであれば、公式のコーディング規約を使いましょう。

何故かというと、コーディング規約を作ることが、あなたの企業の業務ではないからです。

そこに、時間をかけるくらいなら、システム開発をすることに注力した方が充分に利益につながります。

何度も同じコーディング規約を使用していると、少しずつ足りないなと思う点が見えてきます。

足りない点を既存のコーディング規約に追加していけばいいだけなのです。

私が勤めている会社でも、数年前に独自のコーディング規約を作ろうとした時期がありました。

いろんなコーディング規約のいいとこ取りをしようと考えていたのですが、結局、公式のコーディング規約を使用することになりました。

理由は簡単で、いろんなコーディング規約を読んでまとめる充分な時間が取れないというのが理由でした。

また、公式のコーディング規約には、基本的なことは定義されています。

基本的な規約に沿ってソースコードをコーディングするだけでも、読みやすいソースコードになりますし、システム全体の統一性も保たれます。

以下に、私が勤める会社で使用しているコーディング規約のリンクを貼っておきますね。

PHP Standards Recommendations(外部リンク)

まとめ

コーディング規約は、チームで開発する時には、とても重要です。

でも、ベテランのプログラマでも、コーディング規約を軽視している方が結構いるように思います。

ただ、自分が書いたソースコードを、後々、誰かが読んで、もっといいソースコードに書き換えてくれると考えると、コーディング規約に沿ってコーディングする大切さが分かるのではないでしょうか。

では、今日はこの辺で。

おまけ

システム開発ついて書いた過去のブログを以下に紹介します。




2020年4月3日金曜日

企業で働くエンジニアが注意しないといけない言葉


こんにちは。

今日は、企業で働くエンジニアが注意しないといけない言葉について書いていこうと思います。

結論から言うと以下になります。
  • できません
  • 簡単です
  • すぐできます
この3点については注意しましょう。

お客様とミーティングしていると、つい言ってしまいそうになる言葉です。

しかし、このような言葉に注意しないと、無駄な作業が増えることになりますよ。

私も、何度もこのような言葉で失敗してきましたので、その経験も含めて書いていきます。

できません

お客様からしてみると、企業で働くエンジニア はプロです。

なので、欲しい機能をどんどん言ってきます。

簡単な機能ならばまだしも、難しい機能になると、つい「それはできません」と言ってしまいそうになります。

でも、よく考えてください。

論理的な機能であれば、手間がかかるかもしれませんが、ほとんどが作り込むことが可能なのです。

私の場合、つい「できません」とその場で言ってしまったばかりに、仕事を失注してしまったことがあります。

あとで知ったのですが、そこまで手間をかけずに作ることができたのです。

論理的な機能なら作り込む事もできますし、一般的な機能ならばWebで調べると簡単にロジックやプラグインがあったりします。

なので、「できません」と言う言葉は控えるようにしましょう。

では、難しい機能の場合どう対応するかと言うと、「難しいです」と言うことを正直に行った上で、「検討させてください」と伝えましょう。

あとは、必死に調べる、または、聞き回ることで、簡単に作り込む方法を考えましょう。

簡単です

システムを発注する企業は、ITの知識が低いことがよくあります。

そのため、どうでもいいような機能をどんどん追加してきます。

その大半は、エンジニア にとっては簡単に作り込むことができます。

ただし、企業でエンジニアをしているということは、自分がプログラミングしている時間はビジネスの時間なのです。

作っているシステムは、企業の商品なのですよね。

私も、「その機能簡単にできるので追加しましょう」と言って、最終的に時間が足りなくなったことがあります。

そしてどうなったかと言うと、開発チームから外されることになりました。

結局、開発チームの利益を使ったことになるんですよね。

ただ、個人的には、お客様が欲しいと言っている機能は、できるだけ組み込みたいと思っています。

すぐできます

この言葉も気をつけた方がいいです。

自分の裁量で判断できるくらいの簡単な機能なら、私もこっそりと組み込んだりもします。

ただ、企業でエンジニアとして働いていると、スケジュールがありますよね。

スケジュールって、他の機能との兼ね合いもあるので、遅れると結構怒られます。

それが自分の技術不足によるものなら、まだスケジュールが悪かったと言えるのですが、こっそりと機能を組み込んだばかりに遅れると、かなり問題になります。

これは、私の経験です。

その時は、隠すことができずにバレてしまい、大目玉をくらいました。

なので、こっそり機能を追加するのであれば、スケジュールとの兼ね合いを十分に考えてから行いましょう。

企業で働くエンジニア としては、これも御法度なのですけれどね。

まとめ

企業でエンジニアとして働いている人は、このような言葉は使っていないと思います。

この3つの言葉、「できません」「簡単です」「すぐできます」は、結局企業の利益を潰しちゃうんですよね。

個人で仕事しているのであれば、普通に使っていいのかもしれません。

でも、企業でエンジニアとして働くのであれば、この3つの言葉には注意しましょう。

では、今日はこの辺で。

おまけ

エンジニア で働くのに役立つ過去の記事を紹介します。



2020年3月27日金曜日

プログラマに必要なマインド

こんにちは。

今日は、プログラマに必要なマインドについて書いてみようと思います。

結論から言うと、以下になります。

  • 自分ならどうやって動かすかを考える
  • 動かない理由を考える
  • 考えることにストレスを感じない
この3点は、私が大切にしているマインドです。

自分ならどうやって動かすかを考える

私は、動いている物を見ると、どうやって動いているのだろう、というのが気になります。

まず、興味を持つことが、プログラマに必要なマインドだと私は考えています。

そこから、私ならどうやって動かすかを考えます。

まずは、自分でロジックを考えてみます。

そうすることで、実際にフレームワークを使う時に新しい知識がスンナリと入ってきます。

動かない理由を考える

プログラムは、書いたようにしか動きません

そこに、論理的な間違いがあった場合は動きません。

そこを考えることができないと、先に進むことができません。

つまり、動かない理由を考えることは、プログラマにとって必要なマインドなのです。

簡単に解決できる場合もありますが、デバッカツールを使っても分からない時もあります。

そこを、論理的に考え修正し先に進める必要があるのです。

考えることにストレスを感じない

上にも書いたように、長時間、論理的に考えることがよくあります。

その時間を楽しめるかどうかなのです。

考えることにストレスを感じていると、すぐに潰れてしまいます。

私も、長時間考えることを楽しめれているかは分かりません。

多分、少しずつストレスを感じているのかもしれません。

そのため、適応障害になったのかもしれません。

でも、考えている時間は、自分なりに楽しめれていますよ。

まとめ

私も、上に掲げた3つのマインドを全て持っている訳ではありません。

でも、だからこそ、この3つのマインドの必要性が分かるのかもしれません。

逆に言うと、上の3つのマインドを全て持っていなくても、プログラマにはなれるのです。

後天的に、上の3つのマインドを身に付けることができるのです。

では、今日はこの辺で。

2020年3月11日水曜日

IT業界の今後について

こんにちは。

今日は、IT業界について書いてみようと思います。

新型コロナウィルスの影響で、2021年卒業の学生が就職活動に困っているようなので、実際にIT業界で働いているエンジニアの一人として実状を書いていきます。

結論から言うと、これからもIT業界には需要があります。

しかし、これからのIT業界は、これまでとは違い、プログラムが組める程度では通用しなくなるのも事実です。

IT業界の今後について

新型コロナウィルスの影響で、在宅で働くテレワークが多くの企業で行われています。

本来、東京五輪の開催時に行うはずだったテレワークが、このような形で実施され多くの企業では実証実験ができたのではないでしょうか。

そのため、今後は、テレワークを主軸にシステム開発を行うIT企業も多くなると考えられます。

テレワークで働けるようになると、日本全国、世界から優秀なエンジニア に働いてもらうことが可能となります。

また、AIやブロックチェーン といった高度の開発も普通に行われるようになるでしょう。

AIやブロックチェーン は、フロントエンド側の開発とバックエンド側の開発で大きな違いがあります。

フロントエンドでは、AIやブロックチェーンサービスのWebAPIを使用することで、開発期間がさらに短くなるのではないでしょうか。

また、バックエンドは、より高度な数学が必要となり、これまでのシステムとは桁外れのソースコードとなることが考えられます。

中小のシステム企業では、フロントエンドの仕事が多くなり、さらに納期が短くなることが考えられます。

そうなると、フットワークの軽いフリーランスの需要が高まることは分かりますよね。

では、企業に就職せずにフリーランス として働いた方がいいのでしょうか。
私は、企業に就職することをお勧めします。

プログラミングができる方

まずは、プログラミングができる方に焦点を当てて書いていきます。

すでにプログラミングがきますと言って入社して来る方がいますが、正直、実戦では全く使えません。

実際に行う作業は、お客様のビジネスモデルに沿ったシステムの開発です。

PCに向かってする仕事は半分くらいで、残り半分は、お客様との話し合いなど人との関わりです。

お客様の前に出せるだけのビジネスの知識が、新卒では持ち合わせていません。

そのため、教育制度のある企業に就職し、エンジニア の勉強をしつつ、ビジネスの勉強をお勧めします。

また、プログラミングができる方は、いろいろなプロジェクトに参加できるような企業がお勧めです。

企業によっては、SES(システム・エンジニアリング・サービス)を主軸としている企業もあります。

SESは、お客様先に常駐してシステム開発を行うのですが、実際は、古い基幹システムの不具合改修や機能追加などが多いです。

古いシステムを相手にするため、技術力も思った以上に上がりません。

また、古いシステムを長年扱ってきた方を相手とするため、自分でアンテナを張っていないと、最新技術から遅れをとることになります。

なので、主軸を自社開発や受託開発に置いている会社がお勧めです。

プログラミングができない方

では次に、プログラミングができない方や文系の方などに焦点を当てて書いていきます。

プログラミングができない方は、まず教育制度の整っている企業をお勧めします。

まずは、システムに抵抗を感じなくなることを優先した方がいいでしょう。

PCは、幼い頃からそばにあった世代でしょうが、システムとなると抵抗を感じる方が多いようです。

通常自分が仕事で使うPCでさえも、自由に使えるようになるのに時間がかかる場合があります。

しかし、文系の方は、ビジネスに対する知識を持っている方も多いため、お客様との話し合いには最適だったりします。

ですので、教育制度の整った企業に就職し、エンジニア知識を着ければ、すぐにでも実戦へ投入できると私は考えています。

まとめ

実際、入社時にプログラミングができるかどうかは、ほとんど関係ありません

文系、理系もほとんど関係ありません

大切なのは、社会に出てからどれだけ努力するかです。

あともう一つ言っておきたいことがあります。

試験を受ける企業のことは、できるだけ情報を収集しましょう。

特に経営状態は重要です。

IT業界は、景気に左右されやすい業界でもあります。

ですので、入社時の経営状態はしっかりと収集しておかないと、新入社員研修が終わると営業に回されることもよくある話です。

ピンチはチャンスです。

新型コロナウィルスのために就職活動の開始が遅れたとしても、それをバネに頑張ってください。

では、今日はこの辺で。

(追記)IT業界の今後については、以下の記事も参考にしてください。