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

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

ただいまの
回答率

90.83%

  • C

    3341questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3134questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • OpenCV

    927questions

    OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

  • アセンブリ言語

    101questions

    アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

  • FPGA

    15questions

どうしたらよいかわからずに途方に暮れています。

解決済

回答 8

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 1,019

carnage0216

score 104

プログラマの皆様にご相談したいことがあります。
この場をお借りして書かせて頂きます。
最初はpcのデータシートから
カメラの映像のメモリに働けるC言語プログラムを書きたいと考えていました。
問題はosが絡んでくるためデータシートを見るだけでは意味がないという事です。
opencvの関数を調べて標準ライブラリ関数にしていますが、なんだか答え合わせをしているだけでつまらないと思ってしまうことが多く憂鬱です。
一から、せめて標準ライブラリ関数からpcのカメラにアクセスしたり、カメラの映像と保存した画像を比較して検出したりしたいのですが、自頭が悪いため何も出来ません。
私は自分で自作できないものを使うのを嫌います。過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。
大変くだらない理由ですが。
プログラミングは大好きですが、なんだかモチベーションが下がるばかりで悲しくなります。
所詮、自分は誰かの作ったツールを使うことでしか、作りたいものを作れないと思うと虚しくなります。
ツールを使いこなせていませんが。
opencvを使うにしても、一からLinuxなどのosを考慮した画像処理のプログラムを作ってみたかったです。何を参考にしてよいかはわかりません。
できもしない事を考える毎日がとてもしんどいです。
ここは質問するサイトなので低評価がつくのは仕方ありません。
今も標準ライブラリ関数の使い方を勉強していますが、何か違うのではないかと思ってしまいます。
エンジニアの方がどうやってopencvのような画像処理ツールを一から作ったのか興味があります。
osを考慮しながらハードウェアのデータシートやアセンブリ命令から画像処理特有の関数を作っていきopencvができたのかななんて事を考えています。エンジニアはどうやって普段から無いものを元からあるアセンブリ命令や標準ライブラリ関数で作ったのかわたしには見当もつきません。それ故に誰かが作ったものや、ここで皆様の力を頼りにしてばかりいます。
数年前はfpgaで画像処理やカメラアクセスなども自作しようと考えたのですが、金銭的な問題や技術的に限界があったため断念しました。
やりたいことはたくさん出てくるのに何から始めればよいかわからず困り果てています。

<編集4/24>
あの解答していただいたエンジニアの皆様は学生時代はどのように送られていたのでしょうか?
学生時代で学んでいた時期と会社に就職した後で学んだこと、どちらが勉強になることが多いでしょうか?
また、自分で解決できないときは上司の方に相談できたのでしょうか?
私個人として大学には行っていませんが、大学生活で学べることは時間的な意味で短いと思います。そのため学べることに限界があると思います。
なので就職した後のほうが勉強なることが多かったり、大学や専門学校で学んでいた時よりも勉強になることやスキルアップにつながることが多いのではないかと思い質問しました。
また、会社の仕事とは別に個人で作りたいものがある際に壁にぶち当たった時、会社の人間や同僚にアドバイスなどを問うことはあるのでしょうか?あるいはそのような経験はありますか?

どうかよろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • YomogiKOBO

    2018/04/24 04:56 編集

    ”<編集4/24>”追記に関して、様々な質問、意見を求められておられますが、ざっくりな内容(個人情報保護の観点から)で体験談ぽい話になることだけお気を付けください。

    キャンセル

  • YomogiKOBO

    2018/04/24 15:53

    既にベストアンサーもついていますので別トピックとして提起されてはいかがでしょうか。新規トピックとするのであれば本質問のURLもつけておくとよいかもしれません。

    キャンセル

  • carnage0216

    2018/04/24 18:44

    そうさせていただきます。どうもありがとうございました。では、新しい質問を立ち上げさせていただきます。

    キャンセル

回答 8

+12

今も標準ライブラリ関数の使い方を勉強していますが、何か違うのではないかと思ってしまいます。

結局アセンブラで書こうとも、CPUやその上の命令体系は「他人が作ったもの」ですよね?料理なら「種を植えることからはじめる」こともできなくないかも知れませんが、コンピューターについては個人レベルで同等のものを作るのは技術的・資金的にハードルが高すぎます

以前にも書いた言葉ですが、下のレイヤでなく、さらに上を見てください。既製品のレゴブロックを組み合わせることで素晴らしい作品を組み上げるクリエーターのように、ライブラリで提供される関数などを部品として、さらに大きなものを組み立てていくのも、間違いなくプログラミングです。

やりたいことはたくさん出てくるのに何から始めればよいかわからず困り果てています。

思い込みをかなぐり捨てて、使えるものは何でも使ってまずは形にしてみることからはじめましょう。座学だけで車の運転ができるようにならないのと同様、実際にやってみなければプログラミングはほぼ身につきません

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+9

