こんにちは、あっきーです。

前回ちょっぴりと話していた、Webアプリケーションがだいぶ形になってきました。 今回、比較的大きなWebアプリケーションを作成したのですが、複雑な処理、高機能なレイアウトなどを実装してくうちに、 データの流れた処理内容などをがわからなくなってきました。原因は、「できるだけ早く、動くアプリケーションを開発した結果、 データ思考の開発になってしまったこと。」そして、「凝縮度と依存度を全く意識していなかったこと」があると考えています。

そういうことがあって、オブジェクト指向の言語として、フロントを書き換えて全面リファクタリングすることにしました。 しかし、オブジェクト指向という言葉と、オブジェクト指向を使えば、大規模な開発にも使えるという言葉はよく聞くけれど、 具体的に、どういう実装をすれば、そのような状態になるのかイメージがつかない。

実は以前に、Javaを用いて、オブジェクト指向型のプログラミングを行っていた。しかし、当時の認識では、「class=オブジェクト指向」という認識があって、javaさえ使えば、大規模開発も出来る。みたいな事を思っていました。しかし、そんなことはありませんでした。 あるオブジェクトがあるオブジェクトに依存していて、複数のクラスがまとまって、全然分割が出来ず、1ファイル変更したいだけなのに依存しているせいで、複数のファイルの修正を余儀なくされた経験が合った。

今考えてみれば、そもそも「オブジェクト指向とデータ思考」と「オブジェクト指向とは」という考え(認識)に誤りがあったのだと分かった。この考え方は、将来永遠プログラミングを仕事にする人にとって、非常に重要な考えになると思った。今回たくさんの文献を読んで、考えて、理解したことを忘れないように、この場に記しておこうと思う。

続きを読む
こんにちわ、あっきーです。 私は今、自分でWebアプリケーションを作ろうとしています。売りがUIでの操作性なので、 たくさんの機能を盛り込みたくさんの更新をかける必要があります。 そこで、ajaxやらデザインやら、たくさんの要素が絡み合い、 一気にスパゲッティコード化するのが目に見えていました。 解決策としては、ReacとReduxを使えば、なんとかなりそうななんじがしました。 Reactを調べると、日本語に関する情報があまりにも少ない。 もちろん英語も読むんですが、それほど英語力が高くありませんので、 たくさん時間がかかってしまいます。 なので、そういうときは日本での情報をたくさん読んだあとに、 英語でかかれている本家のサイトをみるようにしています。 ですが、Reactに関しての情報がとても少なく、 特に、React+Reduxに関する情報は更に少ない。 しかも、Reactが相当な頻度でバージョンアップを繰り返しているので、 たとえ日本語での情報が合ったとしても、すでに廃れた内容であり、 今の最新バージョンでの内容と合わなかったりと、 苦しい状況があります。 だからといって、Reactを使ったWebアプリケーション開発を諦めるわけにはいかない (開発者としての意地)ので、まずは、小さなアプリをを作って進めていく事が React使いになるための最短の道であると、思いはじめています。 現在のところ、Googleで「React」「React入門」「react redux」 「react ベストプラクティス」と調べて出てくるを片っ端から読んでつなげることで、 はっきりと言えることは、「reactがviewのみの機能を提供してくれていること」 「ajaxなどの機能はreduxを使って、データ管理をしたほうがスパゲッティ化を防げるということ」の2点です。 その他のReactで表示させるデータの伝搬などでは、はいかつ途中でエラーが絶えず、原因がわからず、 Componentがどうのこうのなんて言えるレベルではありません。 とりあえず、私が調べたURLのリストをべた書きしておこうと思います。 分類はしてませんが、何か詰まったときに役に立つかも知れないので、一応という側面が強いですが、、、 http://creator.dwango.co.jp/3413.html http://ma3tk.hateblo.jp/entry/2016/06/20/182232 http://qiita.com/Chayata/items/28bc6f6af4bc41e89e03 http://qiita.com/hrsh7th@github/items/c7f33f3d18d5306b22e1 http://nabeliwo.hatenablog.com/entry/2016/06/10/012400 http://qiita.com/nabeliwo/items/ac4b77324a9989e8e6bb http://sssslide.com/speakerdeck.com/koba04/reactfalsezui-xin-dong-xiang-tobesutopurakuteisu https://www.ibm.com/developerworks/jp/web/library/wa-react-intro/ https://facebook.github.io/react/tips/dangerously-set-inner-html.html https://facebook.github.io/react/docs/package-management.html https://facebook.github.io/react/docs/tooling-integration.html https://facebook.github.io/react/tips/dom-event-listeners.html https://facebook.github.io/react/docs/multiple-components.html https://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html https://facebook.github.io/react/docs/tutorial.html http://qiita.com/okmttdhr/items/63a9191fa2ad37dc1133 http://postd.cc/best-practices-for-building-large-react-applications/ http://mae.chab.in/archives/2874 https://speakerdeck.com/koba04/reactfalsezui-xin-dong-xiang-tobesutopurakuteisu http://www.slideshare.net/axross/react-48651340 https://facebook.github.io/react/docs/multiple-components.html#dynamic-children https://appendto.com/2016/05/what-is-difference-between-props-and-state/ http://kenjimorita.jp/imadakarawakattareact/ http://qiita.com/koba04/items/43200b6fd6e6f43f0d8d http://qiita.com/koba04/items/bc13d1f42964278ae14e https://facebook.github.io/react/docs/reusable-components.html http://blog.koba04.com/post/2015/01/28/published-react-v0.13.0-beta1/ http://qiita.com/nownabe/items/2d8b92d95186c3941de0 https://facebook.github.io/react/blog/2015/09/02/new-react-developer-tools.html http://qiita.com/kuniken/items/a22adda392ccc30011b1 http://qiita.com/kuniken/items/963cb977dffd3e662e40 http://js.studio-kingdom.com/react/guides/transferring_props http://qiita.com/trapple/items/e7d64f62c1286d76f328 http://qiita.com/koba04/items/039b9c974df284766f64 http://stackoverflow.com/questions/30608347/how-to-pass-arguments-to-functions-in-react-js http://qiita.com/konojunya/items/cb026a2aa3df1837d587 http://qiita.com/erukiti/items/e16aa13ad81d5938374e http://qiita.com/yuinchirn/items/286353f5c80cc44f1caf#_reference-faf5954aa90ea07d9bde http://qiita.com/kiita312/items/d769c85f446994349b52 https://github.com/erukiti/tomato
続きを読む

