• 締切済み

オープンソースの勉強について

プログラミングを学んでいるエンジニア志望の学生です。 学んでいる言語はHTML・CSS・JavaScriptなどフロントエンドが多いです。 ただ、JavaやPerlなどバックエンドの言語も学びたいと考えています。 ここではとりあえずJavaを例にとります。 ドットインストールなどを利用して、言語の最低限の文法は分かるようになったものの、特別Javaで作りたいサービスがあったわけでもないので、これからどうしたものか閉口しています。 実際にエンジニアとして活動している知人に相談したところ、 「オープンソースがたくさんあるので、それを使えば学習しやすい」 といわれました。 私はオープンソースの存在自体は知っていますが、実際にJavaのオープンソースを触ったことはありませんし、オープンソースでどのように学習すればよいのかもわかりません。 オープンソースで学習する場合、ソースを読んで理解して、書き写して実行に移したりすればよいのでしょうか? それで、最終的に「~~のようなプログラムを実装せよ」という問題文を見ただけで、オープンソースのあれとあれを使えば実装できる、と発想できるぐらいにまで習熟すればよいのでしょうか。

  • Java
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

こんなトコロで質問して推測ゲームするよりその友人にどういう意図で言ったのか問いただすのが一番良いと思います。自分はエスパーではないのでその友人がどういう意図で「オープンソースがたくさんあるので、それを使えば学習しやすい」と言ったかはわかりません。 あと読んでいて思った雑感など。 > オープンソースで学習する場合、ソースを読んで理解して、書き写して実行に移したりすればよいのでしょうか? 普通に考えてこれだと思います。 「~~のようなプログラムを実装せよ」という問題文を見て、"あのオープンソースにあったあの書き方で書けば作れそう"となるということだと思います。 > 最終的に「~~のようなプログラムを実装せよ」という問題文を見ただけで、オープンソースのあれとあれを使えば実装できる これはエンジニアの仕事ではなく、コンサルタントの仕事だと思います。 これができるようになるためにオープンソースとして公開されているプログラムのソースコードを読む必要はないと思います。各々のソフトウェアの宣伝文句さえ覚えておけばOKでしょう。 あえて言うと、「あのソフトはこの用途では○○というのがダメで使えないから××というワークアラウンドをするか、△△にこういうパッチを当てるかしないとダメ」と言えればそのオープンソースソフトウェアをよく理解しているという感じがします。 自分がもしオープンソースソフトウェアでの学習を人にすすめるとしたら、コードの読み方の指南本を使って学習し、そのプログラムがどう動くのかを説明できるようになり、それからそのプログラムの不具合の修正や機能の追加をしてパッチをMLなどに送るという順序で学ぶとよいと言うでしょう。 初心者レベルからいきなり他人が書いたコードを読み始めても意味不明ですぐ挫折してしまうので、「デーモン君のソース探検」のようなコードの読み方から教えてくれる解説本を見てそれにそってコードを読むのがよいと思います。 Javaの場合はamazonで探すと「ソースコードリーディングから学ぶ Javaの設計と実装」なんてのが見つかりますが、良い本かどうか知りません。 いずれにせよ、なんらかの解説本を見ながら読むことをおすすめします。 ひと通りそれに基づいて読んだあとは自分が気になった機能がどう作られているかを調べてみたり、それに対して報告されている不具合や自分が見つけた不具合を修正したりすると理解が深まります。修正した場合は是非パッチを送りましょう。あるいは、必要だと思われる機能を付け足して、そのパッチを送るのも良いでしょう。 あと、情報系の学生さんだったらちゃんと授業を聞くことですね。せっかく月謝を払っているんですからそこのところを有効活用しないのは大変もったいないことです。

  • astimego
  • ベストアンサー率0% (0/1)
回答No.1

学生の頃、オープンソースのUNIXのソースコードを読んでみたことがありますが、レベルが高すぎて当時の私には、「なぜこういう実装がしてあるのか?」が理解できませんでした(笑)。 実務でコードを書いた今であれば、多少は理解することが出来ると思いますが。 実際にそのオープンソースのフレームワークなど用いて何かしら動くものを作ってみて、その後でそのソースコードを読んでみたらいかがでしょうか。動作を知ればそのソースコードも理解しやすいし身につくかと思います。 読むだけでは力になりません。 特に作りたいものが無ければ、既にあるソフトウェア・・例えばWebなら掲示板、デスクトップアプリなら計算機などを自力で作ってみても良いと思います。 その次にフレームワークを用いて実装してみて、ソースコードを読んでみる、そういう流れはいかがでしょうか。

