現在SIerで働いておりますが、2,3年後にweb系エンジニアへの転職を考えています。
そこで、趣味および勉強がてら簡単なwebサービスをいくつか開発してみようと考えているのですが、言語選択に迷っています。
どうせやるのなら、2,3年後の転職活動に役立つような言語,フレームワークを使ってみたいと考えています。
調べてみたところpythonのdjangoがトレンドなのかな?と思ったのですが、案件数を見るとLaravel、Ruby on railsなんかも学習価値が高そうに見えます。
どれがおすすめでしょうか?
(2,3年後にはそんなのもう使われてないよとならないか心配です。)
また、2,3年後の転職を考えた場合、上記のようなフレームワークを広く浅くいろいろと触れておくのと、何か一つに絞って学習していくのとではどちらの方が良いでしょうか?
■補足
自身のスキルは以下のようなかんじです。
・現在の仕事はプロジェクト管理がメインで、プログラム書いたりはほぼやっていない
・C,python,Java(servlet,jsp),jsの文法は学習経験有り(サービスやアプリを作ったことはない)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答9件
0
どうせやるのなら、2,3年後の転職活動に役立つような言語,フレームワークを使ってみたいと考えています。
そんな事は誰にもわかりません。とはいえ、1つ作れば「Webアプリケーション」という大枠は同じなので、かなりの部分で応用が効きます。
悩む暇があるなら、どれでもいいから始めてみる、でいいかと思います。
投稿2020/12/17 02:19
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/17 02:22
0
先日,PHPカンファレンスが行われその際にフレームワークの変化について触れられていました。
PHPを例に見ると2005から2020にかけて様々なフレームワークが生まれ、そして消えていったもの(開発・サポートされなくなったもの)も数多くあります。Laravel自体も2011年頃からリリースされましたがその際は10年後にここまで人気で有名なフレームワークになると予想することも難しかったと思います。
何が言いたいかというとフレームワークは変化が激しすぎます。ただ、2,3年後にいきなり消えるということはあまりないのではないかという個人的な意見ですが何が起こるかは予知できませんし、消えないだろうという記事を良く目にしますが消えたとしてもその投稿者は何の責任も持ってくれません。
そこでカンファレンスでもあったのがフレームワークなどの特定技術から一定距離を保つ必要があるということです。一言で言えばフレームワークに依存しないということになります。Aというフレームワークを使用していてAというフレームワークの開発が終了してしまった時
、Bというフレームワークに乗り換えようと思っても依存してしまっては乗り換えが困難となり、1から作り直したほうがコストを抑えれることもあります。
C,python,Java(servlet,jsp),jsの文法は学習経験有り(サービスやアプリを作ったことはない)
学習コストという面ではまずフレームワークで使用されている言語についてある程度の理解が必要になってきますので、Ruby on Railsの場合はRuby, Laravelの場合はPHP, Djangoの場合はPythonの言語が該当するかと思います。その際に学習経験のあるPythonがあるのならば学習コストはある程度他のフレームワークに比べて少ないかと思います。
あとは、自身の好みかと思います。
投稿2020/12/17 06:11
編集2020/12/17 06:16総合スコア2076
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
まぁ、web系と言っても広いので、どういった方向性の転職先にするのかが学ぶべき言語の方向性に直結します。
で、Web 屋さんになろうと思うのなら、言語選定より前にやることがいくつかあります。
roadmap 上の言語のあたりに進むと言語選定のための条件についてある程度あたりが付くようになるので、転職先にあせて学ぶべき言語が自身で選定できるようになります。
投稿2020/12/17 02:36
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
そんなことより Haskell やろうぜ Haskell!!
低評価で怒られちゃったので真面目なお話
プログラミング言語について
プログラミング言語は様々なものが生まれ、様々なパラダイムを呼び、様々に使われ、様々に廃れていきました。ですが実はどれでもチューリング完全というやつなので表現力は変わりません。極端な話 Python と CSS + HTML5 は同等のプログラミング能力を持ちます。
本の虫: うっかりチューリング完全になっちゃったもの
じゃあお前 C++ のプリプロセッサだけで Rust のコンパイラ実装してみろやっていうのは(面白そうだけど)違う話ですよね。もっとわたしたちは楽して効率的にプログラムをしたいわけです。C 言語だって今でこそ書きにくい言語の代表のように扱われますが、アセンブリを書くのを楽にするため B 言語を生み、それが C 言語になったのです。
ですが C 言語や Java、COBOL、FORTRAN みたいにお硬い言語と対象的になんでも動的に扱う LISP というのがあり、その影響を受けた Smalltalk、Perl、そして Ruby や Python、PHP、JavaScript などが生まれてきました。これらはお硬い言語に比べて自由にプログラミングできるということでプログラマたちに大いに受け入れられ、広まっていきました。
ところがこれら自由の効く言語は小規模なら問題は発生しにくいのですが、大規模な開発をしようとするとその自由が返って仇になることもわかってきました。正しくシステムを動かすために膨大な規約を持ち込み、それをチームで守るというコストを払わなければいけません。これをどうにか自動化出来ないか。そこで最近再注目されているのが ML という言語が持つ「型推論」という機能です。ML に影響に直接の影響を受けた言語は数知れずあり、また間接的な影響も数え切れませんが、型推論を持つ言語が使われ始めています。例えば TypeScript は非常によく使われている例でしょう。Go も最近増えてきました。海外では Rust の事例も多くなってきています。
このようにプログラミング言語は、表現力はチューリング完全の枠から逃れられませんが、パラダイムを何度も変えています。しかし、プログラミング言語というのは 2, 3 パラダイムが違うものを覚えてしまうと後はだいたい機能の予測がついて学習コストが下がっていきます。その 2, 3 が大変かもしれませんが、誰もが通る道ですので通ってください。もし学んだ言語が廃れ、使われなくなったとしてもパラダイムが似ていればほぼノーコストで移ることが出来ます。パラダイムの違う言語を学んでいれば変化に強くなっていきます。
また、コンピューターの世界には「物理の世界に近いほど移り変わりが緩やかである」という法則があります。画面に見えるアプリケーション、特にフロントエンドの世界はとても目まぐるしく流行が変化しますが、それを動かすライブラリ、サーバーのアプリケーション、サーバーを動かす技術、サーバー自体、コンピューターの仕組み……と実際の世界に近くなるほど変化は遅くなります。もし 10 年 20 年通用する技術を身に着けたいのなら基礎の基礎を並行して学ぶことをおすすめします。
フレームワークについて
フレームワークというのは「よくわかってる人が使うととりあえずさっと物ができる便利セット」だと思ってください。つまりよくわかってない人が使うとあんまりさっとできないのです。また、フレームワークを使ってものを作るというのはその下に隠れた仕組みというのを意識できなくなります。わかっている人には便利なのですが、わかっていないひとがこれを使うと時々大変なことになります。まずはフレームワークを使わないやり方を学んで、便利そうだったら使いましょう。
そしてフレームワークというのは一度誕生すると肥大化が止められなくなります。機能がどんどん増えるのです。よいことのように思えるかもしれませんが、選択肢が増えるというのは初学者にとって「何をすればいいかわからない」という状況を作り出します。また、実行時のパフォーマンスにも影響を与えます。「A という機能だけ使いたいのにフレームワーク全部を入れないといけない」ということもよく発生します(密結合といいます)。フレームワークにはこういったデメリットもあるのです。
一度便利そうなフレームワークが世に出ると似通ったフレームワークが各言語で出回ります。しかし似通ったフレームワークなので結局できることは似通っています。根本的に新しいパラダイムに移りたいときにはフレームワークを脱し、自らライブラリを組み合わせるしかありません。もっと言えばライブラリすら書く必要があるでしょう。フレームワークを利用したほうが力が発揮できるのか、それとも新しいライブラリから始めなければいけないレベルなのかはあなたのやりたいこと次第です。ですが、その力を持っておくというのは悪いことではないでしょう。
投稿2021/01/01 13:02
編集2021/01/01 14:14総合スコア2853
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
調べてみたところpythonのdjangoがトレンドなのかな?と思ったのですが、案件数を見るとLaravel、Ruby on railsなんかも学習価値が高そうに見えます。
どれがおすすめでしょうか?
php+laravel>>>python+django>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ruby+rails
です。
これは回答者次第で変わると思うので好みの問題です。
また、2,3年後の転職を考えた場合、上記のようなフレームワークを広く浅くいろいろと触れておくのと、何か一つに絞って学習していくのとではどちらの方が良いでしょうか?
- ひとつに絞る事でその言語に関する調査が得意になり、結果として習得速度が上がります
その調査能力は他の言語に移った時にも活かされます
複数の言語を浅く習得したところで、2~3年後に限らず1年後も半年後も役に立ちません。(年齢にもよるかも)
- 深いレベルで習得するにあたって必ず周辺知識や予備知識の学習(DB・メモリ・ネットワーク・OS知識・セキュリティ関連)が発生し、身に付けた周辺知識は他の言語に移った時に必ず役に立ちます。
周辺知識がある事で他言語の習得速度も上がる可能性が高いです。
■補足
自身のスキルは以下のようなかんじです。
・現在の仕事はプロジェクト管理がメインで、プログラム書いたりはほぼやっていない
・C,python,Java(servlet,jsp),jsの文法は学習経験有り(サービスやアプリを作ったことはない)
失礼ながら現時点でのプログラム作成スキルは0と判断したのでphpを推奨しましたが、質問者のpythonの技術力次第でphpよりもpythonを強く推奨します。
投稿2020/12/17 09:55
総合スコア6426
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
2-3年あるのであれば、
(予測が困難な)未来の需要を気にして特定の言語やフレームワークを選ぶのではなく、
- まずは気になっている/モチベーションのある技術を使ってみる
- 違和感や不満な点が見えてきたらそれを手がかりに他の技術も使ってみる
- 並行して、基礎的な技術(コンピューターサイエンス全般)を学習して裾野と視野を広げる
- DB設計やセキュリティ等、専門的な知識が必要だが、webアプリケーション開発実務にあたっては必須な分野にも手を出してみる
と言う感じ手を動かしていけば、何をしたいのか、何に興味があるかが明確になっていくので、明確になったタイミングで再度選定することをお勧めします。
投稿2020/12/17 05:25
編集2020/12/17 05:26総合スコア18727
0
(今更感強めですが、)逆転の発想してみましょう。
もし、DjangoもRoRもLaravelも数年後廃れるとしたら。
質問者さんはどうしますか?
また他のフレームワークを探しますか?
Nuxt.jsでしょうか?Svelteでしょうか?
それらももし廃れるとしたら。
これらは否定も肯定もすることはできません。
どうすればいいのか。
一つだけDjangoにもRoRにもLaravelにもNuxt.jsにもSvelteにも共通することがあります。
それは、**「自分に有効なプログラミング学習方法」**です。
正直、「自分に有効なプログラミング学習方法」が定まってるなら、たとえ使っている言語・FWが廃れたとしても学習しなおすことが可能です。
「学習しなおす時間がもったいない」と思われるかもしれませんが結局どの言語・FWでも情報のキャッチアップは必要不可欠です。その対象が変わったと思えば造作もないと思います。
まずはどの言語・FWでもいいので「自分に有効なプログラミング学習方法」を探してみるのはいかがでしょうか?「一番最初のFWがえらべない!」というなら、それぞれ味見をするのもありだと思います。
投稿2021/01/01 07:42
編集2021/01/01 07:43総合スコア10429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
... 現在の仕事はプロジェクト管理がメイン ...
そこを足かかりに、なにか作ってみてはいかがでしょう?
今の仕事でつかっているツールで不便におもっていることとか、こんな機能がほしいとか があると思います。
それは、現時点の自分の知識で実現できるか?
なにか不足しているものがあれば、それを補うにはどんな知識・技術が必要かを調査して進めていけばよいと思います。
その過程で迷った時こそが、Teratail で質問をする時です。
まだ一歩も歩み出していない時点で、
右足から踏み出すか?左足からふmに出すか?どんな靴を履くか?リュックに何をつめていけば良いか?
などを質問しても、帰ってくる回答は本当に役立つことは少ないと思います。
投稿2020/12/18 15:40
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Web系エンジニアへの転職を狙っている、ということであれば、最低限以下の知識は必要かと思います。
- htmlの基本知識
- JavaScriptの基本知識
- cssの基本知識
これらはいずれも、画面作成時にある程度検索するための手がかりとなるキーワードは知っていないと厳しいと思います。
そのうえで、バックエンドのプログラミング言語(Java、C#、Python、Go言語etc)を選定する形になるでしょうか。
バックエンドの言語に関しては、現在よく使われている言語はいずれも3年後には廃れている、ということは考えられないため、基本は押さえておいた方がいいです。
フレームワーク(JavaならSpringBoot)はその時の流行りもあるのでどれを学ぶべき、とは一概には言えないのですが、根底にあるのはプログラミング言語なので、どれか一つをしっかり学んで基本を身に付けるのをお勧めします。
データベースへのアクセス知識も必要なので、SQLも覚えたほうがいいですね。
データベースによって多少の違いはありますが、標準SQLはありますので、基本的なデータ操作が出来るようになっておいた方がいいです。
投稿2020/12/17 08:09
総合スコア200
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。