エンジニアとして仕事をしていると、次々に新しい技術が生まれてきます。 こういう技術っていうのは流行り廃りがとてもとても速いです。

数年前にjavascriptのサーバーサイド実装NodeJSが突然登場して、 一気に浸透していくのを肌で感じました。 そして、npm,gruntが登場し、web業界ではgruntを使う人達が出てきました。 その後1年もただずにgulpが登場して、シェアを取られてしまうといった現象も起きていました。

php7が登場して、phpの書き方が変わったり、golang,scalaが登場したりと、 あらゆるところで技術革新が進んでします。

フルスタックエンジニアの俺としては、それらの知識をすべて身につけて、 プロジェクトごとに最適な言語使い方で、様々な価値を生み出していきたい。

しかしながら、たくさんの知識をインプットしたところで、 すぐに忘れていってしまうし、勉強出来る時間を取れるのも、 学生の間だけでしょう。

できるだけ効率よく、技術知識を消化するのにはどうしたらいいのか、 という視点からこの記事をいていきます。

続きを読む

ブログで集客をしたいのです。みんなに見てもらいたいのです。 そのために濃い記事を書かなきゃいけないけれど、書き方がわかりません。

どういう構成で書いて、どの部分に気をつけば読みやすくて、こっちの言いたいことが伝わるのか。 それが知りたいです。

今では、ネットに沢山情報が転がっているんですが、断片的な情報しか見つけることが出来ませんでした。 なので、自分用にブログ記事の書き方をまとめることにしました。

続きを読む

今日、スマホを見るとこんな記事が流れていました。

これを見た時、俺は「記術的負債かぁ〜。プログラムを経験した事ない人達は、表面上での動作しか見えてないわけだし、絶対理解しづらいだろうなぁ。」と、ふと思いました。

みなさんは、どう思いますか?

俺は何度となく個人開発中に技術的負債の壁に当たりました。1ヶ月後に開発を再開すると、 内容が全くわからない。何の処理をしているのか、理解できない…

泣く泣く、ボッシュートになりました。

続きを読む

2016年9月1日、スタバで新しいドリンクが出ました! 「ゴールデンメイプルフラペチーノ with キャンディウォルナッツ」

もう、なんて言って注文したらいいのかわからなくなるぐらい、長い名前ですが、 このドリンクがとっても美味しくって、絶品でした!

早速レビューしていきます!

続きを読む

僕は、あるサービスを作りたくなりました。それは、「ブログリンクカードをユーザーが自由にデザインすることの出来るサービス」というものでした。しかし、サービスの特性上、サーバー側であらゆるサイトをクロールして、情報を収集、管理をする必要があります。設計の段階で、ユーザー側のサービスと、クローリングサービスの2つにマイクロサービスとして分割し、それぞれをapiで通信する方法がベストだということになりました。

システム上、絶対に不可欠なのがデータベースです。日本語での情報が豊富という理由から、データベースはMySQLを採用することにしました。しかし、データベースを運用していくには、ある程度の基礎知識が欠かせません。今の僕のレベルでは、SQL言語が分かる程度だったので、データを絶対に壊さないためにレプリケーションやサーバー分割、テーブルの型など、細かいところまで勉強する必要がありました。

ほとんど初心者の僕が、MySQLのレベルを実際に運用出来るレベルまで持って行くには、どのようなことをするのが一番手っ取り早いかを考え、お伝えできればと思っています。

続きを読む

1977年、C言語は生まれた直後にawkというスクリプト言語が生まれました。 そんなに昔からあるのに廃れることのない技術となっているのには、 シンプルな言語仕様とテキストを処理する場面で十分な実用性があるからだと思いっています。

awkを使い始めた人がに触れることで、その操作性や合理性に感動し、 複雑な表形式ファイルに対して全く苦痛がなくなり、 間違いなく幸せになると思います。

ぜひ、awkの世界に足を踏み入れて、体感をしてみてください。

続きを読む