質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

9回答

3449閲覧

初心者からの脱却について

Sekiyu_

総合スコア35

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

7クリップ

投稿2016/12/11 15:03

###前提・実現したいこと
私は高等専門学校の情報科に通う2年生です. 情報科に入った事をきっかけに, 一年前からプログラミングの勉強を始めたのですが,うまくいきません.

初めはJavaを少し学んでオブジェクト指向や基本的なデータ構造なんかを知りました. その後「Javaを学んだのだからAndroidのアプリケーションを作ろう!」と思いたち, Android Studioをインストールし参考書を読み基本的なことはできるようになりました. しかしいざ自分で作ろうと思うと作れませんでした. 理由は開発に関しての極一部の表層的な事は理解していても知らないことの量が膨大であったからです.

次にC#を学びました. そしてWPFというものを知りそれを用いて開発してみようと思いいろいろとやってみしましたがXAMLの仕組みやVisual Studioの使い方等, またもや知らない事の量が膨大で断念しました.

このようにある分野の上っ面のところだけつまみ食いするような学習を続けていたらあっという間に一年経ちました. 一年もあれば多少上達するかと思いましたが, 何か作り上げるわけでもなく, 40行以上のコードを書いたことすらありません. Twitterなどの同年代や先輩はどんどんと上達し自分は未だ初心者のまま路頭に迷っています. 私にも作りたいものや使いたい技術があります, しかしそれを使う前に必要な基礎的な事柄の膨大に量を前に挫折してしまいました. 皆さんは初心者からある程度の実力を得るまでにどのような工程を踏んだのでしょうか?初めての投稿で文章も拙く, 投稿の内容もサイトの本質と異なっていますが回答をいただけると幸いです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答9

0

こんにちは。

理由は開発に関しての極一部の表層的な事は理解していても知らないことの量が膨大であったからです.

いや、それは理由にならないです。全てのプログラマに取って「知らないことの量が膨大」ですよ。私も永遠にその状態です。コンピュータ技術の開発に携わっている人は多いですから、その人たちが新たに付け加える知識全てを学ぶなんて不可能ですよ。

既に学んだことを核にして足りない部分を少しづつ補うことで開発できるプログラムを増やして行きましょう。
全てのプログラマはそのようにしてプログラムを開発できるようになるのですよ。

投稿2016/12/11 17:06

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 06:52

回答ありがとうございます. 新しい技術の量は得られる知識の量よりも多いのですね... 私の思っていた考えと根本的に違う意見で, 腑に落ちました. 今の知識でできる開発をし, 少しづつ知識を拡張していきたいと思います.
Chironian

2016/12/12 07:01

地道ですが、それがベストと思います。 頑張って下さい。
guest

0

あなたは既に「私は知らないと言うことを知っている」(無知の知)だけでも多くの自称知識人に勝っています。あなたに足りないのは知への探求です。

はっきり言います。Javaの基礎を学んだ程度でAndroidアプリは作れません。C#の基礎を学んだ程度でWPFでのデスクトップアプリも作れません。発想が逆なのです。(Java製の)Androidアプリを作るにはJavaの基礎知識が必要不可欠であり、同じく、(C#製の)デスクトップアプリを作るにはC#の基礎知識が必要になるということです。各言語の基礎知識は必要条件であり、十分条件ではありません。「○○という言語を学べば簡単に○○が作れる」というフレーズを聴くかも知れませんが、あれはです。真の意味は単に他の言語よりも作りやすいと言うだけで、その言語の基礎を学んだらすぐに何でもできるなんて事はありません。

さて足りない物は知への探求と言いましたが、どういうことかというと、そこで止めるなと言うことです。わからない言葉、わからない概念が出てきたら、そこで「自分にはできない」で終わってませんか?そうであれば、絶対に何もできません。「自分が何を知らないのか?」がはっきりしているのであれば、それについて学んでください。WPFで書こうとしたら、XAMLなるものの知識が必要で、XAMLとは何かと言うことを調べたら、XMLベースだと知って、となったら、XMLとは何か学ぶことから始めてください。遠回りのように思っても一つ一つ知識を積み上げていくことが最大の近道です。

