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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

5回答

2558閲覧

漠然とした質問…プログラムの書き方について

ssmxgo

総合スコア178

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

1グッド

3クリップ

投稿2016/08/24 02:55

利用言語
PHP Codeigniter(PHPフレームワーク) jQuery Bootstrap

初心者プログラマが必要にかられて断片的に断片的に勉強しているため、開発の規模が大きくなるにつれ、コードの書き方やもうちょっと大きな単位でのコードによって実現している機能に一貫させられない?

###ハマっていること
(※流し読みしてください、日本語が苦手なので)
いわゆるスパゲティ状態になる
オブジェクト指向?で作っていく発想がないからなのか、必要とされ機能をその度追加していくのですが、気がついたら
1.それぞれのコードは包括した1つの関数プログラムでまとめるべきではなかったのか?
2.違うコーディングでそれぞれを実現してるけど同一の手段で実現させられなかったのか?

車輪の再開発ばかりしていますし、その度、車輪のバグを検証して非常にコードの管理上も良くないと感じてます。

特に顕著だったのが、jQueryを利用した画面作成とajax
jQueryはHTMLに組み込まれてるため、分離しにくい?抽象化(←あってるのかな)しにくい?、単に技術不足っぽそうな気もします。
その度、違った車輪ばかり作ってしまいます。

逆に、一例と出すのは如何なものかとも考えたのですが、Bootstrapは良い
当たり前と言われそうですが、私にとってはCSSも同様なことが考えられ、自分でCSSを書いていくと冗長で使い回しの聞かないものを量産していきそうですが、Bootstrapの利用でパーツや画面を構造的に作りやすいです。

###知りたいこと
上記に対する断片的なノウハウと言うより、プログラムを書いていく上で何が必要で、今なにをどのように学ぶべきなのでしょうか?
設計とか、オブジェクト指向とか、画面遷移図とか、UMLとか、既存のIDEを利用しな!とか(今はvim or プレーンatom)、オープンソースの◯◯を解析して参考にするといいよ!とか、そういう次元じゃねーよなど。

なんでも良いのでアドバイスください。
残念な質問でごめんなさい。

LLman👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

あなたに今必要なのはリファクタリングではないでしょうか。
リファクタリングを学ぶことで、自分のコードに対してどのようなリファクタリングができるかがわかります。そうすることでコードの良し悪しを判断できるようになります。

投稿2016/08/24 03:01

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2016/08/24 03:04

ありがとうございます。リファクタリングというキーワード、調べてみます。 ※その他の回答も受付させてください
yona

2016/08/24 03:05

たくさんの回答を参考にした方がいいですね。
ssmxgo

2016/08/24 03:11

ありがとうございます。色々な観点でのアドバイスがありそうです。プログラムを問わず、プログラマーの思想に関わるものなのでいろいろご意見いただけるのを期待しています
yona

2016/08/24 04:10

リファクタリングができるということはリファクタリングの量を最小限になるコードを最初から書けるということにつながります。 また、リファクタリングの対象は自分のコードだけでなく人のコードを対象にすることもできるので、誰が良いコードを書くかを知ることもできます。
ssmxgo

2016/08/24 04:40

なるほど、それはそうですよね。リファクタリングを恐れずコードを多く書く。そしてやはりリファクタリングは繰り返していく。その中でリファクタリングを必要最小限のプログラムが書けるようになるということですね! ありがとうございました
guest

0

適切なアドバイスになるかわからないですが
「リファクタリングを恐れない」
どんなに熟練の人でも、一度のコーディングで完璧に仕上げられる人はいないと思います
がんばってください

投稿2016/08/24 03:11

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2016/08/24 03:16

おおおおおぉ…、 なんかosmoc-1970様に通じる話しですね、プログラマとしての実感なのでしょうね。 いずれにしてもリファクタリングがキーワードになりそうですね。 理想的なリファクタリングを追求しても仕方ないから、その都度、臨機応変に対応しつつ熟練の中でベストリファクタリングを見出だせ。 が、ぶつかっている壁はリファクタリングである…ということかもしれません
ssmxgo

2016/08/24 04:44

ちょっと文面を捉え違いしていたかもしれません。リファクタリングしない…ではなく、今後行うであろうリファクタリングを恐れずかけ!ってことですね。 いずれにしても。多くコードを書いてリファクタリングする中で、リファクタリング最小限のコーディングを学んでいくということになりそうですね
takito

2016/08/24 05:14 編集

他の方と回答がかぶっちゃいましたね、、、 リファクタリングとは、すでに動いていた部分にも手を加えることになるので、壊してしまうのではないか、新たなバグを埋め込むのではないか、という恐怖(リスク)との戦いが伴います しかし、非効率で冗長で保守性の低いコードを放置するより、後々のことを考えて勇気をもって書き直すことも重要です 最初からすべてうまく書こうとするのではなく、うまくないところは書き直せばよいと思います
takito

2016/08/24 05:11

