• 締切済み

後輩のオブジェクト指向開発方法や最新技術習得方法

最近、職場に入ってきた後輩に、オブジェクト指向などの考え方や近年のソフトウェア開発で幅広く利用されているオープンソースソフトウェア(OSS)の利用などアーキテクチャを使用した開発、クラウドサービスなどのポピュラーな技術、最新の技術について学んでもらうためにどのようなことを推進していけば良いか悩んでます。 何か良い案とか考える上での知恵を教えてもらえたらと思い、質問させて頂きました。

みんなの回答

  • hue2011
  • ベストアンサー率38% (2800/7250)
回答No.2

自分の体験上言います。 個々にいろいろと本も出ていますしネットでみても解説記事とか実例が、鳥取砂丘の砂ぐらいの数あると思います。 そんなものを片っ端から読もうとしても、一切当人の実力になりません。 ことばばかり覚えて、利いた風な口をきくようになるだけなんです。 昔おそ松くんという漫画にイヤミというのが居ましたけど、あのイメージ。 おフランスではどうだこうだという話題をしゃべりたがる。 ただ、作者がそれほど悪人でも根性曲りでもないので、それほど嫌味な人間には書かれていなかったけど、あれはおそらく見本があったと思います。 外国にいったことがある人間が、あちらではこうだ、先進国はこうだ、みたいな言い方で日本文化をくさして喜ぶというような。 そのレベルの似非技術者に成り下がってしまいます。 本を読ませたら全員がそうだと決めつけませんが、それに近いことは多々起こります。 これは外国語を習うのとおなじことで、入門書に書いてある、朝の挨拶何種類とか別れの挨拶のニュアンス、なんていうのには詳しいけど、自分の家に来るにはパン屋の角を曲がれ、犬に気を付けろ、ということもしゃべれない、ということと同じことが起こるのです。 この手の技術は、相互に絡まり合っているところがあるので、よく理解経験しているものが、たとえ話をしたり身振りでパケットをぶつけてみたりするジェスチャーをしながら教える必要があるのです。 オブジェクト志向なんて、もともと大工の仕事では常識だし、電気回路が全部そうなっているだろう、から話を始めると、たいがいすぐ理解してもらえます。 OSSなんて、昔はUNIX技術者でGNUと言う考え方があって、という昔話をしたり、ある時代の企業側が一切この手のものを禁止して聞く耳もたなかった。その理由は、なんていう、どの本にも書いていないことを言うと、乗り出して聞こうとし始めます。 誰でも知っているGoogleMapだとかああいうものを出して、方式の共有化とデータの共有化の問題はなんだ、という話をした上ならクラウドの話題にはすぐ繋げます。 クラウドの発想は一番最初は「トンネル効果」からきていたんだ、というとたいがい驚きます。 これは初期のそういう論文を知っているから言えるのです。初期と言ったって2009年ぐらいですけど。 品質の話をして、どういう形にしておくと、品質管理が楽か、という、あたかもこぼれ話の別話題のように話しはじめ、フレームワーク化とか、インスタンスとオブジェクト概念の違いに言及するのは簡単です。 この手の話を毎日、20分ぐらいずつしていけば、2週間で大概オブジェクト指向だとかユニット化、モジュール化、クラス化、継承は理解できるようになります。 興味あふれる話が毎日続くと、やがて「核デブリの解消にはこういうことはできませんか」というような提案をしてくるようになる。 要するに、考え方の様式を他の分野に向けて解析できるようになってくるのです。 通信技術におけるレイヤー概念が破たんしかかっているというようなけばけばしい話題をときどき出すと、若いものたちで議論が始まります。 なぜそうなるのか。 概念の粒度に問題があるのだ。 もともとはデータは上側から下に降ってくる雨のように考えていたのに、上昇気流のような思想をまとめる方向にいっていなかったのだ。 レイヤー6以上の流れが考慮されないのに流れを制御しなければいけないなら、こういう考えを持ってこないといけない。 それは気象衛星ひまわりから連想したものだ。 そういう議論ができるようになるのです。 ある程度いったら、もうオヤブンから教える必要はなく、自分らで勝手に調査し議論し、高みに向かって歩いていきます。 結局、自分が英語も話せないのに部下には英語ペラペラになれなどと言うチームはそれなりにしかなりませんが、普段から英語で論文の読み書きをしたり議論したりしている人の部下はいつの間にかネイティブ寸前になっているということです。 OJTという用語もありますが、柔道経験もないコーチがいくら教えても強い選手なんて育ちません。 ポイントはそこにあります。

  • hiodraiu
  • ベストアンサー率15% (448/2823)