プログラミング関係は分野も広く、また、常に新しいことが発明されていっています。「知らないからやらない」は言い訳になりません。「知らないからこそやる価値がある」ぐらいの気迫がないと、あっという間に時代遅れになります。これだけ学べば喰っていけると言う世界ではありません。いや、喰ってはいけないことは無いですが、同じルーチンワークを繰り返す何の面白み無い毎日で、いつもやっている技術が廃れたとき、会社からは君要らないで終わります。

一生学び続ける必要がある分野だと思ってください。あなたは今、その入り口に立っただけです。まだ、入り口なのですから、仕事では無いのですから、別に今すぐできるようになれなんてことは無いだけマシだと思ってください。膨大だから無理…と思うのでは無く、まだ、こんなに面白そうな事がこの世界にはたくさんあると思ってください。


でも、何か目に見える成果が無いと…というのは人の常です。自分が成長している!って事がわからないとつらい物があります。作りたい物を作るのは良いことなのですが、ちょっと、最初のハードルが高すぎるのではと思ったりもします。もうちょっと簡単な物から挑戦してみるのがいいかと思います。最終的に何を作りたいかを教えてくれたら、具体的なアドバイスを…きっと他の人がしてくれるかと思います。

投稿2016/12/11 22:31

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 09:52

回答ありがとうございます. 私にとってとても腑に落ちるものでした!ありがとうごさいます!
guest

0

このようにある分野の上っ面のところだけつまみ食いするような学習を続けていたらあっという間に一年経ちました.

そろそろ上澄みだけでなく技術の深掘りが必要になってきているのかもしれませんね

一年もあれば多少上達するかと思いましたが, 何か作り上げるわけでもなく, 40行以上のコードを書いたことすらありません.

どんなことであれ上達しようと思ったら「上達しよう」という意識を持ってあたらないと、なんとなくやってなんとなく上達したというのは無いと思いますよ
もちろん作業として覚えてしまってそれができるようになったというのは別の話です

どんなジャンルであれ、

  • 本に掲載されているコードを全部手打ちして完成させてみる

みたいなことを10冊くらいやってみるのもいいかもしれません
その気になれば高等専門学校という環境は素材がいくらでも転がっているとても素晴らしい環境ですよ
本だって買わなくても図書館に行けばいろいろなジャンルのものがゴロゴロありますよね
今居る環境をフルに使わないと勿体無いです

インターネットが普及する以前は、プログラムが掲載された雑誌がいくつもありそれらをひたすら入力するという僧の修行のようなこともありましたが、今は短いコード片でもコピペで済ませたりIDE環境がコードスニペットとしてサポートしてくれるので、作業者としてはよい世になりましたが学習者としてはどうなのかなと...
コードをひたすら入力するという不毛とも思われることにも地力を養うには役には立ったのではないかなと思います

投稿2016/12/11 18:43

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 07:26

回答ありがとうございます. 現時点で足りていない知識を拡張して, 写経もやってみようと思います!
guest

0

知らないこと、分からないことはゴマンとあります。
それを「知らないから」と思っていては絶対に前には進めません。

知らないことは誰にでもあります。というか、全知全能の神でもない限り、すべてを知っている、という人は皆無です。
上を見ても絶望するだけです。

一度自分自身を振り返ってみてください。
1年間やってきたことを思い出してみてください。

中々上達できないと言われていますが、1年間勉強を続けてきたことに変わりはありませんし、それすらできない人もいます。

「今の自分ならできること」で作りたいものを作ってみてください。
絶対になにかしら気づきが得られるはずです。
そしてその得られた気づきを次に活かしてみてください。

人は「できること」しかできません。
でも、なにか行動を起こせばなにかに気づき、成長します。
すると次の挑戦では少しだけ大きなことができるようになります。
結局のところこれの繰り返しです。

いきなりGUIアプリケーションを作るのが大変であれば、コマンドラインで数字を入れたら計算を行わせるような簡単なものでもいいと思います。
最初はつらいかもしれませんが、こうした小さいことを繰り返しているとあるとき突然、「あれはそういうことか!」と気づく瞬間が絶対にあります。
すると次からはそのことがとても簡単に感じると思います。

