2022-02-23日本では「プログラミング初心者は最初にC言語を学ぶべき」という風潮が根強いため、C言語の入門書からプログラミングの基礎を勉強する方が多いです。現状、C言語を取り巻く環境にはある問題があります。C言語の書籍は初心者向けの内容の本が多く、中・上級者向けの内容(アプリ開発を行うなど)の本はあまり出版されていません。C言語ベースではプログラミングの基礎以降の知識を得るハードルが高いのです。そのため、C言語の入門書を読み終えたタイミングで「次に何をすればよいのか分からない」という状態になってしまう初心者の方が割といらっしゃいます。筆者自身、過去に同じような経験をしました。当時から年単位で時間が経過し、自分の中でこの問題についての一定の結論が導けたため、ここでその考えをシェアできればと思います。脱初心者のために必要なアクション「C言語からプログラミングの学習を始め、入門書は読み終えた。「C言語の勉強を続ける?それとも他の言語の勉強に移行すべき?」これらの疑問に対する筆者の回答は以下の通りです。他の言語でアプリなどの開発にチャレンジしましょう上記の回答について詳しく説明していきます。一般的にプログラミングの学習は以下の流れで進めることが多いです。基本的な概念とプログラムの書き方を覚える実際にアプリなどの開発に挑戦するC言語の入門書を読むことは上記の1に該当します。次は上記2の開発のステップに進みましょう。開発するのはアプリ、ゲーム、AI...何でもかまいません。何かを作ってみることが重要です。入門書を何度も読み直すなど、必要以上に基礎の部分へ時間を掛ける方が偶にいらっしゃいますが、個人的にこれはあまりおすすめしません。プログラミングは何かを作る過程において最も上達するものだからです。プログラミングのスキルの高さ、つまり、プログラミングによって出来ることの多さは、実際にプログラムを書いて課題を解決した経験の量と密接に関係しています。実現したい処理、解決したい課題に直面して、そのためにはどのようなプログラムを書くべきかを考えた経験がプログラミングで出来ることを増やすのです。アプリやゲームなど、一定以上の規模のシステムを開発する場合は本当に様々な課題を解決する必要があるため、開発への挑戦はプログラミングスキルの大幅な向上に繋がります。残念ながら入門書の内容だけでは経験できる課題の量は多くないです。自分のプログラミングスキルを早く向上させたいのであれば、ある程度の基礎を覚えたら開発のステップに進みましょう。基礎に不安が残る場合でも「関数の名前を覚えていない」程度であれば問題ありません。忘れてしまったらその時に調べれば大丈夫です。エンジニアでもGoogle検索に頼りながらプログラムを書く人が割と多いため、初心者の方もあまり心配しないで下さい。開発のステップは大変ですが、プログラミングで最も楽しい部分であるとも感じています。ともこの楽しさを早く味わって欲しいです。C言語以外を使う方がオススメアプリの開発など、基礎以降の内容に挑戦する際は一つ注意点があります。出来ればC言語以外のプログラミング言語を使うようにして下さい。冒頭でも述べた通り、C言語の書籍は初心者向けの入門書がほとんどです。書店を訪れてもC言語を用いてアプリなどの開発を行うような内容の本はなかなか見つけることができません。C言語の場合、基礎以降の内容に挑戦しようにもその助けになる教材が整っていないのです。Google検索を活用して地道に情報を集めながら学ぶことも不可能とは言いませんが、余計な負担になることは間違いないでしょう。こだわりがなければ、教材の充実した言語に移行した方が良いと思います。一から新しい言語を勉強するのは面倒かもしれませんが、中・長期的な学習効率を考えればその方が絶対良いです。それに心配するほど言語の再習得は時間が掛かりません。C言語の歴史は長く、現在広く普及しているプログラミング言語にはC言語をベースに作られたものが多くあります。加えてほとんどの言語はC言語よりも扱いが簡単であるため、一度C言語を勉強した人であれば大抵の言語はすぐに習得可能です。基本的な書き方の理解だけであれば一時間も要らないと思います。触ればすぐにC言語と遜色ないレベルまで慣れるはずなので安心して下さい。どのプログラミング言語を選べば良い???簡単に前章のおさらいをします。C言語からプログラミングの勉強を始め、大体の基礎が理解できたのであれば、次は以下のことをすべきという話をしました。アプリなどの開発に挑戦する(更なる経験値を得るため)他のプログラミング言語へ移行する(C言語は開発系の教材が少ないため)開発に挑戦するに当たって、何を作るかは自由です。アプリでもゲームでも、純粋に興味のあるものを選びましょう。これは前章でも述べた通りです。C言語からどの言語に移行すべきかについてはそもそもまだ説明していませんでした。それについては、この章で詳しく解説しましょう。'Python'を選べばほぼハズレは無しこれから開発に挑戦する方には、基本的にPythonをおすすめします。Pythonには以下のような特徴があり、これらが開発の経験を積む上ではかなりプラスの要素として働くからです。開発できるシステムの種類が多い(アプリ、ゲーム、AIなど)書き方がシンプルかつ簡潔Pythonには様々なシステムの開発に役立つ機能が備わっています。いくつか機能の例を紹介しましょう。アプリ開発に必要な前処理を自動で実行するフレームワークゲーム開発に必要なグラフィック、音楽を扱うためのライブラリAI開発に必要な行列計算を効率よく行うライブラリアプリ、ゲーム、AIの開発はどれも全くの別物ですが、Pythonはこれら全ての開発を行うことができます。様々なシステムの開発に挑戦しやすいのです。Pythonはプログラムの書き方がシンプルで分かりやすく、面倒な決まり事も少ないため、他の言語に比べて言語自体の扱いが障壁になることはほぼありません。これについては開発の本質的な部分(システムの設計など)に集中しやすいとも言えます。開発できるシステムの多さ、言語の扱い易さは、開発の経験を積む上で非常に都合が良いため、これから開発に挑戦する方にはPythonがおすすめです。・・・なお、Pythonを用いて開発に挑戦するのであれば、以下の教材をおすすめします。フレームワーク、ライブラリなどの使い方を解説するだけではなく、簡単なシステムの開発を体験できるような物をピックアップしました。よければ参考にしてみて下さい。TensorFlow2対応スマホアプリ開発なら'Swift'or'Java'Pythonは開発できるシステムの種類が多い、という話をしました。残念ながらPythonでも開発が難しいシステムがあります。スマホアプリの開発環境はPythonには整っていません。そのため、スマホアプリ開発に挑戦したいと考えている方はここで紹介するプログラミング言語を使用するようにして下さい。スマホアプリにはiPhoneアプリとAndroidアプリの2種類があり、開発にはそれぞれ別の言語が用いられます。対応関係としては以下の通りです。iPhoneアプリ:Swiftを使用Androidアプリ:Javaを使用iPhoneアプリの開発がしたいのであればSwift、Androidアプリの開発がしたいのであればJavaを使う必要があります。iPhoneアプリとAndroidアプリ、どちらの開発を選ぶかは自由です。迷うようであれば、ご自身の利用するスマホに対応するものを選ぶのが良いと思います。・・・Swift、Javaを用いて開発に挑戦する場合は以下の教材がおすすめです。先程と同様に簡単なシステムの開発を体験できるような教材をピックアップしました。よければ参考にしてみて下さい。@htt_mdk・ITエンジニア・プログラミング関連の情報をメインに発信していきます。ProDesigns。