読者です 読者をやめる 読者になる 読者になる

ガツンと。

文章書くのって難しい

MVCのmodelについて認識違いをしていたのを修正したら、すこしプログラミング力が上がった

MVCについて誤った認識・理解をしていた。とくにmodelについて完全に思い違いをしていた。

 

プログラム設計をするとき、機能のもたせ方について人と意見がまったく合わず、言われることも理解できずに悩んだが、これはMVCのmodelの理解が誤っていたからだった。

改めてMVCを調べ直し理解が向上したので、悩む方向が絞られて少し楽になった。
※まだ完全に悩みから開放されたわけではない。。

ModelとはDBのレコードを表すClassの事で、DB操作する事が責務だと思っていた。

cakePHPの使い方を勉強している時に初めてMVCという物を知った。
cakePHPではmodelはDBのレコードを表すClassを作って簡単にDBへの値の出し入れをすることが出来るようになっていた。

だから、文章としては「modelとはビジネスロジックに責務をもつ」と読んでいたが、感覚的にmodelとはDB操作をおこなうClassのことだと思いこんでしまった。

そう思ってしまっているから、本来modelに書くはずのビジネスロジックを書く場所が自分の中で定まらず、その時々の考えであっちこっちに記述してしまうことになってしまっていた。

言葉通りに理解すれば良いだけだったのに、遠回りをしてしまった(-_-;)

池上彰「伝える力」を読んだので要約する

プログラミング業務にて先輩などに相談するときに、やりたい事を説明しなければならない事がよくある。そんな時、自分は文章でも口頭でもなかなかスムーズに伝えることができない。
そんな説明能力の低さをなんとかしたくて、池上彰の「伝える力」を読んだ。
練習として、まずこの本について説明をしてみた。

要約

[前提条件]

自分が深く知っていなければ、伝えようとしている物・事の内容は相手には伝わらない。だから、伝える前に自分が「伝える物・事」を充分に理解しておく。

 

[わかりやすく伝えるためのポイント]

  • 伝える際には具体的な言葉を使うようにし、抽象的な表現になりがちな「〜的、〜性」といった言葉や、カタカナ語は使わないようにする。
  • 難しいことでもできるだけ簡単に説明する。
  • 相手の立場になった説明の仕方をする。「相手にとって、この話の内容はどういうことなのか」を中心に話す。
  • 図を使う場合、図に使うテキストは重要な事のみにして文字数を少なくする。詳細な説明は本文、口頭で行う。

[聞いてもらう・見てもらうためのポイント]

  • はじめに「つかみ」で興味を引く。「それどういうこと?」と思わせる。
  • 会議では、自信を持って、一人一人の目を見ながら話す。

[ビジネス文書で伝えるときのポイント]

  • 文書のフォーマットを身につけ、優れた文章の書き写し練習を行うことで表現力をつける。
  • 報告書では5w1hを盛り込み、簡潔に記載する。

[文章力をつけるには]

  • 自分の書いた文章を客観的に確認する手段をもつようにする。例えば、プリントアウトしてみたり、時間を置いてみたり、音読してみたりする。
  • 他人のレビューを受けて意見をもらう。
  • ブログを書く。
  • 新聞のコラムを要約する練習を行う。

 

伝える力 (PHPビジネス新書)

 

プログラミング力向上させる

プログラミング能力を向上させたい。

 

自分に不足している事を考えてみる。

 
[機能の仕様決め]
習熟度△
理想の仕様なら決められるが、実際は実装との兼ね合いの部分があるので、実装の想像がある程度できないとすんなりと決められない。
 
[実装の仕様決め]
習熟度☓
とりあえず動くものは出来るが、ベストな仕様とは程遠い。
レビューにてボコボコにされる。
 
[コーディング]
習熟度△
実装仕様が固まっていればそれ通りには作れる。
標準ライブラリ関数の存在を知らない場合などがあり、ややこしい書き方をしてしまう時がある。
 
[テスト]
習熟度☓
テストコードは書いていない。
自分でパターンを洗い出して想定通りに動いていることを確認する。
コード修正が入るたびに繰り返すので時間も掛かっている。
 
仕様書作成]
習熟度△
UMLの記法はなんとなく知っている。
仕様書を見たことがなく、フォーマットも知らない。
仕様書を書く業務はないが、身内に仕様を説明シーンがあり、説明のたびに文章で書くようにしている。


足りないものは今やっている事で鍛えられていくか、鍛えられていない場合にはどういう対策をとるのか考える。

[機能の仕様決め]
業務で教わることがケースバイケース過ぎて未だに指針をつかめておらず、迷うばかりで向上していない。
一度、ベストではなくても「この方針で考えるべき」というベースをつかむ必要があると思う。
それを知るためには、他人の書いた仕様をたくさん見るのがよいと思う。
 
[実装の仕様決め]
同上。
 
[コーディング]
自分から生み出されるコードはたかが知れており向上していない。人のコードを読んで幅を広げる必要がある。

[テスト]
手が回らないので、仕様決め・コーディングのスキルが安定するまで置いておく。
業務ではしっかりしたテストを学べない為、上記スキルが安定してきた時に自分で何かを作成し、そのなかてテストフローを導入してみる。
 
仕様書作成]
web上で見れる仕様書の形式を見てフォーマットを学ぶ。

人の作ったものを見て学ぶ

