@KATAKUNA (KATAKUNA)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Web版のストックフォトサービスを作るにあたって最適なプログラミング言語と勉強方法を知りたいです

Q&A

Closed

前提

・現在、JacaScriptの勉強をはじめて2週間経たないくらいです。
・独自に考えたストックフォトのサービスを作りたいです。
・勉強方法は書籍で、書籍に書かれているコードをひたすら模写する流れを繰り返しています。
・HTML/CSSはコードを見れば何をやってるか何となくわかる程度の素人です。
・VBAによる業務改善ツールはいくつか作成したので、構文の基本のキは理解しているつもりです。
・VBAではhttpリクエストによる簡単なWEBスクレイピングや、AccessとExcelの連携も少しやりました。

相談概要

勉強している言語や勉強方法、プロセスが間違っているのではないかと不安になってきました。
学ぶべき言語、勉強方法(ロードマップ)、その他注意点などのアドバイスをお願いします。

相談の詳細

前提のとおり、独自のアイデアで考えたストックフォトサービスを作りたいと思っています。
いずれはスマホアプリも作りたいのですが、まずは「Webサービスを作ってから」というのがjsの勉強をはじめた理由です。

ただ、「データ型」「制御構文」「関数」「DOM(ざっくり)」「Node.js(ざっくり)」というあたりを学んだタイミングから
「JavaScriptとフレームワークを勉強するというプロセスは正解なんだろうか」
と不安になってきました。

恐らく数あるフレームワークやモジュールを使えば作れるんだろうとは思いますし、DBの制御も必要になるだろうと思って念のためPHPの教本も買いました。
APIも必要になるだろうとGoogleのAPIについて調べてみたり、コードを読んでみたりしましたが全然理解できないです。

正直なところ、何をどう勉強したらよいか分からなくなってきて混乱しており、というか、挫折しそうなほど悩んでいます。
「構文の基礎やDOM、Node.jsくらい完璧に覚えないと話にならない」
ということであれば、今一度勉強をやり直そうと思います。

雑な相談で大変恐縮ですが、主に相談させていただきたいのは以下3点です。

1.「漢字ドリル方式で何度も書く!」を心がけていますが、非効率でしょうか?(「さっさとフレームワークを覚えろ」みたいな)
2.皆さんならストックフォトみたいなWebサービスを作ろうとした場合、どの言語が最適だと思われますでしょうか?
3.どの言語をどんな流れで勉強するのがベストでしょうか。

ほかにも色々と伺いたいことはありますが、Webサービスの制作というスタート地点に早く立ちたいので、着実な勉強方法を知りたい気持ちでいっぱいです。
なにとぞ、アドバイスのほどよろしくお願いいたします。

0 likes

3Answer

1. 何度も書く非効率か?
 複数のコードをリファクタリングし、
 自分の1つのレシピに書き直すことが早道
2. どの言語が最適か?
 どれでもok
 レシピ作成は最初は3言語から初めて
 20レシピあたりから絞ることを推奨
3.どんな流れで勉強するのがベストか。
 目的(ストックフォトサービス)を
 実現できるレシピ調べ、1つのコードに
 リファクタリングする
 20レシピあたりから、1冊入門書を
 読んで、自分のリファクタリングが
 稚拙、幼稚であるか?思い知って、
 自分が選んだ言語に真面目に向き合う
 ことがベストです。
 (失敗から始める異世界言語!)

ストックフォトサービスは画像劣化させるサムネル等の画像変換がキーになると思います。

data:image/png;base64,....

例えば、サーバのローカルファイルの画像は
<img src="パス">で表示できますが、
DB保存の場合、どうしましょう?

BytesIO などでローカルファイルに画像を書き出さず、変数にbase64で保存し、直接、クライアントへbase64で送信する必要がでてくるでしょう。svg変換した画像、Live動画・・・どうしましょう?webSocketによるチャットはどうしましょう?

その時、開発フレームでは対応できないかも知れません。