自分も、そうした経験を何度も積み重ねてきました。
プログラミングはとても楽しいものなので、ぜひがんばってください!

投稿2016/12/11 17:33

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 06:56

回答ありがとうごいます. いろいろ触った一年間も無駄ではなかったのではないかと思い始めました. 今できることから頑張りたいと思います!!
guest

0

ベストアンサー

一言で言えば、まんがでわかる絵の上達する人しない人を読んでね。
Androidのアプリを作るにおいて、Javaの勉強ってのはこの漫画の左側の知識を指しています。
(今の知識はアプリ開発を続けていれば遠い未来で役に立つでしょう)

脳科学の世界では手続き記憶内部モデルという定義があります。
ざっくり説明すると、下記のような手順を踏む事で体が覚えたという状態を作り上げます。

  • 出来ないけど試行錯誤しながら頑張る
  • 出来ないことへのストレスが脳内に蓄積される
  • 睡眠時間中、脳は蓄積した記憶を定着させる
  • 翌日体が覚えた状態になり、出来ない事が出来るようになる

人間の成長という分野に於いて、ほぼ全ての事がこれで説明出来ます。
プログラミングスキルに於いても例外ではありませんし、何人たりともこのプロセスを避けて通る事はできません。


あっという間に一年経ちました

世の中には上記の様なドM・・・もとい、たまたまプログラミングが好きで好きで、
夢中でやってる間に上記プロセスをこなしている人間が中には居ますが、
大多数の人間は状況に流されたまま訓練が続かずに挫折します。

私を含む大多数のプログラマは逃げられない状況に飛び込んで嫌々こなしたわけです。
例えば何も知らない新卒が「Java3年目の経験者」としてプロジェクト現場に叩き込まれて、
この作業全く分からんけどやらなきゃ帰れないから徹夜しながら頑張ってこなして覚える…とかね。

まぁ、社会人になるとそんな時間取れないでしょうから、作りたいものは二度と作れないでしょう。
どうしても作りたいなら今のうちに毎日ストレス溜め込みながら頑張って実装を続けましょう。


しかしそれを使う前に必要な基礎的な事柄の膨大に量を前に挫折してしまいました

挫折?いいんじゃないですか?
上記の通りです、単純に起き上がる回数を増やせば解決するでしょう。

プログラミングに於いては、ライブラリの使用方法の勉強に始まり、また別のライブラリの使用方法の勉強に終わります。
一つ一つの積み重ねは一生涯掛けて養われ、今覚えた知識はいずれどこかで技術同士を組み合わせる事で発揮されます。

因みに作りたいものが1日程度でサクッと作れる場合
20回くらいは似たモノを作らないとこの境地には到達出来ません。
作る度に別の所で躓くので、この人知ってるわーというような人は大抵どこかで20回以上同じような失敗やエラーと格闘しています。


私にも作りたいものや使いたい技術があります

この動機は原動力にもなりえますが苦痛を伴います。
チュートリアルや写経や四則演算なんてやりたくないでしょ?
急がば回れで、基礎的な事を沢山こなして身につける必要があります。

質問者さんがなまじ頭が良くて器用だから、何もしなくても今までなんとかなってきましたが、
プログラミングは三歳児が思い通りに動かない手足を操っておもちゃ同士を組み合わせる作業に似ています。
電子の世界で作業するには根気が必要で、質問者さんに足りないのはその根気です。

まずは騙されたと思ってチュートリアルを続けてください。
いつか点と点が紐付いて、つまみ食い勉強が実を結ぶ日が来ます。

投稿2016/12/12 04:08

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 10:03

とても丁寧な回答ありがとうございます. 意見の通りチュートリアルから始めてみようと思います, ありがとうございました!
miyabi-sun

2016/12/12 10:27

BAに選んでくれてありがとうございます。 掛けた時間というのは意外と裏切らないものです。 知人に離されたように錯覚しているかもしれませんが、そんなことありません。 独学だと変な癖が付いて伸び悩む事はよくあるので意外とすぐに抜き返せるものですし、 実際に会話してみてソースコードを読み込むと、「あれ、ここの処理よくわからないからごまかしてるな?」というほころびがいくつも見えるものです。 Sekiyu_RODさんの掛けた1年も同様で、成果という形で目には見えてないけれど着実に他の人に負けないものが磨かれています。 他の人のアドバイスにもあるように、分からないものを一つずつ潰していけば作りたいものも出来ますし、それが自信に繋がります。頑張ってください。
Sekiyu_