関連するQ&A

  • オープンソースの検索

    C言語を勉強するにあたって、実際に誰かの作ったソースを読んでみたいのですが、ネット上で検索してもあまりヒットしません。どこかのサイトに入ってソースを見ても、やはりHTMLばかりだし(笑) どなたかC言語のオープンソースのあるウェブページ、もしくは本など知りませんか? ご存知の方がいらしたら、是非教えてください。お願いします……m(_ _)m

  • データを予測してくれるオープンソース

    WEB上で販売の予測のデータを公開しようとしています。 言語はといませんが、JAVAやPHPを検討しており、 データを予測してくれたり、マーケティングデータを加工してくれる よいオープンソースはありませんでしょうか? 有償のソースでも検討しています。

  • AESのオープンソースで各種モードあるもの

    AESのオープンソースを探しております. C言語が望ましく,GUI等必要ありません. なるべくシンプルな物で ECB,CBC,CTR,OFB等々各種モード が実装されているものが欲しいのです. ご存じの方教えて下さいませ <(_ _)> よろしくおねがいします.

  • Javaの実装

    Javaの言語としての実際の実装(CかC++)のソースってどこかで見ることは出来るのでしょうか?

    • ベストアンサー
    • Java
  • オープンソース系の知識は必要か否か?

    JAVA、C#、C、C++、VB、VB.net等を活用している。 業務系アプリ開発でどこにでもあるようなソフトウェア会社です。 特に自社開発をやっているわけでもなく、 NさんやFさんなどにエンジニアが常駐しています。 そこに、 御社ではオープンソース系の知識・技術を持った人材を必要としていますか? と質問され、どう答えて良いかわかりません。 また、 下記のどの知識・技術を重要視していますか?(複数可) (1)OSSの知識 (2)ネットワーク構築 (3)サーバ構築 (4)セキュリティ (5)データベース その他(  ) と、どれを選択するのか、しないのかも困っています。 この手の会社で、オープンソースの知識は必要ないのでしょうか?

  • 言語の勉強

    現在、ネットワークエンジニアの職についていますが、 開発の仕事をしてみたいと考えています。 しかし、開発経験はまったくなく完全に素人です。 これから独学で勉強して開発のお仕事に転職を考えています。 友達からはJAVAを覚えたほうがいいと言われました。 独学でJAVAを学習するのは困難なことでしょうか? また、良い勉強方法があったら教えてください。 その他、お勧めの言語があれば教えてください。

    • ベストアンサー
    • Java
  • C#を勉強できる入門書

    趣味でゲーム作りがしたいです。 そのためにunityを使おうと思ったのですが、 unity入門書を読む前にまずはjavascript(うろ覚えで、もしかしたらjava?)かc#の言語を学習しておいた方が良いということで、なんとなくC#を勉強したいなと思っています。 プログラミング言語についての知識はほとんどなく、 最近HTMLとCSSの入門をさらっと学習した程度です。 c#を勉強できる良い入門書はないでしょうか?

  • システムエンジニアについて

    WEBのシステムエンジニアになりたいと思っています。どんな言語が必須ですか?僕個人としては、PERL、 PHP、 JAVAで十分かと素人ながら考えていますが。すいませんがお願いします。 また現在はどんなシステムエンジニアが重宝されてるのか知っていれば教えてください。

  • もし仮に5つの言語(Python, Java, C/C++, Perl

    もし仮に5つの言語(Python, Java, C/C++, Perl, LISP、アセンブラ)を学ぶとした場合の学習順序 こんばんは。 もしこの5つを何年かかけて学ぶとした場合、この学習順序をどうおもいますか? ちなみにこの5つの言語は、linuxなどのOSやオープンソースソフトウェアの開発に携わっている方たち(ハッカーの方たち) が、OSや言語開発をするなら学ぶべき言語として主張していました。(クラッカーではなくハッカーです) この方たちがいうには pythonをはじめに学習し、次にjava それからC/C++, Perl, LISP、アセンブラの順番が良いと言っていました。 特にpythonを一番に学び、javaを2番に学ぶべき理由としては↓ まず Python から始めることをおすすめします。設計がきれいだし、ドキュメントもしっかりしているし、初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん対応しています Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしいですが、できるコードは Python より高速です。二番目の言語としてはとてもすぐれていると思います。 本気でプログラミングをするなら、C を勉強するしかありません。これは Unix の中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に勉強しようとするのには向いた代物ではありません。 それ以外に Perl と LISP があります。Perl は実際的な意味からも勉強しておく価値があります。アクティブ Web ページやシステム管理にとても広く使われているからです。自分では Perl を使わなくても、読めるようにはなっておきましょう。LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LISP そのものをあまり使わなくても。 さらに、visualbasicやC#などはやめた方が良い。と主張しています。↓ ウィンドウズの下でハッキングを学ぶのを、拘束衣を着て踊りを学ぶのに例えたのは、あれは冗談じゃないんですよ。 Visual Basic や C# にはそれぞれ個別に問題があります。その大きなものは、移植性がないことです。マイクロソフトの独占言語だというだけで、もうすでに失格ですし、ほかの Basic と同じく言語としての設計もまずく、悪いプログラミングの習慣が身についてしまいます。 足りなかったのでこちらに。 みなさんはこの順序や考えについてどうおもいますか? 本当にpythonは最初に適した言語なのでしょうか? 長文になってしまい申し訳ありません。 できればひとりでも多くの技術者の意見が聞きたいです。なんでもかまいません。 もし良ければ回答お願いします。

  • 言語の取得方法

    プログラミング言語を取得したいと思っておりますが、取得するにあたって順番があるのでしょうか?例えば、C言語→アセンブラ→java等。 また、ネットワークエンジニア・サーバエンジニアに興味があるのですが、役に立つ言語があれば紹介お願いします。 また、学習に役に立つサイトがあれば教えて下さい。 私が使えるのは、エクセルVBAとHTMLです。 よろしくお願いします。