「今後行うであろうリファクタリングを恐れずかけ!ってことですね」 ・・・です!
guest

0

まだJavaScript+jQueryで消耗しているの?

仰るとおりJavaScriptはWebサイト上でscriptタグから呼び出すという制約があるので、
PHP Codeigniterのように、指定のディレクトリにコントローラーやモデルのファイルを設置するだけで、
必要な時に必要なだけ勝手に呼び出してくれるというゴールには中々辿りつけません。

私もこの職場にジョインする前は同様の問題を抱えて居ましたが、
ガチのNode.js使いが側に居ることで非常に勉強になり、今ではすっかり解決しました。
その軌跡を下記にざっと書きだしたので参考にしてみてください。

  1. まずは Node.js と Gulp を覚えましょう。

gulp-concatライブラリを使って、相関のあるファイルをデプロイ直前に1つのファイルに纏めて公開領域のjsフォルダに吐き出すという事を覚えれば、
ページ依存のロジックと関数を自在に切り出せるようになります。
分離出来るようになると言うことは、フォルダ分けして管理出来るということです。
(とはいえ、まだまだScriptタグで管理することと大差ないですが…)

  1. 次に、 Browserify、もしくは Webpack を覚えましょう。

これにより、gulp-concatで手動でやっていた事から開放されるようになります。
webpack で始めるイマドキのフロントエンド開発←を読めばイメージし易いでしょう。

  1. 最後に jQuery から卒業してJSフレームワークを使いましょう

jQueryではコード側からDOMを操作するので、HTMLとJSが密結合になり辛くなります。
JavaScriptが値を所持し、HTML側がその値を勝手に参照して、あるべき姿に勝手に置き換わるのが理想です。
(所謂オブザーバーパターンやデータバインディングと呼ばれる手法です)
メジャーなJSフレームワークの多数は上記の手法で解決してくれますが、初心者にも使いやすいVue.jsをオススメします。


Bootstrapが綺麗と感じるのは、HTMLの問題がHTML上で完結しているからでしょう。
JSフレームワークの世界に慣れ、関数をファイル分割して管理することにも慣れたら自然とステップアップ出来ると思います。

<button type="button" class="btn btn-primary btn-lg btn-block">Block level button</button>
たかがボタン1個で何回buttonやbtnタイプさせるんだ氏ね
もう少し慣れてくると↑のような事を平然と口にしてる気がします
妥協するのか、終わりなきオレオレCSSフレームワークの旅に出るのかは人それぞれですが…

投稿2016/08/24 06:03

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2016/08/30 11:58

たかがボタン1個で何回buttonやbtnタイプさせるんだ氏ね もう少し慣れてくると↑のような事を平然と口にしてる気がします wwwww ありがとうございます。う〜〜ん!実は経験ないのでベストアンサーに評価を変えることは出来ませんが、実は他の皆さんが対処療法の中で経験を積む、という提案に対し「それしかないのかなぁ」と学べた文、ちょっとがっかりでしてたところでした。 設計の仕方の手法かなとも思ったのですが、そうか、今時のJSフレームワークとは必要あって出てきたのですね。新しいもので抵抗感がありますが、順序を示してくださったことはとてもハードルが下がります! 気づくのが遅くなって申し訳ありませんでした。テキスト<ベストアンサー>です! ありがとうございました
guest

0

ココに書いていいのかな…?

どうやって綺麗なコードを書くか?
https://codeiq.jp/magazine/2014/02/5464/
も参考になりました。

  • とにかくコードを書く
  • 良書を読み、手を動かして身につける
  • 師匠を見つける
  • 弟子を持つ
  • オープンソースのコードを読む
  • コードレビュー
  • ペアプログラミング
  • TDD、BDDを学ぶ
  • オブジェクト指向エクササイズを実践する
  • 各種解析ツールを利用する
  • 可読性を重視した言語を選択する

投稿2016/08/24 05:01

ssmxgo

総合スコア178

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラムを書いていく上で何が必要で、今なにをどのように学ぶべきなのでしょうか?

まずはちゃんと堅牢に動くプログラムを作る!
「車輪の再開発」全然OKではないですか。開発できているのであれば。

ただ、他人と共同作業するとわかってきますが、プログラムの作り方は答えが一つではなく、人それぞれ違ってきます。
それがわかったときに初めて「抽象化」やら「オブジェクト思考」やらの恩恵をうけることになるでしょう。

投稿2016/08/24 03:04

osmoc-1970

総合スコア124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2016/08/24 03:10

ありがとうございます。 まずはちゃんと堅牢に動くプログラムを作る! => そうなんですね! 今の職場でも「理想をたどるより、目の前のものを確実に形にしていく」と言われて一年やって来まして、動くプログラムを作るという考え方の重要性を学ばせて頂きました。 しかし、振り返ってみると車輪ばかりでこりゃマズイなぁぁって感じています。(書き直すにも膨大すぎるし) なので、少しでも効率的な設計?コードの書き方がわかればなー…と、思いまして質問させて頂きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問