woshidan's blog

そんなことよりコードにダイブ。

書いていたものが動くようになりました、の反省

5ヶ月くらいちょこちょこ書いてみて、出来るようになったこと、反省したこと、これからの課題

 

五ヶ月でバグがある(修正中なう)けれど、それなりに動くwebサイト一個作ってみて思ったことを書いておきます。

半年か一年位して、お前分かってないよ笑っていえるくらい成長していたらいいなぁと言う感じで。

 

出来るようになったこと

JavaScriptがかけるようになった

 まだリファレンスを参照しながらの部分は多いですが、少しずつメソッドも覚えて

 phpにデータを送って連携させられる程度に書ける様になりました。

 

連想配列が分かるようになった

 書き始める前は意味がよく分からなかったです。

 想像した以上にたくさんのデータを受け渡すので変数名をいちいちつけるより

 連想配列なるものを使ったほうが楽では?と思って使ううちになれていきました。

 また慣れたら、特殊な連想配列であるGETやPOST,FILEなども理解しやすくなりました。

 

SESSION,COOKIEの意味が少し分かるようになった

 POSTやGETしか使えなかったのですが、複数のページ間でデータを受け渡ししたいのをどうしようか、

 って考えた結果使わざるを得なかったので必要な分だけ覚えた感じです。

 必要って強いですね。

 まあ、セキュリティが云々とか設定が云々とかは詳しく分からないのですが。

 正体不明の高度な受け渡し方法みたいな部分(分からないものに対ししばしばそう思う)ではなくなってきました。

 

関数を小分けに書くようになった

 部分的に変数を求めたものとか、後で案外再利用したくなるので

 10行くらい書くなーって思ったらとりあえず関数に分けるようになりました。

 そして、先日requireで関数を他のファイルから読み込むことを覚えたので

 もっと使いまわせるようになりそうです。

 

2時間で200行くらいをアルゴリズムの設計から実装までを行う(PHP,JavaScript)

 ただしテストは別である。アルゴリズムもどちらかというかフローチャートというか。

 実はコレ以前に書いたのは、これのプロト版(コレ自体がプロト版では?という突っ込みはなしです)

 数百行でCUIで動く関数電卓くらいしか書いたことなかったです。それも課題でしか。

 だからこれにはちょっと成長したなと、思ってインターン先でこれくらいかけるんだよって社員さんに

 見せていただいて不遜ながらえーとこの量だと自分の書くペースの3倍はあるぞ??ってなり、

 「あ、これは初心者になったってレベルでしかないんだ!」って気づいて帰ってきたという。

 途中からその関数だけで機能が完結するということがなくなってきたので機能ではどれくらい、

 とは言いがたいのですが。

 

反省したこと

設計ってすごいことなんだ

 正直、自分で書いてて仕様が曖昧で詰まったり関数何使ったらいいか迷ったり、できる!って思ってたことができなくて仕様を変えたり、

 変数の量がどれくらいになるかはっきりしなくて、テストデータのように戸惑ったりしていたので、

 最初にプログラムがこうなりますってはっきりと予測して、それをスタッフが理解・確認できるように

 文書化する設計のお仕事ってすごいな、と思いました。

 実際設計をする人がどれくらい把握して設計してるかどうかは知りませんが。

 

仕様書って大切なんだ

 仕様書がないとこの関数がどの型の値を返すかすら分からないことがあってうけます。Java等と比較した場合のphpJavaScriptの難点なのかもしれないです。

 

できると思うことには想像以上時間がかかること

 正直この手のサイトはたくさんあるので、もう少し簡単にできるかと思いました。全然そんなことなかったです。現実は非情です。

 といっても、教本にあるとおり、簡単なもののソースコードを移してみて、少しずつステップアップは性に合わない(またフラグが……)ので、

 もう少し自分の実力とか現実を見たほうがいいのは分かってるけど、そうなると出来上がってもうれしくないものしか出来ない気がして少し萎えます。

 こういうのがやりたいし、こういうところがやってるし、できると思うからやる、

 という姿勢は捨てずに2倍程度時間ないし作業密度を確保する方向で行こうかと思います。

 2/11にRuby on RailsをまたJobwebさんのところの勉強会で触ってみる予定なのですが、フレームワークを利用できるようになって時短、というのもアリか。

 

 まあ、requireが当初理解できなくて、パーフェクトPHPフレームワークの部分を「難しい」って投げちゃった程度の頭ですが←

 

出口を意識すること

 正直、自分はwebサービスとして流通させるようなことは出来ないから~って捨てて書いてたのですが、

 やっぱりそれは勿体無い気がしました。労力的に。バイトに換算したらおいくらよ?

 インターン先でお世辞だけれど「御社に導入するとしたらおいくら?」って聞かれて、

 あ、ファイル構造とアクセス権限かっちりして、データベースとかのアクセス先の設定画面と説明書とか作ってCGIのパッケージみたいにして完成させたらよかったかもなーって思って後悔しました。サイボウズとかみたいな感じ(妄想)。

 気が向いたらそうするかもしれないですが、いまは眠いので想像できません←

 とりあえず今やってるAndroidgoogle playに出したいので、

 明日クレジットカード取りに行って近々デベロッパー登録したいと思います。

 

これからの課題というかこれから取り組みたいこと

仕様書を作る

 そしてきちんと保存する。

 人に説明することになったとき、とても困るので、紙にボールペンでいいので、保存。

 

進捗管理ツールの導入

 書き始めた当初は、正直人にコード見せるの恥ずかしかったんですけど、

 (正直情報系も含んでいた学科の非情報系だったのでコンプレックスみたいなものがある)

 いまはそんなこともなくなってきたし、そろそろ導入したいです。

 差分とか見れたらやる気上がる気がします。

 

作業時間を把握する

 自分の作業計画を立てるとき、この一年は就職活動が終わっても忙しいと思われるし、

 社会に出れたらもっと忙しいし、仕事として自分の作業量を把握することが必要になってくるので。時間数、機能概要、行数を記録したいです。

 

コミュニケーション能力大事

 インターンで「コミュニケーション能力以外は○」という内容のフィードバックを受けたり、

 コミュニケーション能力に自信がなくて、人脈云々な要素から遠ざかりたくなっているところがあって、

 得意にまではなる必要はないけど今の現状だと過剰にチャンス削っている感じがするので、なんとかして伸ばしたいところ。

 ああ、でも恥ずかしいので具体的に方法を書くのは許してください。方法を取ってはいるんです←

 

反省は以上で明日からも就職活動などなど頑張ります。