私は自分で自作できないものを使うのを嫌います。

どこかで妥協して下さい.

先人たちの成果にタダ乗りするのが嫌であれば, まずは「0」や三平方の定理を発明し, そこから2000年掛けて離散フーリエ変換理論を完成させて下さい. (つまりは不可能です)

と言うくらい, 現在の情報理論は高度な数学的・工学的な知識・経験の積み重ねの上に成り立っており, 皆その恩恵に預かっているのです. ですから, 先に進みたければどこかで妥協した上で, 見様見真似でいいですから自分で何かしらを作り上げる努力をすべきです.


エンジニアの方がどうやってopencvのような画像処理ツールを一から作ったのか興味があります。

まず, 数学者が基礎理論を論文として発表し, その内容の確からしさ・有益性が確かめられた後にその応用としてハードウェアが設計され, ソフトウェアエンジニアが設計書を描き, その内容に従ってプログラマーが逐一コーディングすることで作られています. その際には日進月歩で更新されていく理論の高度化を加味してインクリメンタルに少しずつ新たに機能を追加していきますから, いわば人類が画像処理ツールを作り上げたのであり, 換言すれば誰か一人の手によって作られたわけではありません.

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 20:35

    今の私には妥協という行為は必要と同時に、できることを行います。
    本当にありがとうございます。

    キャンセル

  • 2018/04/18 23:18

    >>人類が画像処理ツールを作り上げた
    自分の考えがいかに愚かで、無謀なことがわかりました。
    なんだかプログラマの世界は素晴らしいですね。
    どうもありがとうございます。

    キャンセル

+9

漠然とした話になりますが。

私は自分で自作できないものを使うのを嫌います。過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。

ここに答えがあるんではないかと思います。

要点は3点。

  • 先人への敬意を忘れない
  • 目標設定を適切にしましょう
  • プログラミングを楽しんでください

人間一人の力は限られています。何事をなすにも先人の英知の積み重ねのもと、新たな何かが生み出されています。
Windowsしかり、OpenCVしかり、なにがしかのプログラミング言語しかり。
それはプログラミングに限った話ではなくて、でっかい話文明そのものにも同じことが言えます。
僕なんかガスコンロ無しに火を起こすこともできない。
なので、まずは自分自身にできることの小ささと、先人への敬意を忘れないようにしましょう、というのが一点目。

仕事をする上でも、何かのスポーツをやるのでも、目標設定は大事だと思います。「海賊王に俺はなる!」と言える人間は現実にはいません。明日からメジャーリーグに行ってイチロー並の活躍をすることもできません。
carnage0216さんの目標は、はたから見ていて幾分高めだなぁと思います。それはとても苦しいことだと思います。あれもできない、これもできないでは、気が滅入るのも当然です。

ではどうしたらいいかと言えば、できることから始めるしかありません。
まずはHello Worldから。次にちょっとだけ複雑な何かをつくる。その次はさらにもう少しだけハードルを上げる。
そうやって少しずつできることが広がるのは、本当に楽しいものです。それがプログラミングという知的好奇心を満たす行為です。

僕は仕事を通して約16年ほどの時間を楽しんだり苦しんだりして、teratailで回答側に回れる程度には経験を積んできました。
16年でもこの程度の凡人ですが、好き好んでプログラミングで生計を立てています。
carnage0216さんはどれだけの時間を費やしましたでしょうか。teratailで質問し始めた程度の時間なら、まだまだプログラミングの深淵を垣間見えるには早い。
心持ちとやり方を少しだけ軌道修正して、もう少しだけがんばってみてはいかがでしょうか。

以上、ポエムでした。減点上等。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 20:33

    本当にどうもありがとうございました。
    >>先人への敬意を忘れない
    この言葉に何か救われた気がします。
    支離滅裂でわがままばかり言っていた自分には忘れかけていたことでした。
    助けてくれる人に無礼にしていたようで、なにか大切な何かを忘れて焦っていました。

    キャンセル

+7

まあ、なんとなくわかります

「自作できないものを嫌う」というよりは

「理解できてないものを部品にして作るのが不安」
「自分の制作物の中に自分の理解できないものが
含まれていると自分の制作物でない気がしてしまう」
って感じでしょうか

デジタル・アナログ問わず制作なんて多かれ少なかれ共同作業です
全く完全に自分で作り上げたものなんてないです

自ら進んで車輪の再発明のようなことはすべきではありません

ツールを使うときにはそのツールのルーツと進化の経緯から
そのツールの目的・抱えている問題、強いては哲学や思想を知ることで
その不安を多少なり解消できるかもしれません

自分もFlashやってた頃は物理シミュレーションとか画像フィルタを自作したりとかもしてましたが
知ったことは「やはり選ばれているものには選ばれるだけの理由があるんだな」ってことぐらいです

