2015年09月26日

プログラミングで大事なこと

プログラミングで大事なこと夜にふと"プログラミングで大事なこと"を思いつくことがあるのでメモ今日思いついたのは2つ(追加2つ)①思考する力当たり前かもしれませんね。でも僕はずっとプログラミングで大事なのは数学だと思ってました。で...

Posted by 部谷 修平 on 2015年9月25日


上の投稿について、もう少し具体的に書きたいと思います。単純にプログラミング初心者の方が一歩進めるようになればと思います。

@思考する力
思考を整理する力がプログラミングに大事ということですが。どういうことか?
例えば、Milkcocoaの仕組みを考えてみます。まずMilkcocoaを作る前に、次のように思考します。

1.どういう人やシステムがこのMilkcocoaに関わってくるか?Milkcocoaを使ってサービスを作る開発者(開発者)?認証の仕組みでFacebookやTwitterも関わってくる?MQTTに対応したい、MQTTクライアント?

2.それらの人々やシステムはどのようにMilkcocoaを使うか?

・開発者はMilkcocoaにログインする
・開発者はダッシュボードでアプリを作る。
・開発者はダッシュボードでアプリをアップグレードできる。
・開発者はアプリのapp_idを使って、Milkcocoaに接続できる。

「開発者」「ダッシュボード」「アプリ」「アップグレード」「app_id」
頭の中に名刺が浮かびます。これを整理します。永続化すべきものはどれか?Webであれば画面に関するものはどれか?「アプリ」は「app_id」を持っている?「アプリ」は「app_id」をどのくらいの頻度で使う?
ログインした後にできることはどれか?アプリに対してできることがどれか?

 というようにいろんな視点で「整理」をします。要するに似ているものをまとめたり、片方が片方を「持っている」場合には、どのぐらい「強く」持つべきかを考えます。「整理」の方法としてオブジェクト図を書いてクラス図を書くという方法があったり、クラス図の部分要素として汎化、特化、集約みたいな思考の表現方法があります。思考の整理方法として、こういうものを捉えると良いと思います。

 継続的にどのくらいきれいに整理できるか?でプログラムの保守性などなどが、かなり決まります。多くのフレームワークが、整理の方法の一部を提供しています。そもそも自分で整理ができると、それらの方法を一段上から眺めることができます。

A人間を信じすぎないこと

これもかなり重要で、例えば、突然プログラムが動かなくなったとします。直前にプログラムの編集をしていればそれを疑うのですが、なにもしてなかったとします。そういうときコンピュータを悪者にしてはいけません。
例えば時間に依存するプログラムを書いてないか?実行回数に依存するプログラムを書いてないか?変に状態を周りに残していないか?(Webであればcookie、DB)などです。OSに近いレイヤーだと、メモリに変な情報が残っていないか?ファイルディスクリプタをちゃんと閉じたか?、などもあります。こういうところを疑えるかは非常に重要です。

ということで続きはこちらで!

Technical Rockstars 採用

お待ちしております!
posted by Syuhei Hiya at 07:47| Comment(0) | TrackBack(0) | 日記

2015年08月17日

Milkcocoaのトップページリニューアルの機会に、SDKについて

Milkcocoaのトップページをリニューアルしました。


弊社のオフィスとして借りているマンションの玄関の明るさを、リアルタイムにグラフにしています。

Milkcocoaは今年5月にIoT向けということでリニューアルしました。現在のMilkcocoaがどのような特徴を持っているかについては以下のスライドも御覧ください。



さて今回はMilkcocoaに関する疑問の一つにお答えしようと思います。

MilkcocoaにはJavaScriptのSDKしかないのか?


お答えいたしますと、MilkcocoaのSDKとしては、現在以下の3つがあります。

  • ブラウザ用のJavaScript
  • NodeJS SDK
  • Java SDK

こちらの使い方はドキュメントに記載されております。

基本的にMilkcocoaの機能は、MQTT上でやりとりしています。よってこれとは別に、既存のMQTTクライアントを使ってMilkcocoaにつなぐことができます。C言語用のサンプルがGithubにございます。


PahoのMQTTクライアントのC言語、Go、JavaではMilkcocoaに接続できることを確認しています。


こちらの内容はエンジニアブログでも紹介する予定です。

では、いつもMilkcocoaをご利用下さりありがとうございます。
posted by Syuhei Hiya at 11:02| Comment(0) | TrackBack(0) | milkcocoa

2015年07月23日

MicroServiceの記事を読んで

MilkcocoaもMicroService的に(あんまりそのつもりは無かった)やっていて、数十リポジトリあるんですが。
実際アプリケーションを担保する部分だけをNodeJSからErlangに変えたときも、他の部分はほとんど変更することはありませんでした。システムが複雑になれば、それぞれの部分に必要な性能や要件が異なってくるので、必然的にこういう設計が必要になってきますね。
この記事の例は、分け方やインターフェースを間違うと大変きついってことですね。Erlangのホットデプロイが難しいって話と似てる気がします。一枚岩にして変更した方が、ある種の安心感はあるんですよね。
http://www.slideshare.net/AkiraMiki/20160722-microservice
自前でサービスを分けるだけでなく、他のいろんなサービスと組み合わせて作ることは当たり前になるでしょうね。
こんな感じに→ RoRとMilkcocoaの連携方法について
http://blog.mlkcca.com/backend/milkcocoa-for-ror/
posted by Syuhei Hiya at 18:00| Comment(0) | TrackBack(0) | 日記
Powered by さくらのブログ