回答No.1

業界経験者なら会社ではOJTで十分だと思いますよ。 あとは今の仕事で必要な技術は何かを説明してやれば、技術者なら自分で考えて習得するものじゃないでしょうか。 同業からに転職ってイメージで回答を書いてますが、ひょっとして別部署からの移動で、未経験者ってことですか。だとしたら新人研修と同じカリキュラムで基礎を身につけるところからですね。 下記の部分の言ってる意味がよく分からんですね > 近年のソフトウェア開発で幅広く利用されているオープンソースソフトウェア(OSS)の利用などアーキテクチャを使用した開発 OSSなんて20年ぐらい前から使ってますが、最近のもの限定って意味ですか。 OSSの利用などアーキテクチャを使用した開発って、言葉の意味が分からんです。

関連するQ&A

  • オブジェクト指向の利点とは?

    汎用機でCOBOLのSEを10数年やってました。(今は自営業) COBOLはプロセス型の言語といわれているのに対して C言語はオブジェクト指向型の言語といわれています。 私はC言語やJAVAで開発したことはないのですが、 C言語、すなわちオブジェクト指向の利点ってなんでしょう? JAVA、C言語はオブジェクト指向ですよね。 私はソフトウェア開発技術者の資格など持っていますのでオブジェクト指向の表面的な意味は分かります。 ですが実際、アプリ開発時・運用時にどのような利点があるのかがイマイチ分かりません。 「どっちでもいいんじゃないか」なんて思ってしまいます。 プロセス指向(VB、COBOL等)とオブジェクト指向(C言語、JAVA)の差異って何なんでしょう。 よろしくお願いします。

  • オブジェクト指向開発とコンポーネント指向開発の違いに関して

    オブジェクト指向開発から派生した開発としてコンポーネント指向開発というのがあると思いますが、それらの違いがあまりはっきりわかりません。粒度がコンポーネントの方が大きい、プラットホームに限定されない、継承などの難しい(?)概念が省かれ簡略化された部品、再利用を前提としたプラグアンドプレイができるような開発とありますが、その他にどのような特徴があるのでしょうか?わかりやすく教えてください。

  • オブジェクト指向で開発をするのに、どんなツールを使われていますか?

    オブジェクト指向で開発をするのに、どんなツールを使われていますか?0私はJavaプログラマではなくEcmaのActionScript3を主に使っております。オブジェクト指向性の強いJavaの開発者なら私の疑問に詳しいのではないかと思い質問しました。 具体的な名称をあげてくださってもいいですし、以下のようにどんなソフトかをまとめてくださるだけでも構いません。ちなみに、以下が私の使用しているアプリケーションです。 XMLエディタ UMLエディタ IDE IDEで開発。UMLで再利用性を高めて、XMLはなにかと便利でよく使うのでエディタを使っています。

    • ベストアンサー
    • Java
  • オブジェクト指向の開発の成功事例

     プレゼンテーションの授業でオブジェクト指向言語について調べています。  オブジェクト指向言語の再利用により生産性が向上するのは分かったのですが、それによる具体的な成功事例の資料はありますでしょうか? また、ほかのプログラミング言語と比べてどの程度開発効率が向上するのかの資料があればお教えください。 よろしくお願いします。

  • 「手続き」と「オブジェクト」一人開発で有利なのは?

    人工知能を用いたソフト・3DCGソフト・音声編集ソフト等のソフトウェアを一人で開発する際に「手続き型・構造化」と「オブジェクト指向」どちらの手法を使えば有利でしょうか? 短期間でラクにできるとしたら、どちらの手法が有利でしょうか? 私自身の考えとして、オブジェクト指向を用いると、ifやswitch等の条件分岐を削減出来て、コードの記述も省力化できると思うので「オブジェクト指向」のほうが有利だと思いますが・・・ 回答のほうお願いします。

  • オブジェクト指向について

    趣味でプログラミングをしているのですが オブジェクト指向の概念がうまく理解できていないので 教えていただけませんでしょうか? 解説本などを読むと、オブジェクト指向のクラスを動物クラスを継承して犬クラスや猫クラスなどと解説してあるのですが。 どうも、僕がプログラム設計するとしっぽクラスや泣き声クラスなどといった違った動物の類似機能をまとめてのクラスをつくり各メソッドとしてしまいまっています。 動物クラスや乗り物クラスを組み合わせてプログラムを設計する事ができません。 本格的なプログラムを組む用途では無いので気にしなくても目的の機能が実装できれば問題無いと知人からは言われ(面倒なので教えたくないのかもしれませんが)そのまま来てしまいました。 最近、気になって来たので。 正しい使い方を身に着けたいと思いチャレンジしていますが、変な癖がついていて犬や猫クラスなどと思いながら設計していると思考が止まってしまいます。 そこで、下記のことを教えていただけませんでしょうか? (1)泣き声クラスなどの同機能を1つのクラスにしてしまう設計しか出来ない(発想できない)のは考え方のどこがわるいのでしょうか? (追記:一部分だけならペンギンクラス猫クラスなどと言う動物クラスの継承的な発想はできるのですが実際のプログラミングの際は動物のようなわかり易い物オブジェクトとして目に見える物体ではない事柄をオブジェクト化にする事が難しく感じるのではないかと思います。) (2)今までの小さい規模での開発なら、クラスのつくり方がおかしくても不具合は無かったのですが、どのような時に困る事があるのでしょうか?(解説などでも再利用性などと、さらっと解説されていますがイマイチぴんときません) (3)正しくオブジェクト指向がマスター出来ている方にとって、どのクラスにどのメソッド実装するか悩む事などはあるのでしょうか? また、設計で一番悩むのはどのあたりですか? (4)UMLのマスターは必須でしょうか?(現在は、なんとなくUMLぽい感じでメモ書きをつくり、えせオブジェクト指向でプログラムを組んでいます。) (5)その他アドバイスがあればお願いします。 ※乱文で問題もハッキリせず質問の整理等がうまくいっていないと思いますが1つの項目だけでも構いませんので、ご教授お願いします。

    • ベストアンサー
    • Java
  • phpのオブジェクト指向でつまづきました・・・

    phpのプログラムをオブジェクト指向で書こうと思ったのですが、クラス間のデータのやり取りのあたりでつまづきました。 クラスはそれぞれ 1.設定用 2.データの読み書き用 3.入出力用 4.データ処理用 5.メイン です。 オブジェクト指向で書く前よりはコードも見やすくなったのですが、例えば4のデータ処理のところからは1、2、3の全てのプロパティを参照していたりして、なんだか複雑に。 オブジェクト指向で検索するとwikipediaには プログラムを構成するコードとデータのうちコードについては手続きや関数といった仕組みを基礎に整理され、その構成単位をブラックボックス とすることで再利用性を向上し、部品化を推進する仕組みが提唱され構造化プログラミング (structured programming) として1967年にエドガー・ダイクストラ (Edsger Wybe Dijkstra) らによってまとめあげられた と書いてありました。これだと関数を種類ごとにまとめただけであまり部品化はされておらず、前と変わらないような気がしてしまって・・・ 例えば設定用のクラスはのプロパティほとんどすべての所で値が必要になるのですが、毎回newを使うのは気が引けるので、クラスの外で new でインスタンス化して必要なところから毎回 global で呼び出したりしているんですが・・・使い方が間違っている気がするのですが、そういったことを解説しているサイトが見当たらなかったため、全く分からない状態です。そもそもこの場合、設定用の値はクラスにまとめるべきなのかどうか・・・。 書く時は$クラスー>メンバ変数 とか $クラスー>メンバ関数 のように書くので今何をしているのかが分かりやすく、それは便利だと思うのですが。 すみません。自分でも上手く説明できずによくわからない文章になってしまいましたが、結局の所オブジェクトがどんな物でどんな書き方をすれば良いかが分かっていないのだと思います。そういった所を分かりやすく教えてください。お願いします。

    • ベストアンサー
    • PHP
  • ソフトウェア開発技術者試験で必要な言語は?

    ソフトウェア開発技術者資格について興味があるので少し調べているのですが、この試験取得のためのプログラミング言語はなんなんでしょうか? 例えば、基本情報技術者の場合は午後試験でjava、C、cobol、caslII のいづれかの知識が必要みたいですが、ソフトウェア開発技術者については情報処理推進機構のHPをみてもよくわかりませんでした。 ご存知の方、宜しくお願いします。

  • オブジェクト指向のプログラミング言語の勉強法について

    オブジェクト指向のプログラミング言語の勉強法について お尋ねします。 iPhoneアプリを作ってみたいと思い、最近プログラミングの勉強を始め、C言語の入門書を一通り熟読しました。そして、次にオブジェクト指向の言語を勉強しようと思っているのですが、iPhoneアプリの開発に用いる言語は「Objective-C」で、他にも開発に使用できる言語として、「C++」や「Java」などいくつかあると聞き、どれから勉強すればいいのか迷っています。 Objective-CとC++やJavaでは、技術的(表現力?)に大きな差はあるのでしょうか?それとも、Objective-Cだけでも十分なのでしょうか? そのほか、まだC言語を勉強したばかりでわからないことが多いのですが、ゲームアプリの開発にどのような知識が必要なのか、また効率のよい学習順序、お勧めの書籍など助言を頂ければ幸いです(__) ちなみに、 ・プログラミングの経験は全くありません。 ・はじめはシューティングなど動的なゲームアプリを作ろうと思っています。 ・妥協せず、基礎からきちんと勉強したいと思っています。

  • オープンソフトウエア(OSS)に関する質問

    オープンソースソフトウエア(OSS)を利用してASPサービスの事業化を検討している企業です。 質問1 通例、OSSはライセンスという考え方が存在しないものと考えておりますが、そのような理解でよろしいのでしょうか。ソフトウエアの開発をおこなった者が、OSSとして登録、提供した場合、それは誰もが利用可能であり、利用する対価としての料金は発生しないので、そもそもソフトウエアライセンスという考え方が存在しないと理解しているのですが、それでよろしいのでしょうか。 質問2 OSSはソースコードが公開されているので、それに拡張機能を付加するなどのことが考えられます。その際に、OSSをベースに新たに開発した部分については、開発者の意向により知的所有権が留保できると考えています。そのような理解でよろしいのでしょうか。OSSをベースに開発したソフトウエアについては、そのソースをOSSとして公開すべきだという考え方もあるようなので、基本的な考え方が知りたいのです。また、その場合、その新たに開発したソフトウエア部分を有償として販売することは問題ないでしょうか。 質問3 OSSは無償で提供されるものなので、いずれの人間もそれを有償で販売することはできないと理解しておりますが、OSSを利用して、ASPサービス等を有償で展開することは問題ないと考えております。OSSを利用して有償のサービスをビジネスとしておこなっている会社が多く存在しますので、特に問題はないとおもうのですが、何らかの制限等があれば、お教えください。

専門家に質問してみよう