個人的な感想ですが、ruby,python,go,php等でマルチスレッドhttpサーバ+マイクロアプリ構成(Ajax)で作成する方が早道とおもいます。
 例外処理を度外視すると、通勤時間で300行位で作成できました。go<python<ruby<php感はありますが、pythonはコードの美しさ、rubyはプロトコルの品質、goはコード短さで、phpは頑張れよ!で1へーです。

p.s. sslはnginxで実現するとテストが簡単です。

1Like

Comments

  1. @KATAKUNA

    Questioner

    お返事遅れて申し訳ありません。
    大変参考になるご意見ありがとうございます!
    回答を読んでパッとイメージできるレベルではないので、正直なところ「ふむふむ……。」と分かった気になってるだけですが、いつか必ず重要になる知識&心構えだなと感じました。
    皆さんのご意見も「言語はなんでも良い」で共通しており、なんだか安心しました。
    非ITの独学ですのでたびたび質問するかと思いますが、今後ともお力添えいただけると幸いです。
    このたびはありがとうございました!

僭越ながら作りたいサービスを作ってからその時利用した技術のデメリットやメリットがわかると感じるので、一旦作りたいものを作ってみれば悩みは解決するのかなと感じます

1.「漢字ドリル方式で何度も書く!」を心がけていますが、非効率でしょうか?(「さっさとフレームワークを覚えろ」みたいな)
開発ではあまり必要ないのかなと
資格の勉強とかなら自分もそうです!

2.皆さんならストックフォトみたいなWebサービスを作ろうとした場合、どの言語が最適だと思われますでしょうか?
購入した書籍のphpでもできると思いますよ!
ストックフォトじゃないですがweb漫画アプリでもurlで.phpのアプリ見たことあるので

3.どの言語をどんな流れで勉強するのがベストでしょうか。
作る過程でわからないところを都度調べるが一番効率いいと思います
なので自分が調べて信じた言語を信じて一旦作り上げるのが個人的にベストな気がします!

ひとまずあれこれ考えずに作りたいものを作るために調べて作っちゃえば、多分今感じている悩みは無くなると思いますよ
あと、プログラミング言語の優劣って確かに考えることあると思いますが、現時点で現役の言語はニーズがあるから現時点でも現役で利用されているので、この言語はダメ、この言語こそ至高という考えは個人的にはナンセンスな気がします
とりあえずなんでもいいから作ってしまえ!
大事なのは言語じゃなくてやりたいことの実現です!
いいお年を!

1Like

Comments

  1. @KATAKUNA

    Questioner

    明けましておめでとうございます。
    お返事遅れてもうしわけありません。
    皆さん共通して「とりあえず今いじってる言語で作りたいもの作れ」というご意見ですね。これはとてもやる気を引き出してもらえるアドバイスでした。
    そしてまずは「言語の優劣は考えるな」という点においても、安心感のある大変ありがたいアドバイスです。
    こちらで質問してよかったです。

    非ITの独学ですのでたびたび質問するかと思いますが、今後ともお力添えいただけると幸いです。
    このたびはありがとうございました!

 作りたいモノがはっきりしていることは良いことだと思います。作りたいモノのイメージを詳細に思い描いて欲しいと思います。

 ただ、プログラム言語もフレームワークもWebサービスも実装のための道具であって、道具から作りたいモノのカタチは定まりません。Webサービスで使われている言語には、それほど狭い用途性はありません(無いからこそ広く使われています)。すでに他の方がおっしゃられている「言語はなんでも良いです」というのはそういう意味であろうと思います。

 個人的には、まず作りたいストックフォトサービスの姿を明確にすることをお勧めします。
 そのサービスはどういうウェブページを持っていて、どういう機能ブロックを持っているのでしょうか。そして中核となる機能は何になるでしょうか(あるいは、最低限必要な機能は何でしょうか)。

 以上を踏まえた上で答えると以下のような答えになると思います。