2016/12/12 14:43

ありがとうございます, 頑張ります!
guest

0

他の方達が核心に迫ったとても良いことをおっしゃってますね。
ちょっと厳しいことをいいます。

文から垣間見える膨大断念という単語。
あなたは適当な理由をつけて自分に言い聞かせているのではないでしょうか。

色々な言語を触りたいけど、時間がないから広く浅く勉強しオールラウンドな人間になりたいだとか。
半端な知識でいざ実践しようとすると自分の理想を実現するには壁が高いから諦める。

恐らくこのままズルズルと社会に出るまで諦めてしまうでしょう。

提案ですが、自分を一度追い込んでみてはいかがでしょうか。
例えば、学生さんならバイト(開発)をしてみるでもよいし、
周りを巻き込んでプロジェクトを立ち上げるでもよいと思います。
社会的責任感をお持ちなら、周りに迷惑をかけまいと自然と向上すると思います。

私は以前、
開発をしようと思っていましたが、
どこから手を付けてよいか分からなかった時に自動化の話があり、
機械に精通している人間ということで、私一人にほぼ丸投げされました。

私は人に喜んでもらうことが好きなので、
何とかしようと毎日勉強していました。
電車でも風呂でも食事中でも。

勉強していたある日、
今までわからなかった事がパズルが解けるように分かるようになり、
あれも自動化しよう、これも自動化しようとやっているうちに
全社トータルで自動化成果の7割強を自分一人で占めていました。

そこから楽しくてしょうがなくなり、今に至ります。

なんでもよいです。
きっかけを掴んで下さい。

投稿2016/12/12 01:25

mukkun

総合スコア882

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 10:00

回答ありがとうございました. プロジェクトを立ち上げるですか...友人を誘ってみようと思います.
guest

0

よく間違われることですが、プログラムを作成するという点だけでいえば、想像力はそれほど必要としません。プログラムとは手順を書き記したものであって、真に重要なのはその手順を想像して創造する作業なのです。
例えば最近多い Web 小説(いわゆる「なろう」系)に置き換えても同じ。
文章を書くだけなら、日本人であれば誰だってできるでしょう。日本語の読み書きは、日本で教育を受けた人であればほぼ100%できるのですから。でもそれだけでは「小説」は書けませんよね。お話を想像できなければ小説にはならないのですから。

何か作りたい。

まずその「何か」をきちんと想像(妄想といってもいい)して、その上でそれを「どうやれば実現できるだろう?」と考えて手順を起こし、当てはめていくのです。
ゴールが決まっていないのに、走ることも、ダイエットすることも、あるいはゲームをすることも、なんだってできませんよね。まずはゴールを(別に稀有壮大なゴールである必要はありません)決めることからです。

投稿2016/12/12 01:16

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 09:58

回答ありがとうございました. ご意見の通り, 目標設定からしてみたいと思います
guest

0

web関連、自動作業化、自動生成、等
このあたりに関連していて、自分の趣味に役立ちそうなアプリのアイデアを考えて作ってみてください。

だいたいこの関連はどのお仕事をする上でも役に立ちますし、一度始めると結構奥深いです。
なにより、ある程度進めると、後は勝手に自分でやりたいことが増えてきます。

重要なのは「実際に使う」アプリです。
人によりますが、純粋に勉強目的だとモチベーションが続かないですし、使わないものはどうしてもクオリティが出ません。
「動けばおしまい」になりがちで、その先の深いところまで到達できません。
実際に日常的に使い続ける事で、思いもよらなかったバグに遭遇したり、使い勝手の改善のための高度な処理の話が始まります。

投稿2016/12/12 01:15

編集2016/12/12 01:22
ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 09:55

回答ありがとうございました. 一度チャレンジしてみようと思います.
guest

0