長い歴史と多くの人の改良を経たものと同様のものを自作する試みの労力は多くの場合水泡に帰します

全くの無駄だったってことはなかったにしろ、まあ、ほどほどにした方がいいですね

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 20:03

    >>「理解できてないものを部品にして作るのが不安」
    「自分の制作物の中に自分の理解できないものが
    含まれていると自分の制作物でない気がしてしまう」
    って感じでしょうか
    たしかに、そのような気がします。

    キャンセル

checkベストアンサー

+4

最近は自動化がもてはやされていますが、単純でつまらないことは人がやらなくても良いという思いから来ています。

プログラミングは全てが電子データなので、自動化が古くから進んできました。

C++のテンプレートなんかは明確で、本来型ごとに同じようなコードを大量に書かないといけなかったものを、コンパイラが勝手に展開してくれるようになりました。

コンパイラなどは翻訳機です。
CPUごとに異なる方言を人間が全て覚えていなくても良いように、同じことを何度も書かなくても良いように、作業を手伝ってくれます。

アセンブリ言語や機械言語で書くことが理解の本質ではありません。
OpenCVを機械言語で書けることがOpenCVを理解した証とは到底思えません。

機能ごとの構造化を意識して、階層ごとに理解してください。


何のためにプログラミングをしているのでしょうか。

趣味でしょうか。仕事のスキルのためでしょうか。

よっぽどの仕事でない限り、アセンブリ言語を書けるというのは価値はありません。
コンパイラがやってくれるからです。
コンパイラより早くうまく仕事ができない限り、意味がありません。

そのあたりのことも考えてみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/19 11:32

    >>アセンブリ言語や機械言語で書くことが理解の本質ではありません。
    OpenCVを機械言語で書けることがOpenCVを理解した証とは到底思えません。
    プログラミング というものをちゃんと理解できていませんでした。というか何か大切なことを忘れていました。
    どうもありがとうございます。

    キャンセル

+4

こんにちは。

私は自分で自作できないものを使うのを嫌います。過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。

自動車や電車には乗らないのでしょうか? 船は? 飛行機は?
自動車なら不可能ではないかもしれませんが、その他の乗り物は個人で作るのは無理ではないでしょうか?

ソフトウェアにしても、アセンブラをハンドアセンブルで作るのでしょうか? そして、そのアセンブラで原始Cコンパイラを作り、その原始Cコンパイラで普通のCコンパイラを作るのでしょうか?
ブートストラップ問題と呼ぶそうです。個人でチャレンジすると、もしかしたら一瞬話題になれるかも?

でも、既にあるものを再開発するって虚しくないですか?
寧ろ、既にあるものをどしどし利用して、今までにないものを作るのはどうですか?
コンピュータ・プログラムは腕一つでそれに挑戦できる非常に楽しいものと思いますよ。

エンジニアの方がどうやってopencvのような画像処理ツールを一から作ったのか興味があります。

きっと、画像処理に興味を持った人が、多数の画像処理アルゴリズムを学習し、それをコンピュータで処理するにはどのようなデータ構造で表現するのが良いか検討し、試行錯誤しつつ「ちょうど良い」データ構造を作り上げたのだろうと思います。
データ構造が決まれば、アルゴリズムを1つ1つ実装し、速度を上げるためにSIMD命令を使える部分はどしどし使ったのではないかと思います。

元々OpenCVはC言語で書かれていましたので、最初の開発は恐らくC言語だったのではないかと思います。(恐らくアセンブラではないという意味で)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 23:16

    どうもありがとうございます。少しずつですがモチベーションが上がってきました。
    本当にどうもありがとうございます。

    キャンセル

+2

単純に興味から回答します

私は自分で自作できないものを使うのを嫌います
過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。

とのことですが、既存の製品であるWindows等のOS、はたまたその更に低レベルで動くBIOSやEFIといったものを使う(利用する)ことにはためらいや嫌だとは思わないのでしょうか?

そこにためらいがないのだとするなら、OpenCVやCMake, Visual Studioもそういったものとして考えるのが良いと思います

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 23:20

    >>既存の製品であるWindows等のOS、はたまたその更に低レベルで動くBIOSやEFIといったものを使う(利用する)ことにはためらいや嫌だとは思わないのでしょうか?
    そこまで気にしていませんでした。そこはどうしようもない部分なので諦めて使わせていただいています。

    キャンセル

-1

一歩ずつ歩かないからそういう事になるんだよ…。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 20:34

    そうです。私が行っていた一歩が大きな間違いを生んでいました。反省して一から仕切り直します。

    キャンセル

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

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C

    3341questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3134questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • OpenCV

    927questions

    OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

  • アセンブリ言語

    101questions

    アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

  • FPGA

    15questions