今まで何度かコードリーディングを行ったことがあったが、時間ばかり使って何も身につかなかったように思う。だから、コードリーディングを避けてきた。
何も身につかなかったのは、コードリーディングを行うことで得たいものを明確にしていなかったからだと思えてきた。
今回は明確な2つの目的がある。
・コーディングテクニック
・コードの構成
とくに「コーディングテクニック」についてはコードを見ているだけでは気づかなかったりするので、写経を行って拾っていこうと思う。

facebookがおもんないわけ

最近Facebookおもんないわーと感じるのがなぜなのか考えてみた。

投稿されてくる内容がおもんない

  • 誰がどこ行ったとか興味がないからおもんない
  • 趣味のことを上げがちだが、これも興味がないからおもんない
  • 子供の成長報告もあったことが無いからおもんない
  • 人の飲み会風景おもんない

じゃあ、何だったらおもろいのか?

  • 自分も参加したキャンプの写真投稿
  • 自分の興味のある趣味関連の投稿
  • 美人・かわいい系女子の近況
  • 自分が行けなかった飲み会の写真投稿
ここまで考えて解ったのは
「おもんないのは自分がコミュニティに関わってないからだ」
ということだった。

snsだと言う事を忘れていた。

何でも批判される世の中になった理由

民衆は周りの声に引っ張られる。
ネットでは批判記事のほうが注目される。
引っ張られて批判的な意見を持つ人が増える。
その人たちに引っ張られてさらに批判的意見を持つ人が増加する。

iPhoneとandroidの良いところ悪いところ

最近iPhone5s から Nexus5xへと乗り換えたので、感じた両者の違いを書く。

 

iPhoneが優っているところ

[物理ボタン]

iPhoneの物理ボタンは今思えばかなり使いやすかった。

  • マナーモードへの切り替えや、音楽を聞いている時の音量調整もポケットに入れたまま行える。
  • とっさの時にはホームボタンを押せば、アプリは終了しホーム画面へ戻る。


これらの操作がNexusでは少し難しいものとなる。

  • マナーモードへは、画面を一旦表示させる必要がある。
  • 音楽再生中の場合だとマナーモードにするには画面操作が必要になる。
  • アプリによっては、ホームボタンが表示されていないので、どうやればホームに戻れるのか迷うシーンがある。
  • 音量ボタンと電源ボタンの位置が近く感触も似ているので、見ずに操作することが難しい。また、知らぬ間に押してしまっているなど、誤操作が頻発する。

[設定]

設定はどうしても難しいものだが、iPhoneの設定はNexusのものに比べて分かりやすかった。一つの例でiPhoneの「おやすみモード」とNexusの「通知を非表示」で比べる。

これはどちらも機能の意図としては「寝ている間は各種通知の音や画面の表示をoffにしておく」というもので、ネーミングからして「おやすみモード」のほうが機能イメージに近い。

Nexusには「通知を非表示」とメニューがあるが、どういう設定を行うのかよくわからない。

こんな感じで、Nexusにはよくわからない設定が多い印象。

[スクロール・タッチ]
Nexusを使って初めて感じたが、iPhoneのスクロールとタッチの感触はかなり優れたものだった。
Nexusでのスクロールは若干引っかかったり、
スクロールしているつもりが、たまにリンクをクリックした事になってページ遷移してしまったりする。
タップも、意図したところよりも下の要素をタップしたことになっていたりするときがある。

 

[コントローラー付きイヤホン]

iPhone対応のコントローラー付きイヤホンを使うと、iPhoneを取り出さずに音楽の再生停止・曲送り・曲戻し・音量の調整ができるが、Nexusだと再生停止・曲送りしかできない。

 

Nexus5xが優っているところ

[価格]

すごく安かった。
iPhoneだと10万円前後かかるところが、Nexus5xは35,000円ほどで買えた。
この価格ならiPhoneとくらべて多少不便なところがあっても許せると思えた。


[ウィジェット表示機能]

ホーム画面にウィジェットを表示できる機能は結構便利。

[googleサービスの連携]

googleサービスとの連携がiPhoneとくらべてかなり優れているので、何も考えなくても最初から使いこなせる。

PHPからプログラミングを始めた僕はなぜ糞コードを書いてしまうのか

PHPからプログラミングを始めた僕はなぜ糞コードを書いてしまうのか。

それは、オブジェクト指向を認識しづらい環境で育ったから。

 

hello worldで「入力」「出力」の感覚を掴み損ねた。

最初にプログラミング体験したのが「hello world」だが、webアプリケーションなので「入力」「出力」の感覚を正しく得られなかった。

「こう入力があると、こう出力されるのか」ではなく、
「こう書いたらブラウザにこう表示されるのか」という感覚。

今思えば、リクエストが「入力」レスポンスが「出力」だが、厳密にいうとこれもwebサーバーのものであって、自分が書いたコードの入力と出力を直に体験出来ていたわけではなかった。

フレームワークに手を出し、モジュールの感覚を掴み損ねた。

フレームワークの存在を知り、それを使ってwebアプリケーションを作れた。

「プログラミング力 = フレームワークのルールを理解して適切に使える能力」
というような感覚があった。

小さなプログラムのパーツを作り、組み合わせて大きなプログラムにする機会がなかった。

 

上記の理由により、僕はオブジェクトや入出力の感覚が欠如している。
だから新しい機能を追加しようとするとき、
使うべきでない値を使おうとしたり(入力感覚の欠如)、
エラー時が考慮されていなかったり(出力感覚の欠如)、
特定の状況でしか使えない物になってしまっていたりする(モジュール感覚の欠如)。