自分の思い通りに動作するものを作成できるプログラミングは楽しいです!
楽しいものができるようになるための勉強も楽しくできたらいいですね。

プログラミングに限らず何事においてもあてはまると思いますが、
上っ面だけつまみ食いしていても「できるようになった」気がするだけで、
本質的には何もできていないと思います。

確かに知らないことの多さに圧倒され、茫然としてしまうかもしれませんが、
初心者はとにかく手を動かすことをやめてはいけないと思います。
また、例え上級者になったとしても「知らないこと」というのは尽きないと思います。
なので知らないことを端から端まで勉強しようとは考えずに、
今自分がやりたいことに関してだけを少しずつやっていきましょう。

何も分からない状態から個人で勉強するにはかなりの労力が必要だと思いますが、
高専生なら周囲の友人などに声をかけて一緒に勉強したらどうでしょうか。
一緒にできる人が近くにいるとわからないことなどを共有できるし、
なによりモチベーションを持続できると思います。

私は 3 年ほど前から C# を初め、同時に WPF を勉強し始めましたが、
WPF に関して当時は日本語の情報がとにかく少なくて、
web を検索しても見つからないか、あっても英語のブログなどで、
初心者にとってかなり敷居が高く感じられました。
それでも少ないながらも見つけた日本語のブログや、
SlideShare などで公開されているスライドを参考にし、
時には英語のサイトを見て勉強していました。
英語のサイトはおそらく半分も中身を理解できていなかったと思いますが、
ソースコードだけは英語も日本語も関係ないので、
英語本文というよりもそういったサンプルコードを眺めていたと思います。

私も初心者の頃は何をすればいいのかさっぱりわからなくて途方に暮れることもありましたが、
ひたすらアプリを作成していくうちにいろいろできるようになってきました。
VC++ なんかは特に「10 日でできる」みたいな学習本があるので、
そういう書籍を読みながら実際に手を動かしながら勉強できますが、
WPF に関してはそういう初心者向けの学習本が見当たらなくて苦労しました。
初心者のうちはどんなに小さなアプリでもいいのでたくさん作成して、
いろんな機能を実際にコーディングして体験して上達していくのかなと思います。
「10 日でできる」という類の書籍もこれが狙いだと思います。
私も作成したいアプリがいろいろありましたが、
いきなりそのアプリを作成することはできなかったので、
そのアプリに必要な機能をひとつひとつ切り抜いた小さなアプリをいくつも作っていました。

私が初めの頃に作成したアプリは本当に小さなものばかりで、
16 進数でアドレスを計算するだけのアプリ、簡易電卓アプリ、
色コード一覧アプリ、キーボードランチャーなど、
どれも単一の機能しか持っていないシンプルなもので、
どこかで見たことがあるようなアプリばかりでした。
それでも乗り越えなければいけない壁はいくつもあり、
壁に当たる度にそれなりに大変な思いをしましたが、とにかく調べて、
わからない部分だけを切り抜いたサンプルアプリを作って動作確認をして
ちょっとずつできるようになっていきました。
作成したものは小さなアプリばかりですが、そのひとつひとつが完成する度に達成感を味わえたので、
これがモチベーションを維持できた理由でもあるかもしれません。

XAML もこのときから初めて触れるものでしたが、
HTML タグを自分で入力しながら web サイトを制作するという経験があったので、
こちらのほうはすんなりと入っていけたかなと思います。
それでも Style や Trigger など、XAML 特有の機能については
今でもわからないことだらけで、いつも web を検索しては先人の情報を参考にしています。
また、XAML を勉強するならカスタムコントロールを作ったらいいのでは?と思い、
MSDN に載っている標準コントロールのスタイルをカスタマイズした例を参考にしながら
標準コントロールひとつひとつを自分なりにカスタマイズして XAML を勉強しました。
今では一通りのコントロールをカスタマイズし、
オリジナルの WPF テーマを作成して実際に運用しています。

とりあえず小さなアプリをいくつも作って少しずつ勉強することが大切だと思います。
継続は力なり、です。頑張ってください。

投稿2016/12/12 00:33

twyujiro15

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sekiyu_

2016/12/12 09:53

回答ありがとうございます. 楽しむということを失念していました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問