質問: 未経験で2ヶ月前に入社し現在プログラム言語の勉強をしています。 お客様常駐型の会社で私も常駐するのですが 2月からテストエンジニアとして派遣されます。 未経験だとよくあることらしいくテストエンジニアとして経験積むことも大切だとネットを見て知りました。 これから開発に携わるために少しずつプログラム言語の勉強をしてのですが、 おすすめの言語はありますでしょうか。 第一希望としてはサイトなどプラットフォーム?など作成してみたいです。 第二希望としては簡単なアプリやゲームを作成してみたいです。 将来的にはフリーランス希望です。 人気言語など色々調べましたが、現在プログラム言語に触れている方たちの意見を聞きたいです。 よろしくお願いします。 今勉強してるのはc#でフリーランスには少し不向きなようです。
回答: コメントでも申し上げましたが、 何やりたいかによって、学習言語を選ぶべきかと思います。 下記に、人気かつ主要な言語の特徴、使用分野などを記載していきます。 選出の参考になれば幸いです。 ※質問のコメントを受けて、ジャンル別で言語を絞らせていただきました。 Webサイトを作るなら =========== フロントエンド開発 ### HTML > > HyperText Markup Language(ハイパーテキスト マークアップ ランゲージ、HTML(エイチティーエムエル))は、ハイパーテキストを記述するためのマークアップ言語の1つである。World Wide Web (WWW)において、ウェブページ(1990年代後半頃からはコンテンツという語も利用されている。「中身」という意味の語であり、大層な意味は無い)を表現するために用いられる。ハイパーリンクや画像等のマルチメディアを埋め込むハイパーテキストとしての機能、見出しや段落といったドキュメントの抽象構造、フォントや文字色の指定などの見た目の指定、などといった機能がある。 > > Wikipediaより > > > プログラミング言語ではありませんが、 Webをやるなら、必須の言語となります。 Webページを構成する構文を作成する言語です。 Webページにて、PHPやRubyを使って、値を出力するなどをするにしても、 最終的には、HTMLに則って出力する必要があります。(ブラウザが解釈できる形) ### CSS > > Cascading Style Sheets(CSS、カスケーディング・スタイル・シート、カスケード・スタイル・シート、日: 段階スタイルシート)とは、HTML や XML の要素をどのように修飾(表示)するかを指示する、W3Cによる仕様の一つ。文書の構造と体裁を分離させるという理念を実現する為に提唱されたスタイルシートの、具体的な仕様の一つ。 > > Wikipediaより > > > HTMLと同じくプログラミング言語ではありませんが、Webをやるなら必須です。 HTMLで定義した要素に、装飾や、位置調整などの"スタイル"を定義する"仕様"になります。 ### JavaScript > > JavaScript(ジャバスクリプト)とは、プログラミング言語のひとつである。Javaと名前が似ているが、全く異なるプログラミング言語である。 > > > JavaScriptはプロトタイプベースのオブジェクト指向スクリプト言語であるが、クラスなどのクラスベースに見られる機能も取り込んでいる。 > > > ウェブブラウザ上で動作し動的なウェブサイト構築やリッチインターネットアプリケーションの開発に用いられる。また、2010年以降はnode.jsなどのサーバサイドJavaScript実行環境や各種ライブラリの充実により、MEANに代表されるように、Web開発の全ての領域で活用されるようになってきている > > Wikipediaより > > > 引用にある通り、現代では、Webの世界(特にクライアントサイド)に止まらず、Adobeアプリケーションのバッチ処理や、サーバーサイド、または、アプリ言語内で、使用できるなど、かなり幅広い分野で活躍する言語。 それでも、まずJSをやるならWebベースで学ぶのがおすすめです。 ただし、Webで勉強するなら、付随して、HTML、CSSの勉強も必須になるでしょう。 サーバーサイド ### PHP > > PHP(ピー・エイチ・ピー)は "The PHP Group" によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページ作成するための機能を多く備えていることを特徴とする。 名称の PHP は再帰的頭字語として、 "PHP: Hypertext Preprocessor" を意味するとされており、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。 > > Wikipediaより > > > Webでサーバーサイドといえば、PHPは外せないかと思います。 facebookもPHPをベースとしたfacebookが開発した、**Hack**という言語で作成されています。 Hack (プログラミング言語) - Wikipedia) また、普及率がかなりあるCMSのWordPressも、PHPで開発されています。 しかし、Webで使っていくとなれば、付随して、HTML、CSS、JavaScriptも学ぶ必要が出てくるでしょう。 ### Ruby > > Ruby(ルビー)は、まつもとゆきひろ(通称: Matz)により開発されたオブジェクト指向スクリプト言語(スクリプト言語とはプログラミング言語の一分類)。 > > > 日本で開発されたプログラミング言語としては初めて国際電気標準会議(IEC)で国際規格に認証された事例となった。 > > Wikipediaより > > > 国産言語です。 コマンドでのバッチ処理などでも使用されます。 また、Ruby on Rails(Webアプリケーションフレームワーク)の登場などにより、Webでの活躍も非常に増えてきています。 PHP同様、Webで使用していくなら、HTML、CSS、JavaScriptも同時に必修になります。 サーバーサイドに関しては、他のプログラミング言語でもできますが、 PHP、Rubyが、現代においては二大巨塔となっています。(PHPは特に、Webに特化しているため) アプリ・ゲームを作りたいなら ============== Java > > Java(ジャバ)はコンピュータのプログラミング言語の一種。Javaを用いて作成されたプログラムの実行環境(プラットフォーム)を意味する場合もある。 > > > 企業の業務システムの構築などのほか、ブルーレイディスクレコーダーをはじめとする家電への組み込み用途など、幅広い用途で使用される。 > > Wikipediaより > > > Wikipediaに書かれている通り、かなり幅広い分野で活躍している言語です。 昔からかなり根強い人気を持っています。 以前は、Web上でもJavaアプレットなるものがあり、Web上でも、非常に大活躍した言語です。 (今は、Web上のJavaアプレットは廃れています。サーバーサイド言語としてはまだ使われています) ひとまず、Javaを習得すれば、食いっぱぐれはなくなるでしょう。 どの分野でもだいたい活躍できる言語です。 C++ > > C++(シープラスプラス)は、汎用プログラミング言語のひとつである。派生元であるC言語の機能や特徴を継承しつつ、表現力と効率性の向上のために、手続き型プログラミング・データ抽象・オブジェクト指向プログラミング・ジェネリックプログラミングといった複数のプログラミングパラダイムが組み合わされている。C言語のようにハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても使用可能である。アセンブリ言語以外の低水準言語を必要としないこと、使わない機能に時間的・空間的コストを必要としないことが、言語設計の重要な原則となっている。 > > Wikipediaより > > > Cにオブジェクト指向を組み合わせて、バージョンアップした言語と言えます。 Javaと同じでかなりいろんなことができるようです。 (ざっくりですみません) ゲームやアプリの作成にも使われたりします。 Swift > > Swift(スウィフト)は、アップルのiOSおよびmacOS、Linuxで利用出来るプログラミング言語。Worldwide Developers Conference (WWDC) 2014で発表された。アップル製OS上で動作するアプリケーションの開発に従来から用いられていたObjective-CやObjective-C++、C言語と共存することが意図されている。 > > > Swiftは、マルチパラダイムのコンパイラプログラミング言語であるが、XcodeのPlaygroundsの上やターミナルでインタラクティブにデバッグする事が可能である。 > > Wikipediaより > > > アプリ言語です。 アップル製品のアプリケーションを制作する際に用いられる言語です。 もし、iOSアプリを作っていきたい、と思うならば、習得必須でしょう。 C# > > C#(シーシャープ)は、アンダース・ヘルスバーグが設計したプログラミング言語であり、構文はその名前にもある通りC系言語(C言語、C++やJavaなど)の影響があるが、構文以外の言語機能などについてはヘルスバーグが以前の所属であるボーランドで設計したDelphiからの影響がある。 > > > マイクロソフトによる謳い文句としては、マルチパラダイムプログラミング言語、強い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ、などといった点が強調されている。 > > Wikipediaより > > > 質問者さんが現在勉強中ですね。 C++と同様にCから派生した言語です。 Windowsアプリケーションの開発を始め、ゲームの開発に使われたりなど、 幅広く使用されています。 個人的な感想を申し上げると、C系言語の中では、人間語に近いような印象があります。 (人間側で解釈、構文構築がしやすい設計ということ。 逆にコンピュータ語寄りとは、メモリの管理を開発者側で記述したりなどしなくてはいけない反面、コンピュータが解釈しやすい、つまりはコンピュータ側に優しい言語、と言える物のことを指す) Unity > > Unity(別名:Unity3D)は、統合開発環境を内蔵し、複数の機材(platform)に対応するゲームエンジンである。開発はユニティ・テクノロジーズ(英語版)。日本法人はユニティテクノロジーズジャパン合同会社。ウェブプラグイン、デスクトッププラットフォーム、ゲーム機、携帯機器向けのコンピュータゲームを開発するために用いる。100万人以上の開発者が利用している。Unityは主にモバイルやブラウザゲーム製作に使用する。コンソールゲーム機およびPCにゲームを導入(install)することができる。ゲームエンジン自体はC言語/C++で書かれており、ユーザー(開発者)はC#を用いたプログラミングが可能である。2005年にMac OS Xに対応したゲーム開発ツールとして誕生した。今日ではマルチプラットフォームに対応したゲームエンジンに成長した。 > > Wikipediaより > > > プログラミング言語ではありませんが、もしゲームを作りたい!とお思いなら、学習必須かと思いますので、記載です。 一つの開発で、マルチプラットフォームに対応した出力をするには、これ以上のものはないかと思います。 **C#で開発**するので、質問者さんにはいいかもしれませんね。 Python > > Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。 > > Wikipediaより > > > 現代において急激に注目を浴びている言語です。 なぜなら、人工知能のディープラーニングによく使用される言語でもあるからです。 AIは、今後発展を続ける分野なので、食いっぱぐれはなくなるでしょう。 AIをやっていきたいなら、習得必須な言語です。 アプリ・ゲームには直接関係ありませんが、アプリやゲームを作る際に、AIを使う機会もあると思い、記載です。 他にもまだまだあり、挙げるとキリがありませんが、 ひとまず、人気なものなどを上げました。 やりたい分野から選ぶといいかと思います。 さぁ、どうする、若者よ。