- ベストアンサー
WEBサービスやアプリなどで技術だけではわからない
WEBサービスやアプリなどで技術だけではわからない場合どうやりかたを調べるのでしょうか? 下記のようなサイトなどJSの技術だけではどうやって作るのかわからないことが多くあると思います。 http://craverse.com WEBアプリやネイティブアプリ、デスクトップアプリなどで例えば、コピペ用アプリを作ったりバックアップ用アプリを作っておこずかい稼ぎをしようと思っても、どうやって実装するかJSの知識だけではわからない事ってたくさんありますよね。 これらの知識はどのように得るのでしょうか? HWなどを0から学ぶしかないのですかね?
- みんなの回答 (14)
- 専門家の回答
質問者が選んだベストアンサー
電卓は使えるようになったけど、帳簿の付け方がわからない。 電卓ICチップの動作原理から学ぶ必要があるでしょうか?とはならないですよね。 それと同じで、プログラム言語は、自分のアイデアやアルゴリズムを実現するための 道具であって、プログラム言語の言語構造だけ覚えてもアイデアは出てきません。 ちゃんとそのサービスは見てないですが、そのような横断的に検索するためのサイトを 作るためのキーワードは、”マッシュアップ”と呼ばれているアルゴリズムだと思われます。 つまり、複数のWebサイトの情報を、WebAPIやHTMLの構造解析を使って入手して、 書式を整えた上で、一旦、自前のサーバー上のDBに格納し、 自サイトのユーザー向けには、そのDBを検索するためのAPIやWebフォームを用意する。 有効期限や重複問題を解決できるようにアルゴリズムを工夫する。 って感じになるかと。 この時点では、なんのプログラム言語を使うか(どの電卓を使うのが速いか)は、 まったく関係ありません。 なので、プログラム言語の知識ではなく、 自分のアイデアを実現するために、どういうアルゴリズムで組めばよいかを想像できるようになるために、 沢山のアルゴリズムを学ぶべきでしょう。 また、プログラム言語には、最適な用途がありますので、 ブラウザ上でのJSのみでこれを実現するのは、かなり無理があります。 サーバーサイド用のプログラム言語も必要ですし、 Node.jsを使うにしても、DBを扱うには別途SQL言語やDBMSの知識が必要です。 プログラム言語ありきの「技術志向」でなく、利用者のためにづあるべきかの「顧客志向」で考えましょう。
その他の回答 (13)
- catpow
- ベストアンサー率24% (620/2527)
No.10です。 小規模であれば、デスクトップアプリでもElectronのような環境・フレームワークを覚えたら作れる。っていう印象を与えてしまったかな?と思っていました。 でも、ちょっと疲れたので、「まあ、あれだけでもいいか」と放置していました。 が、No.12,No.13さんが、私が書き足りないと思っていたことを分かりやすく書いてくださいました。 質問者さんのお礼を見ていますと「できるだけ少ない労力で済ませたい、できるだけ書籍などにお金使いたくない。いろんな言語、フレームワークなんて勉強したくない!」。 という意思が感じられます。 まあ、それは誰でも思うことかもしれません。でも、それは無理なんだと思います。 なにかの雑誌に書かれていたのですが、システムには、「エネルギー保存則」ならぬ「複雑さ保存則」っていうのがあるそうです。 簡単なことは簡単にできる。また、複雑なことは、複雑な部分をフレームワークや言語の機能で覆い隠して、簡単に見せることもできる。 でも、複雑な部分が消え去ったわけではなく、目に見えないところに移動しただけであるってことですね。 覆い隠された部分をブラックボックスとして、「お仕着せ仕様」のままで我慢するならいいのですが、「隠された部分の仕様を変えたい」と思うと、一気に難しさが爆発したりします。 よく「ワードプレスでサイトを作ってます。でも、○○を変えたいのですが、どうすればいいのですか?」って質問がありますよね? あれは、自分にとって、ブラックボックスにあたる部分の仕様を変えたいと思うからです。それを実現するには、ブラックボックス部分の勉強が必要になるわけで、ハードルが上がりますが、そういうことです。 もし、「ちょっとしたデスクトップアプリ」の仕事を請けて、それをきちんと作って納品したとします。 それでお客さまが満足してくれたけど、しばらくしたらワードプレスサイトの仕様変更のように、「ちょっと、この部分をこう直す依頼をしたいのだが?」という要望があったとき、困ったことになるかもしれません。 まあ、「そんな我儘な依頼は断る!ちょっと稼ぎたいだけだからね」というスタンスもアリかもしれませんけど。
お礼
エレクトーンでもできるがその後の変更がしにくいのでC#の方が変更しやすいという事ですかね? 言語によって癖が違うのですね
- superside0
- ベストアンサー率64% (461/711)
> やはり、これからはデスクトップアプリがWEBアプリに置き換わっていくといわれて いますが、そうはいってもWEBアプリで、HDDやメインメモリーにある、 リソースをいじるようなアプリは今後も作れないことは変わらないのですね。 > 置き換わっていくわけだから、ネイティブやデスクトップアプリが出来ることはほぼ すべてできるようになるのかと思ったのですが、そうではないのですね。 ブラウザのJavaScriptでだけWebアプリを作るのなら、 触れるリソースがかなり限定されるというだけで Webアプリはサーバーサイドでのプログラムと組み合わせるのが一般的です。 その場合なら、サーバー側のリソース(ファイルやDBMSや通信)を操作することは可能になります。 > 最後にJSでゲームやスライドショーなどが0から作れても、デスクトップアプリやネ イティブアプリと比べると必要な知識量は10分の1程度なのですね。 > つまり、それらをやるならさらに10倍の知識を覚える必要があるのですね。 10倍とは言っていませんよ。(数十倍とは書きましたが) ただ、作ろうとするアプリによって、必要な知識はまちまちなので、 現時点で定量化することは、不可能でしょう。
- superside0
- ベストアンサー率64% (461/711)
> 私はWEBのフロント技術しかないので今はWEBアプリしか作れないのですが、恐らくセキュリティ面から上記のようなことは、インストール出来るネイティブアプリ出ないと不可能でしょうか? 「セキュリティ面から」というのは、ブラウザでのJavaScriptでは、 ブラウザ上の資源のみを制御する機能しかなくて、 OSの上の資源(たとえばPC上のファイルや周辺機器)は操作できないので それを使うようなアプリは作れないのか、という意味なら、その通りですね。 プログラミング経験があるのが、ブラウザ上でのJavaScriptのWebアプリのみ ということなら、おそらくはマウスやキーボードのイベントでHTML(というかDOM)を加工したり、cookieを読み書きしたり AjaxでWebサーバーと通信したりという経験はあっても、 PC上のファイルをプログラムから読み書きしたり、 DBMS等のPC上の他のアプリと連動させたりといった経験はないはずです。 (ブラウザのJavsScriptでそんなことできてしまうと、フィッシングサイトにアクセスしただけで、PC上のデータが盗まれてしまいますから) 一方、PCにインストールして使うデスクトップアプリは、OSで管理されている資源は 何でも操作できますが そのかわりに知っておかねばならない命令や汎用関数やAPIは ブラウザでのJavaScriptの何十倍も多いです。 特に、ブラウザでのJavaScriptは、あくまでもブラウザ側の処理が主であり、 ブラウザ上で発生するなにかのイベントのときに呼ばれる 言わばコールバック関数を作っているだけのことですが、 デスクトップアプリでは、主体はアプリ側にあるので、考え方がまるで変わってきます。 もちろん、JavsScriptなのにスマホのネイティブAPIが使えるというような環境もありますが、 同じJSだからといってこれまでDOMしか触ったことがないと、 アルゴリズムを組み立てるだけでも簡単ではないと思いますよ。 これは、JavaScriptに限らず、JavaやC#といった言語を習得したとしても、 実行プラットフォームの環境やアプリ用途で 開発手法のアプローチがまったく違っててくるので、同じだと思います。 なので、1つの言語を覚えれば、それだけで どんなプラットホーム上のどんなアプリであってオールマイティーに 開発できるようになるというのは、幻想だとおもったほうがよいと私は思います。 ただ、プログラム開発を請負っていくうえにおいて ・1つの言語で、1つのプラットフォームのみの開発を行うのか ・1つの言語に特化して、その言語でいろんなプラットフォームのアプリに展開できるようになるのか ・それとも、開発ターゲットのプラットフォームや用途に合わせて、それに最適と言われている言語や開発環境を都度習得するのか の選択においては、 個人での選択だけでなく、請負う案件ごとの事情や、 顧客や開発チームの意向もあるので、自分で判断するしかないと思います。
お礼
>>> 「セキュリティ面から」というのは、ブラウザでのJavaScriptでは、 ブラウザ上の資源のみを制御する機能しかなくて、 OSの上の資源(たとえばPC上のファイルや周辺機器)は操作できないので それを使うようなアプリは作れないのか、という意味なら、その通りですね。 やはり、エレクトーンやvueを使ったネイティブアプリ制作という形をとらないと、DOM操作とWEBサービスしかできないのですね。 コピペ用アプリ、バックアップ用アプリなどは、エレクトーンが必須ですね。 サーバサイドはNode.jsを使わないといけないですしね。 ただJSはこれらのフレームワークを使えばほぼすべてのことが出来るので、かなり恵まれている方ですね。 >>> PC上のファイルをプログラムから読み書きしたり、 DBMS等のPC上の他のアプリと連動させたりといった経験はないはずです。 (ブラウザのJavsScriptでそんなことできてしまうと、フィッシングサイトにアクセスしただけで、PC上のデータが盗まれてしまいますから) その通りです。 やはり、これからはデスクトップアプリがWEBアプリに置き換わっていくといわれていますが、そうはいってもWEBアプリで、HDDやメインメモリーにある、 リソースをいじるようなアプリは今後も作れないことは変わらないのですね。 置き換わっていくわけだから、ネイティブやデスクトップアプリが出来ることはほぼすべてできるようになるのかと思ったのですが、 そうではないのですね。 最後にJSでゲームやスライドショーなどが0から作れても、デスクトップアプリやネイティブアプリと比べると必要な知識量は10分の1程度なのですね。 つまり、それらをやるならさらに10倍の知識を覚える必要があるのですね。 学習コストの次元が違うなら、WEB制作をやってきたならデスクトップアプリやネイティブアプリには手を出さずに、WEBサービス、アプリに特化したほうがいいのかもしれないですね。 こちらは今後も盛り上がっていくようなので、PWAとこれで実現できるサービスとアプリ限定でやっていけば、10倍も思える必要はなさそうですね。 ただそれでもデータを保存して続きから使えるようにしたり、対戦ゲームなら、リアルタイムで情報を更新する機能を足したりする必要があるので、 サーバサイドと最低限のMYSQLの知識が必要になりますね。 WEBストレージでの保存はすでに成功したのですが、これはキャッシュ削除でデータが消えてしまい、このデータをダウンロードしておいて、 消えてもアップロードしてもらえば状況が復活するというのは恐らく不可能なのですよね。 これくらいの事なら、MYSQLは初級本一冊程度で十分でしょうか?
- catpow
- ベストアンサー率24% (620/2527)
補足です。 最新のマイクロソフトのWebアプリは、LinuxやMacで動作します。 それはWebサーバにIISを使わなくとも良くなったってことを意味しています。 そして、WebアプリであるASP.NET Coreはコンソールアプリケーションとして構成されていますから、当然ですけど「この機能はデスクトップ限定」なんて制限はつきません。
- catpow
- ベストアンサー率24% (620/2527)
>>恐らくWEBアプリ、ねいてぃぶアプリではなくデスクトップアプリ限定でしょうがそんな便利な機能があるのですね。 いえ、C#コンパイラの拡張機能ともいえますから、ディスクトップアプリ限定ではなく、Webアプリまで対応できます。 たぶん、やったことありませんが、ネイティブまでも対応可能だと思いますけど、しばらく先の話でしょう。 ディスクトップアプリでも有用なんですが、特にWebアプリでは、この言語拡張はとても便利で開発効率アップに貢献してくれます。 >>しかもwindowsしか使えないアプリというわけでもないのですね。 Windows環境の.NET Frameworkに比べて、Linux/Mac環境の.NET Framework Coreは、どうしても機能が少ない点があります。 当然のことですが、Windows特有のOS APIに依存する機能が、MacやLinuxですぐに全部提供なんてできませんからね。 ただ、Windows特有の機能を使わないWebアプリなら、Windowwsで開発・テストして、LinuxやMaxOSのサーバに展開が可能になっています。 しかも、C#コンパイラや.NET.ASP Coreといったフレームワークはオープンソースなので、その気になれば、自分でバグ修正とか、機能追加までできます。 マイクロソフトは、Windows10をWindowsの最終版としたり、開発ツールのVisual Studio を個人や勉強用であれば、無償提供(以前は6万円くらいで販売)するなど、Linuxを敵視していた「Windows至上主義/商品至上主義」から大きく変化しています。 なにしろマイクロソフト運営のクラウド環境では、Windows環境のほぼ半額でLinux環境が提供されているのですからね。 本当は、マイクロソフトがすべてを仕切りたいと思っているらしいのですけど、iOSやAndroid、Macの台頭もあって、海外サイトを見ていると、オープンソースの開発者たちの意見を無視できない状況になっているようです。
お礼
ネイティブ以外は、無料で環境を構築できるのですね。 ただwindows専用アプリ以外はやはり難しそうですね。
- catpow
- ベストアンサー率24% (620/2527)
>>ただ私はあくまでフリーランスとしてちょっとしたアプリを作っていく予定なのでそこまでの物は作らないと思います。 まあ、小規模なアプリなら問題ないかもしれません。 ただ、コピペ用アプリ、バックアップ用アプリのようなソフトを作られるのであれば、いろいろな機能のAPIというかライブラリが欲しくなるのではないでしょうか? Visual StudioでC#を使えば、.NET Frameworkだけでなく、NuGetというオープンソースのパッケージライブラリが手軽に利用できます。 「自分で考えるのも、作るのも面倒だなあ・・・」っていうような処理をやってくれるパッケージが豊富に登録されています。 なので、私が以前にC#のお仕事が来たとき、NuGetからパッケージをうまく探すことで、リーダから提示された平均的な開発スケジュールを大幅な余裕をもってこなすことが可能となりました。 またJavaはコンパイラ仕様をバージョンアップしても、実行環境の仕様を修正しずらいといいます。 でも、C#は、コンパイラだけでなく実行環境仕様までもひっくるめて、マイクロソフトが管理できる?ためか、大胆に仕様拡張しています。 だから、C#が取り込んだ仕様をJavaが取り込むのに7,8年遅れで、それも不十分な形で取り込む結果になったりしています。 さらにC#の最新コンパイラはRoslynと名付けられていて、C#で作られています。(Visual Studio 2015より) その結果、コンパイラーの持っているような機能を、私たちプログラマ自身が追加することさえも可能です。 自分専用の言語仕様を追加して、大幅な開発効率アップをすることが可能となっています。 その結果として、C#でインタープリターのようなプログラムを作ることさえも可能になっています。 C#をマスターすれば、フリーランスとして「ちょっとしたアプリ」を作るとき、他の方たちとは「ひと味違う」ものを提供でき商売上有利になるかもしれませんね。
お礼
恐らくWEBアプリ、ねいてぃぶアプリではなくデスクトップアプリ限定でしょうがそんな便利な機能があるのですね。 全部自分で打たなくても、プラグインのような部品プログラムを導入するだけでその機能が実現できるので圧倒的に早く簡単にデスクトップアプリが作れてしまうのですね。 しかもwindowsしか使えないアプリというわけでもないのですね。
- catpow
- ベストアンサー率24% (620/2527)
>>Electronとは、Windows/macOS/Linuxで実行できるデスクトップアプリをHTML+CSS+JavaScriptといったWeb技術で開発できるフレームワークである。 まあ、その構成だとたぶん小規模なデスクトップアプリを作ることが可能なんでしょう。 でも、業務用アプリは、多数の画面から構成されます。 インタープリタ系の言語は、たった1文字、「i」を「l」とパンチミスしても、プログラム実行するまでエラーが判明しません。 仕事として使う多数の画面がある業務システムにそんなエラーが紛れ込んでいて、本番でエラーとなるのはまずいですよね? だから、Webシステムに開発効率がずっと良いといわれるRubyonRailsなどでなく、コーディング量の多い、生産性が悪い、型付のコンパイラ言語であるJavaが採用されるわけです。 Webアプリじゃあなく、デスクトップアプリも多数の画面から構成されています。 そういう単純なエラーを防ぎたいデスクトップの業務システム開発分野では、Electronではなく、型付のコンパイラ言語であるC#とかVB.NETが選ばれると思います。 余談: 仕事でRubyonRailsをちょっと使ったのですけど、C#に比較して、コンパイラー言語ではないからか、エラー箇所がとても分かりずらくて、開発が非効率に感じましたね。JavaScriptの開発も同じく、エラー箇所がとてもわかりにくい言語であるとの定評があります。 だから、TypeScriptとかCoffeScriptなんてJavaScriptに代わる言語(最終的にはJavaScriptに変換される)がいろいろ開発されているわけですね。
お礼
会社で大人数で業務用アプリを作るならそうなんでしょうね。 ただ私はあくまでフリーランスとしてちょっとしたアプリを作っていく予定なのでそこまでの物は作らないと思います。
- catpow
- ベストアンサー率24% (620/2527)
>>Node.js、vue、エレクトーンなどを使えばほぼすべてできると聞いたのですが、そうではないのですか? 少なくとも、Node.jsは、サーバ側のJavaScriptですので、それだけ覚えてもダメですよ。そういう意味では、vueもダメ。 エレクトーンはネットで検索しても楽器しかでてきませんので、不明。 >>C#はJSそっくりでJSがわかればすぐにわかると聞きますが、そうでもないのですね。 誰がそんなデタラメを言っているのでしょうか? JSがわかっていても、すぐにC#がわかるってのは大ウソですよ。 まあ、似たような話で、「CがわかればC++がすぐにわかる」という話も過去ありました。 それと同じような話です。 >>するとC#が出来ればJSで再現できるものはすべてできるのですね。 すべてというとやはり言いすぎかもしれません・・・。 質問者さんがあげられていたようなアプリ作成は、ほぼすべてカバーできるってことです。 ちなみに、マイクロソフトは、「デスクトップアプリを作るなら、昔のようにC++を使わず、できるだけC#を使ってね!」って流れになっています。 C#じゃあなく、VB.NETもありますけど、C#にくらべると色々とマイナスな点があるのでお勧めしません。 また、「VBやっています!」というと、同じプログラマの方たちから、一段レベルが低い技術者と評価されがちなのもマイナス要素です。 ハード密着なソフト、パフォーマンス要求が厳しいソフトであれば、マイクロソフトの世界では、C++/CLIが今でも活躍しているみたいですけど。
お礼
Electronとは、Windows/macOS/Linuxで実行できるデスクトップアプリをHTML+CSS+JavaScriptといったWeb技術で開発できるフレームワークである。2017/01/31 こちらの方ですデスクトップアプリが作れるようです。
質問に有るサイトはHTML5言語を使いレスポンシブデザインモードで作られてます。 PCの場合『どのコマンドで出来るか?』を考えますが、 現在では『このデザインにどのコマンドを使うか?』と考える訳。 最初に考えるのは『レイアウト』で、それに対応したコマンドを記載します。 HTML5に関してはAdobeのサイトにレイアウトを作成する為のデザインアプリが有ります。 Webアプリを作るにもこう言う考えることが今では重要です。 *アクセルを踏んで車を動かすじゃなく車はアクセルを踏めば動く。 こう言う考えはMSの開発ツールは弱いです。
お礼
UIの制作はhtmlでできるのですがどうやってクラウドソーシングのDBにアクセスして求人情報を引っ張ってきて、それを動的に構築して表記するかがわかりません。 これはhtml、cssではできないですよね 。 恐らくWEBAPIがクラウドソーシングサイトから公表されているのでしょうが。ライバルサイトの情報と勝手にまとめて大丈夫なんですかね?
- hiodraiu
- ベストアンサー率15% (451/2846)
No.1です 知識を持った上で作れば、「作りまくる」必要はないです。知識と実践をバランスよくこなせば良いと思います。 ブラックボックスに対してAPIというインターフェースがあり、それらの仕様を理解すれば、プログラムは作れます。また、そのブラックボックスは何が出来るのか、何が出来ないのかを知ることは、先の回答で書いたソフトウェア工学の知識になると思います。 これらを、いきなり検索しようと思っても、検索ワードが思いつかないと思います。ですから、基礎から学ぶ事が重要なのです。
お礼
supersideさんもおっしゃっていましたが、OSにもAPIがあるのですね。 もちろんHWの知識はないよりもあったほうがよいですが、 それよりもコンピュータの動作原理やOSがなにをやってるかを学んだほうが アプリ開発の役にたつと思いますよ。 まさにこれです WEBAPIしか知りませんでしたが、OSにもAPIがあってそれを使ってメインメモリー上のデータをいじることができるのですね。 恐らくPCだけでなくスマホも同じなのでしょうね。 メインメモリーやHDD所の情報やファイルをいじくりまわすにはHWの知識で行うのかと思いましたが、 必要なのは、OSの知識だけのようですね。 ファームウェアなどは特にソフトウェアエンジニアにはほとんど意識する必要はなく、これとHWとのやり取りを仲介してくれるOSの事だけを、 理解しておけばアプリ制作は十分なのですね。 CEなわけではないので、OSから先は関係ないですね。 そしてOSにHWの情報をこういじってと命令をするためのOSのAPIを理解すれば、あとはJSでもなんでもいいのでプログラムを作れば命令通りOSがやってくれるのですね。 よってOS API メインメモリー ハードディスク バックアップ 作り方などと調べればその方法が見つかるのでしょうね。 私はWEBのフロント技術しかないので今はWEBアプリしか作れないのですが、恐らくセキュリティ面から上記のようなことは、インストール出来るネイティブアプリ出ないと不可能でしょうか? 今後はデスクトップアプリは、将来性がなくネイティブアプリも頭打ち、WEBアプリが最も伸びがあり将来性があると聞き、 WEBアプリで需要が今後増えるものを作っていきたいのですが、どんなものがあると思いますか? WEBはHWにアクセスしてバックアップやコピペ用などのアプリは作れないので、買い物計算や、ゲームくらいしか思いつきません。 しかもデータの保存もWEB上なのでクライアント端末ではできないですよね。 WEBストレージはありますがキャッシュ削除すると消えてしまいます。これをダウンロードしてもらって、 続けたい時にアップロードしてもらい続きをできるといいんですが、 これは不可能で、これをしたいならWEBの場合はherokuなどのサーバにmysqlを入れてここに保存してもらうしかないですかね。 DBまでやっていける頭の容量がなくあふれそうです。 買い物計算や、ゲームくらいなら初級本一冊程度で大丈夫ですかね?
- 1
- 2
お礼
WEBアプリやネイティブアプリ、デスクトップアプリで コピペ用アプリなどを作ってマネタイズしたいならいくら、プログラム言語の仕様を覚えてもずっとできるようにはならないのですね。 アルゴリズムを思いつく能力の方がよほど大事で、このような事を学ぶ本もあるが、結局最後は作りまくることが一番なのでしょうね。 ただそれでアルゴリズムが出来るようになっても、HWの使い方やどんな関数を使うとどんな利用が出来るのかを知らないと どんなに想像力があってもブラックボックスの物を使う方法を思いつくというのは不可能ではないでしょうか? 例えばクロボーなどコピペ用アプリを作ろうとするとおそらくメインメモリーをどんな関数でどんなふうに利用できるかを知らないと、 絶対に思いつきませんよね。 このような情報はググったら出てくるものですか?