自作デジカメ制作 【ソフトウェア編その0】ソフト構想・開発環境

最初に

 初めて読む人はまず下記の記事から読むとよいかもしれません。

 いよいよ地獄のソフト開発編ですが、今回はその前の準備です。準備に時間をかければこの後の開発効率がグンと上がること間違い無しです。
 ちなみに私ソフトはあまり得意じゃないので詳しい人は色々アドバイス貰えるとうれしいです。そして誰かソフト作ってくれる人とかいたら凄いうれしいです。1000円くらい払いますので。

自作デジカメ ソフト構想

 最初にどんなものをつくるかある程度決めておいた方がよいかなと思います。といっても大きなソフトウェアを組んだ経験がないので、機能を一つずつつくっていって、後で組み合わせてみたらそれなりになるんじゃない?という恐ろしく適当な方法で作ってみようと思います。
 最初は以下くらいを決めればよいのかなー、よくわからないです。

  • 機能
  • インターフェース
  • 画面遷移

機能

 実現したい機能。最初企画・デザイン編でも書いたけど、時間も経っているので改めて整理

  • オート撮影
  • プレビュ
  • 電源オフ
  • マニュアル撮影
  • 動画撮影
  • タイムラプス(微速度撮影)
  • 写真ツイート
  • WiFiシャッター制御
  • フィルタ
  • HDR合成
  • アヘ顔合成
  • その他電波な機能

 うん。盛りだくさんですね。まあ適当につくっていきましょう。

インターフェース

 ざっと以下のような感じでしょうか。

f:id:karaage:20140919160734p:plain

 関係するポート割り付けをまとめます
f:id:karaage:20140919161210p:plain

 ポート割り付けのスプレッドシートは以下。
Raspberry Pi Pin Mux for camera 140913 - Google スプレッドシート

画面遷移

 メニュー画面とか、設定の画面とか、どのボタンを押すとどういう風に遷移するとかもろもろ。うん面倒くさいね!後で考えながら適当に作って行けばよいでしょう。こうやって適当に作る人がいるので炎上するプロジェクトがたくさん生まれるのですね!(白目)

開発環境

 開発環境とか考えましょう。Raspberry Piのソフトとかみんなどうやって開発しているのでしょうね?

プログラム言語

 使用するプログラム言語を決めます。何か得意な言語がある人は好きな物を使うのがよいかなと思います。ただ、COBOLとかはあまりオススメしません。今回私は、Pythonという言語を選んでみました。Raspberry PiのPiはPythonのPiらしいですし、CITY HUNTER好きとしてもPythonという響きには親しみを感じますからね。
 スクリプト言語なので、そんなに早くないですが、カメラ使えるライブラリとか、グラフィックを扱えるライブラリもあるみたいですしね。もし速度が必要そうな処理が出て来たらその部分だけなんとかすればよいかなという適当な気持ちでいます。

エディタ

 プログラムを書く道具です。大学のときはEmacsとか頑張ってある程度覚えたのですが、今はVi(Vim)というエディタがいつの間にか主流になっていたようです。初心者には文字を入力することすらできないというとんでもないマジキチ変態エディタですが、まあ流れにのってつかってみようかなと思います。ViエディタはLinuxにデフォルトで入っているエディタなので、ある程度使えるようになっておくと何かと幸せになれるのかもしれません。MacでもWindowsでもVimがあるので探して適当に入れてみましょう。他に何か好きなエディタ、こだわりのエディタがあればそれでもよいと思います。

ファイル転送

 SSHやリモートデスクトップでRaspberry PiにアクセスしてRaspberry Pi上でプログラムつくってもよいかなと思っていたのですが、色々重いのでMacで作ったファイルをRaspberry Piに送るというダサい方法をとることにしました。Pythonはインタープリタでコンパイルする必要もないのでクロスコンパイル環境とかは考えなくてよくて楽ですね。
 プログラムをRaspberry Piに転送する方法は、netatalkはあんまり安定して繋がらないので、SFTP使うことにします。クライアントソフトは何でもよいのですが、とりあえずフリーのFileZillaというソフトを使うことにしました。

FileZilla - The free FTP solution

 設定は、デジタルカメラを自作してみよう【Raspberry Pi Setup編】 - karaage. [からあげ]のケースだったら以下の通りです。

Host:KaraagePi.local
User:pi
Password:raspberry
Port: 22

f:id:karaage:20140920115112p:plain
 こんな感じね

バージョン管理

 作ったプログラム、ハードディスクにためておいてもよいのですが、以下の目的でサーバーでバージョン管理行いたいと思います。

  • プログラム公開(どこでもダウンロードできるように)
  • ファイルバックアップ
  • バージョン管理(差分管理)

 そういうバージョン管理できる無料のサービス、世の中はGitというバージョン管理ソフトを使ったGitHubというホスティングサービスが全盛みたいです。なんか、GitとかGitHubとかいうとちょっとプログラム出来るやつみたいな感じがあります。自分もちょっとだけ試したことあるのですが、よくわからない上に、面倒くさくてギブアップしました。複数人での開発が前提なので結構複雑なんですよね。
 ただ、そんなしょぼしょぼの自分でも使えそうな、ちょっとしたプログラムのバージョン管理にピッタリのGistというGitHubの小型版サービスがあるようなので、今回はそれを使ってみます。
 Gistははてなブログとも相性よいようです。以下のブログ記事とか参考になりました。

 なので今後はGistに作ったソースコードを置いていくことにします。自分のGistは以下。

karaage0703’s gists · GitHub

関連記事

karaage.hatenadiary.jp