1)効率性
 効率的ではありません。
 作りたいもの(機能ブロック)の動きを自分なりに描き(フロー図でも日本語(いや、何語でもいいんですが)の箇条書きリストでもなんでも良いです)、その動きをプログラミング言語で置き換えていくことがプログラミングです。この「作りたいモノ」を「プログラミング言語で置き換える」操作は漢字ドリル方式では身に付きません。なぜならあなたの造りたいモノは「独自のアイディア」に基づくものであって、誰もその手本を提供することはできないからです。もし漢字ドリル方式で身に着けた技術で実装できたのだとしたら、そのストックフォトサービスはすでに誰かが作ったものをなぞっているだけです。

2)最適な言語は何か
 自分ならPHPを選びます(たぶん、プロトタイプ作製の段階ではフレームワークも使わないと思います)。それはPHPにアドバンテージがあるわけではなくて、自分が良く使っていて公式ドキュメントをいちいち読み返さなくても済むからです(それでも時々読みます)。

3)どの言語をどのような流れで
 当たり前すぎることですが、プログラミング言語はコンピュータに行わせたいことを記述するもので、コンピュータが行えることというのは、(意外かもしれませんが)それほど多岐にわたるものではありません。ごく単純な動作を積み重ねさせて少し複雑なことをさせています。その「少し複雑なこと」の中にはだいたいの人が同じようなことをさせるものが数多くあり、そういうものはライブラリとして誰かがまとめてくれていて「フレームワーク」と呼ばれていたりします。(すでに誰かが作ったライブラリを自前で作ることを「車輪の再作成」と呼んだりしますが、最近はあまり見ない言葉ですね)
 ここから先は私見で、おそらく異論が多いことと思いますが、次のような流れが良いと思います。

  1. スタートアップは(何かの)言語のみで、シンプルな機能ブロックを作る
     作る物は最小限の機能で、下位レイヤがシンプルなものが良いと思います。
    フォトストックサービスなら、ダミーのフォトファイルを用意しておいて、その画像イメージを一覧表示するだけのもの、とか(これはファイラーと呼ばれるものに近いと思いますが)。

  2. 下位レイヤが少し複雑なものに手を出す
     入出力(Javascriptも使わないシンプルなフォームから投稿し、ファイルを配置する)やDBアクセスなどを持つ機能ブロックでしょうか。ファイルアップロードを伴うサービスはイタズラされないようなセキュリティ機能も必要です。複雑なものを作ることで使う言語の機能も広がって行くでしょう。

  3. 実際に作ったものを整理してドキュメント化する
     自分がどういう風にモノづくりしたか、整理しておきます。どういう機能をプログラムで実際に用意したでしょうか。最初に作った(プロトタイプということですが)機能には似たようなWebサービスで使う機能がおおよそ含まれているはずです。それが見通せるようになった後でフレームワークのドキュメントを眺めてみてください。
     そのフレームワークがなぜ便利に使われているのか良く解る(言い方を替えると「効率よく学習できるようになる」)のではないかと思います。
     また、フレームワークを使う中で出て来るトラブルの対応もしやすくなっていると思います。言語そのものに関わるエラーなのか、フレームワークを使うから発生したトラブルなのか、見極められるようになっていることでしょう。(これも「効率性」に関わってきます)。

 

1Like

Comments

  1. @KATAKUNA

    Questioner

    お返事遅れて申し訳ありません。
    現在は「Node.jsで何とかなりそう?」くらいの理解しかありませんが、やはりPHPの教本を買っておいてよかったです。

    シンプルなものを作る → 複雑なものに手を出してみる → 俯瞰でさらに理解を深める

    なんだか、頭の中を整理してもらって気分です。
    雑な質問にも関わらず体系的な回答をいただけてすごく嬉しいです。

    非ITの独学ですのでたびたび質問するかと思いますが、今後ともお力添えいただけると幸いです。
    このたびはありがとうございました!

Your answer might help someone💌