プログラマーを目指すにあたって
プログラミングの目的 | プログラムのコードを書く理由、プログラムの目的について説明します。 |
---|---|
プログラマーは手段である | プログラミングをする職業であるプログラマーについて説明します。 |
プログラマーを目指すには | プログラマーを目指す際に必要な知識、勉強について説明します。 |
プログラマーになるには | プログラマーになる方法について説明します。 |
参考情報 | プログラマーに関するリンクです。 |
プログラミングの目的
元来、機械を動作させるために プログラムを作る → 動作させる → 結果を得る ためにプログラミングは行われてきました。
プログラミング フリー百科事典『ウィキペディア(Wikipedia)』
「コンピュータープログラミング(英語: Computer Programming)とは、ある特定のコンピューティングの結果を得ることを目的として、実行可能なコンピュータープログラムを設計・構築するプロセスのことである。プログラミングが関係するタスクの例としては、アルゴリズムの生成、アルゴリズムの正確さとリソースの消費量のプロファイリング、選択したプログラミング言語でのアルゴリズムの実装(これは一般にコーディングと呼ばれる)などがある。」
現在も趣味でプログラミングをする目的は元来のプログラミングの目的と同じだと思います。しかし、プログラミングによって収入を得ようとした場合には、プログラム(プログラムの実行結果を含む)を販売するか、プログラミングを請け負うかのどちらかです。どちらかにしなければならないわけではありませんが一長一短があります。販売する場合には売れなければ収入が得られない代わりに高額で売ることができれば大きな利益を得られます。最近では人気スマホアプリで成功した人、古くはシェアウェア販売で成功したことが日本にもいます。請負の方は発注主と合意した条件の仕事をして報酬を得ることができます。請負で生活の糧を得ながら、自主開発の比率を増やしていくのがセオリーです。
世界的な富豪として知られるビル・ゲイツ氏(ビックテックの一つマイクロソフトの創業者)は中学・高校時代に企業のコンピューターの利用権を報酬にプログラミングをしたり、未作成のBASICインタプリタを売り込みしてから開発したりと様々な逸話が残っています。現在なら量子コンピューターやスーパーコンピューターを使うために学生バイト・インターンするような感じでしょうか?
プログラマにはプログラミングによって得ようとする対象領域についての知識、問題解決の能力が必要とされ、単にプログラミング言語のコードを書くという作業(コーディング)の価値は低下しています。コーディングのみを行うプログラマの職業としてはフリーランス(単発のお仕事)で数万円から数十万円で発注されるような不安定な仕事です。企業に就職して情報システム部門やソフトウェア開発部門に所属して社員になるとコーディング以外の仕事の比重が高くなりますが福利厚生が付き安定した収入が得れます。いわゆるプロフェッショナル人材制度を導入している企業もありますが、日本的な企業の場合にはプログラマだからプロ認定されるわけではなく他の社員と同様の給与水準です。官公庁、地方自治体に所属する公務員プログラマも同様に技術職の給与体系になることがほとんどです。人事異動やジョブローテーションによってプログラミング以外の職種・業務に従事しなければならなくなることもあります。
前提となる業務知識なしにコーディング専門に行う場合には下請け的な立場で仕事を受けることになります。対象領域についての知識、問題解決の能力を身につければ、ITコンサルタントとして業務改革、デジタル化(DX)、要求分析といった上流から携わることができ、高単価の案件で高収入を得られます。プログラミングをしていく中で大きなシステムを動かしたいという欲望が芽生えてきたら、組織内でステップアップするとしても独立・起業するとしても上流工程を目指すことが必然になるのです。
プログラマーは手段である
直近では何かを動作させて処理結果を得るとか、報酬を得るのが目的です。それを何度か繰り返すとしても長期的には自分のやりたいこと、夢を実現する手段としてとらえることが大切です。なぜなら、プログラム自体がコンピューターを動かすための手段だからです。プログラマーになろうとしているとき、プログラムになった後もこれを忘れてしまうとプログラミングが苦行と感じたり、プログラマーが嫌になってしまいます。 目的もなしにプログラミングを英単語や文法の学習のようにとらえるのは挫折の元です。
ゲームを作りたいとか、自分のパフォーマンスを披露したいとかそういう具体的な目的から、そのための方法を調べ、考える中で一つの手段がプログラミングであり、そのための仕事がプログラマーです。ゲームを作るのであれば開発プラットフォームが既にあり、その上で動作するので新しくプログラミングする部分は限られています。リリースを目指して開発をしていくとプログラミング以外の要素が必要で絵や音などの準備、スケジュール管理、広報宣伝、サーバー運用など一人でこなせる量ではなくなっています。分業して、チームでプロジェクトを進める必要があるのです。 パフォーマンスを見せる場は配信プラットフォームがあり、YoutubeやTikTokなどではすぐに全世界に向けて発信できます。配信のために自分でWebサービスやアプリを開発する必要はないのです。やりたいことの実現にプログラミングありきで考えるのではなく、既存の物を利用して達成する方法を先に考えたほうが実現性が高まります。
世の中に無いものを作りたい、社会課題を解決したいということならプログラマーの活躍する可能性が広がっています。大きな目標を持っても、基礎が大切です。論理的思考、数学的思考と情報技術を組合せてプログラムは構成されています。最初はサンプルプログラムを模写(手打ちでキーボードをタイプ)して、何もなくても作れるくらいになるべきです。一般的に業務では開発環境の初期のひな形で用意されているのですが、自分ですべて開発する時に困らなくなります。
プログラミング自体を楽しんで、時には上手く動かないことがあってもそれを直すことで達成感を感じて前に進んでいってほしいと思います。ですから、プログラミングの課題の回答すべてをインターネット検索で入手して丸写ししたり、生成AIに作ってもらったりしてはプログラミングの力は付きません。検索力だったり、AIから答えを引き出す力は付くので人真似をするだけのプログラマーもどきにはなれるかもしれませんが全く新しいものを創り出すスキルは身についていないのでその先に進むことができないのです。
プログラマーを目指すには
現在はコンピューターゲームやインターネットに触れて育つので、プログラマーに憧れたり、ITエンジニアを志望する人も増えています。2022年には「ITパスポート試験に7歳の小学1年生(受験時)が合格」(情報処理推進機構 IPAプレスリリース https://www.ipa.go.jp/pressrelease/2022/press20220414_2.html)といった最年少合格者も話題になりました。まさにデジタルネイティブ世代ですね。
生成AIの急速な進化もあり業務のデジタル化が避けられない社会情勢であり、中高年のリスキリング(新たな分野や職務にて新しいスキルを習得すること)でIT分野の再学習が注目されています。社員全員で情報処理技術者試験の入門区分である「ITパスポート」に合格しようというような取り組みをしている企業もあります。
ITパスポート試験は国家試験として初めてコンピュータを利用して実施する試験方式であるCBT(Computer Based Testing)方式を導入した試験で、各地の受験センターで通年で随時実施されるので年齢を問わず受験しやすい試験です。なお、CBT未導入の高度情報処理試験は春秋実施で学生や新社会人は特に忙しい季節なのでスケジュールが立てにくいことや記述式、論文などを手書きするので体力が必要です。(ITエンジニアの経験が長くなればなるほど鉛筆やシャープペンシルを持たないので自分でも驚くほど漢字が書けないです。私は受験前に手と腕を鍛えるため試験範囲、知識項目例の模写をしていました。)
ITパスポート試験の出題範囲は、セキュリティやネットワークなどのITに関する基礎知識をはじめ、経営戦略、財務、法務、プロジェクトマネジメントなど幅広い分野にわたります。試験勉強を通じてITを活用する上で前提となる幅広い知識をバランス良く習得できます。最初にコーディングスキルを身につけることを目指すよりも、ITパスポートの合格を目指したほうがビジネスパーソンとしてもプログラマーとしても成長に繋がるはずです。特に小中高生ならITパスポートの合格は推薦入試の優遇・加点要素になったり、情報Iの受験勉強にも繋がるのでおすすめです。総合高校の情報科、商業高校では在学中の取得(ITパスポート、基本情報処理技術者試験)を目指したカリキュラムが組まれています。
学生のうちにプログラミング、特にコーディングを学ぶのは、授業や課外活動、就職を希望する企業の採用試験に制作物の提出、コードテスト、競技プログラミングが課されている場合やデジタルで課題解決する手段としてプログラミングが必要になったらでも大丈夫です。就職活動を始めるとき採用試験通過のためのプログラミングを勉強するのでも遅くはないと思います。プログラミングは常に進歩していて、その一部はオープンソースでプログラム・ソースコードが公開されるので天才プログラマーのコードを見ることができます。基礎学力と思考力がしっかりついていれば代替はコードを読んで理解できるはずです。
教科書の出版社や学習事業を運営している企業からプログラミング実習型のWeb教材もリリースされているので手を使いながら、動く様子が分かるのでおすすめです。作りたいプログラムが無い状況でプログラミング学習すると1つのプログラミング言語を文法や命令文から順に学ぶ方法になりがちです。体系的に学べる反面で何かできるわけでもないので途中で挫折しやすい、開発環境でのコーディングに活かしきれないという欠点があります。
ちなみに現在は高校の科目「情報I」(必修)、「情報II」があり、2025年度大学入試の共通テストから「情報I」を出題範囲とした「情報」が新設されます。国立大学入試では原則として「情報」を加えた6教科8科目を課すとされています。今後は「情報I」を履修済の社会人が輩出され、高卒はすぐ、2029年頃からは大卒も就職してきます。
独学しようと考えている場合には一部の大学のプログラミング演習やIT企業の新入社員教育の教材が無料で公開されています。そうした教材を利用してどのように学べばよいかを下調べしてみることです。いきなり高い教材を購入したり、プログラミングスクールを契約する必要はありません。概して著名な天才プログラマーが教えるのがうまいわけではなく、一線で活躍中のプログラマーが副業で教える動画などは志向に合うかどうか好みの問題もあるのでプログラミング入門書やオンライン教材のサンプルを試してからで遅くありません。
なお、マンツーマンでプログラミングの教授してもらうと早く習得できると期待してしまうかもしれませんが、その効果は特定のプログラミング言語の特定の開発環境に限定されます。自分のペースでしっかりと自分で理解して習得すれば他の言語を学ぶときにもすんなりと吸収できるようになると思います。
初学者向けのアドバイス:
Q:どのプログラミング言語を学んだらよいですか?
A:データ分析やAIの分野で注目のプログラミング言語「Python」(パイソン)が一押しです。WebやIoTで広く利用されているのでプログラムを学ぶための教材が豊富なこと、ライブラリやサンプルコードが沢山あること、情報処理技術者試験の対象言語の一つであることも付け加えておきます。
Q:プログラミングを上手くできません。
A:プログラミングはとても難しいところがあります。行き詰まりやすいポイントを具体的に挙げて、乗り切るための対処方法を詳しく説明します。
→プログラミングの挫折ポイントを乗り越えて成功しよう!
Q:情報処理技術者試験は取ったほうがいいですか?
A:情報処理技術者試験の合格は一生涯有効ですので取れるときに早くとったほうがよいでしょう。学校によりますが入学試験の加点、就職・転職時の履歴書の資格欄への記載ができます。就職して社員や公務員(自治体)になった後に昇進の要件の一つになっていたり、手当が出る場合もあります。
プログラマーとして有名人に成れる人は極めて少ないので第三者からプログラマーとして客観的に認められるためには資格が必要だと考えます。情報処理技術者試験以外にも、ITに関するスキルを証明することができる各ベンダーや団体が実施している検定試験があります。
Q:おすすめの書籍はありますか?
A:私の体験としてベストセラーになっている本には他の本よりも良い点が多くあるので、それぞれの専門分野、例えばプログラミング学習に関する本、学びたいプログラミング言語の本、Webコンテンツ作成からそれぞれ数冊紹介します。従来はWebコンテンツ・デザイン(HTMLやCSS)関連はプログラミング言語とはみなされていませんでしたがWebサービスやWebアプリの開発に欠かせない要素であること、Webページに動きを付ける「JavaScript」はブラウザで動作するプログラミング言語であることから一緒に紹介しています。
プログラミング入門
Pythonプログラミング入門
Javaプログラミング入門
開発実装 コーディング、テスト
Webコンテンツ制作
Q:書籍で学んだあとはどうしたらよいですか?
A:決まった道は無いと思います。書籍の説明の中に出てきたキーワードを手掛かりに検索してさらに知識を身につけ、書いたプログラムのソースコードを手元でを動かしてみます。プログラムはやりたいことに付随してやらなければならないこと知るべきことが枝葉に分かれてどんどん増えていきます。
近年ではブラウザ上でプログラミングを実行しながら学べる環境もあるので試してみたらよいと思います。 詳しくは「Google Colaboratoryでプログラミングを学習しよう」をご覧ください。
興味・関心の強い分野の専門性を極めて(専業、副業問わず)仕事や趣味につなげて行くとライフワークに活かせます。学業や本業があるなら副業として単価が安めで規模・期間が短い仕事を請け負うことができるところで働くとすぐに実践できます。中上級者へのステップへ続きます。
中上級者へのステップ:
プログラミング学習用プラットフォームを利用していたらその枠を超え、実用できる環境に移ります。プログラミング言語や目的に適合した環境を用意します。具体的にはPCに開発環境・ローカルのサーバーを構築したり、クラウドコンピューティングサービス(AWS:Amazon Web Servicesのようなクラウドサービス)を契約して自分のWebサーバーを持ちます。
環境構築は一定の構成まですぐに作れるように構成管理ツール「Ansible」を利用したり、仮想コンテナ「Docker」を使って開発環境の管理を省力化するようにします。
プログラミングやサービス開発でやりたい分野が具体的に決まっていたら、その分野の最大手の会社や最も勢いがある会社を狙ってインターンの申込みをしたり、アルバイトをしても良いと思います。
近いうちに就職試験を受ける会社でソフトウェアエンジニア、プログラマとしての実力を測るためのコーディング試験が課されている場合にはプログラミング問題を解いてコーディングテスト対策をします。ソートのアルゴリズムのように頻出問題は練習しておけば短時間で回答できますが、対策なしで受験すると時間をとられてしまい合格はおぼつかないと思います。
プログラマーになるには
日本で高収入で安定したプログラマーを目指す場合には大手SIerへの就職が候補に挙がります。デジタル庁、自治体の情報システム部門を目指す道もあります。米国でプログラマーを目指す場合にはビザの関係もあるので日本法人に入社後に米国へ行くか、米国の情報工学系の大学や大学院への留学を経て就職するか、顕著なプログラマーとしての実績をもとに転職することが考えられます。
ビックテックのような世界的な企業、日本の代表的なソフトウェア企業を自らの手で興すことを目指すなら、戦略的に大学で学んで創業し資金を調達して大きくしていくのがその道になります。ハイリスクですが高校や大学を中退して起業して成功している著名な創業者もいます。
所属せずに個人で開発している場合には実力を示すために外部への情報発信が重要です。アプリストアで開発物を販売したり、コミュニティ活動をすることで他者から優れたプログラマーとして認められるようになります。コミュニティ活動にはオープンソース(OSS)に貢献する、ソースコードやプログラミングに関するコンテンツを公開する、コンテストに参加するなど様々な方法があります。コンテストとしては日本ではIPAの未踏IT人材発掘・育成事業があります。プロジェクトが採択されると作業費用が支払われるので別にバイトをすることなく活動に専念しやすいです。
外部への活動するしないは個人の好みによるところですが、転職あるいは独立したり、請負業務を獲得しようとしたときに実績・成果物として評価を高めることができるので迷ったらしておいたほうがいいです。就職してプログラマーになった場合には、所属組織の規定で開発したソースコードは会社に帰属することになる場合がほとんどです。そのため、自分がそのソフトウェアの開発者だと公表することもできないことが少なくありません。たとえ自分が業務上書いたコードでもGithubで公開すると情報漏洩として問題になるでしょう。
1980年代以降 プログラマーが会社を興してソフトウェアを販売して巨万の富を得るようになっています。世界の時価総額TOP10の企業は情報通信・ソフトウェアが大半を占めるようになっています。このうち5大IT企業についてはビックテックあるいは「G=Google」「A=Amazon」「F=Facebook(現Meta)」「A=Apple」「M=Microsoft」の頭文字を取り、「GAFAM」と呼ばれています。インターネットを軸に中核事業で得た顧客とビックデータを活用したプラットフォームビジネスで利益を上げています。
日本では情報システム子会社やSIerに所属する会社員プログラマーが大部分を占めていて、米国と比べると日本ではプログラマーが起業して世界的な大企業にまで発展する成功例は少ないです。同一の企業でキャリアを積んでプログラマーからプログラマーの人員や予算を管理する仕事(マネージャー)やプロジェクトを管理する仕事(プロジェクトマネージャー)に従事することが多いです。専門技術職としてプログラマーを続けたい場合は単金が上がらず給料が頭打ちになりがちです。プログラマーから直接独立してソフトウェアを単体販売して保守費を稼ぐビジネスモデルでは収益性に限界があるので、周辺領域も取り込んだ形でプラットフォーム全体で収益化することを考えたほうが良いでしょう。
日本のIT業界の商習慣として、工数1人月(例:1週間40時間×4=160時間)で人件費を計算します。1時間あたり2000円の時給だと160時間で32万円の支払いになりますが、派遣や請負の場合には手数料や税金が引かれて手取り額はかなり少なくなります。なお、商流として多重請負構造になっている場合には発注主は2~3倍の報酬で発注しています。
月額報酬の目安(税・手数料を引く前)
初級プログラマー:32万円 (標準160時間、時給 2000円)
中級プログラマー:48万円 (標準160時間、時給 3000円)
上級プログラマー:80万円 (標準160時間、時給 5000円)
これに12か月を掛けて税引き前の年収の目安として、384~960万円になります。
参考情報
職業情報 | ・厚生労働省 職業情報Job-Tag 「プログラマー」 https://shigoto.mhlw.go.jp/User/Occupation/Detail/313 職業別名:ソフトウェアテスト技術者 職業分類:プログラマー 属する産業:情報通信業 プログラマーの仕事の内容について紹介しています。 ・プログラマ programmer [フリー百科事典『ウィキペディア(Wikipedia)] プログラマの仕事としてみなされる仕事について解説しています。 →プログラマーの一覧 [フリー百科事典『ウィキペディア(Wikipedia)] ・岩田聡 (ゲームクリエイター、プログラマ、実業家) 任天堂の元代表取締役社長でハル研究所代表取締役社長などを歴任。優れたプログラマーとしての逸話が沢山残っている。 ・シブサワ・コウ (ゲームプログラマ・プロデューサー) コーエーテクモゲームスのブランド・コーエー(旧・光栄)における『信長の野望』『三國志』各シリーズなど、数々の歴史シミュレーションゲームにクレジットされるプロデューサー。光栄設立者の襟川陽一氏 ・浮川和宣 (プログラマ、実業家) ジャストシステムの創業者であり、一太郎の開発者。元日本パーソナルコンピューターソフトウェア協会会長。初期段階から文書作成や日本語入力に着目して開発していた。奥様のプログラミングの才能を見込んで夫婦で起業した。 |
---|---|
開発者(ディベロッパー)向け |
・Apple developer :
https://developer.apple.com/jp/ Apple向けのアプリ開発者のためのサイト。iPhone / iPad / MacOS向けの開発環境 Xcode、Swiftなどの公式資料などがある。スマホアプリ(iOS用)を開発して、ストアで販売するための一連のリソースが得られます。 ・Android Developers : https://developer.android.com/?hl=ja Android デベロッパー ガイド。Android SDK ツールや API ドキュメントを提供。 スマホアプリ(Android用)を開発して、ストアで販売するための一連のリソースが得られます。 ・Microsoft デベロッパー : https://developer.microsoft.com/ja-jp/ AI、クラウド、ゲーム開発のためのトレーニングとツール、ドキュメントを提供。Microsoft 365、Azure、Power Platform、Visual Studioほか ・Windows デベロッパー センター : https://developer.microsoft.com/ja-jp/windows/ Windows用アプリの作成のためのリソース。 |
コミュニティ・プラットフォーム | ・Qiita :
https://qiita.com/ エンジニアに関する知識を記録・共有するためのサービス。プログラミングに関するTips、ノウハウ、メモを記録、公開できる。[Qiita株式会社 運営] ・Github : https://github.co.jp/ ソフトウェア開発のプラットフォーム、ソースコードのホスティングとバージョン管理。[マイクロソフトの子会社 GitHub社 運営] |
雑誌 | ・日経ソフトウエア : プログラミングおよびソフトウエア開発の技術を本質から学ぶ隔月出版のコンピューター雑誌。創刊25周年。[株式会社日経BPマーケティング] |
更新履歴
2023年9月16日 更新 環境構築について加筆
2023年9月6日 更新 プログラミングの挫折ポイントを乗り越えるためのリンクを追加
2023年8月1日 更新 米国でプログラマーになる場合を追記
2023年7月16日 作成(執筆:SENRI)