ラベル メモ の投稿を表示しています。 すべての投稿を表示
ラベル メモ の投稿を表示しています。 すべての投稿を表示

2011年1月30日日曜日

さくらインターネットのVPSでLAMP環境構築(Ubuntu)

訳あって使えるねっとを利用していたのだが、何をやるにも応答が遅く、本当にイラつかせてくれるサーバだった。元々良い評価をしている訳ではなかったのだが、面倒だという理由で乗り換えをしていなかったが、ついに重い腰を上げてサーバ会社の乗り換えを決断。月々のコストを鑑みてさくらインターネットのVPSを選択。980円でサクサク動き、OSも自分で入れられるとなれば、他に選択肢はない。特にサクサク動くというとこがポイント高め。もっと割安のサービスや、Amazon EC2 Micro Instanceも検討対象には上がったのだが、スピードと安定性のバランスを鑑みてさくらインターネットを選択した。ちなみに各社のサービスについては月額1,980円以下の仮想専用サーバ、国内外10サービスまとめが非常に良くまとまっている。

利用法あれこれ

  • 今回の私のように、かつて運用していたホスティングをVPSに乗り換えて、コストを削減したいと考えている人は多いはず。数値的根拠はないが、某使えるねっとで5000円程度毎月支払っていたサービスよりも品質の高いサービスが1000円程度で受けられるのがVPSの魅力だと思う。
  • 費用も安ければ導入も早いのもVPSの魅力。基本的に即時納品なので、顧客から開発依頼を受けてからすぐ契約を済ませてもらい、開発期間はVPSで運用、本番環境は別途構築する、などといった利用法が考えられる。契約から開発が始められるようになるまで概ね4時間あれば十分だろう。
  • 月額980円なら自宅でサーバを持った際に発生する電気代よりも安い(無論サーバの電源によっては自宅サーバの方が安いかもしれないが)。従ってこのご時世、勉強用に自宅でサーバを持つという行為自体古いのかもしれない。


導入

  • なにはともあれ、まずは契約関係を済ませる。VPS関係の情報はここにまとまっている。契約もクレジットカードがあればすぐ終わる。
  • 仮登録完了時に送られてくるメールの内容があればサーバのセットアップは始められる。

OSのインストール(Ubuntu)
  • OSのカスタムインストールに際しては、どういう訳か知らないがMac版のGoogle Chromeからではうまくいかなかった。Safariは起動させるのが面倒だったので試していない。自分はWindowsのGoogle Chromeでカスタムインストールの手続きを行った。Macユーザは注意して欲しい。
  • デフォルトのCent OSだと何かと不便。なので仮登録完了後送られてくるメールに記載されているVPSコントロールパネルからOSの再インストールを行う。
  • ログイン後のメニューからOS再インストールというメニューへ進むと、『カスタムOSインストールへ』というリンクがあるのでクリック。
  • OS選択から『Ubuntu 10.04 i386』を選択。AMD版とか誰得。
  • 以降はマニュアルに従ってインストールを行えば何のトラブルも起きなかった。
  • インストール後VPSの起動が必要になるので、VPSコントロールパネルのVPSホームから、インストールしたインスタンスの起動を行う。普通に起動ボタンを押せばいいだけ。
  • 起動確認後SSHで接続する。

ツール関係のインストール
  • 最大限面倒を避けるため各種アプリケーションはaptからインストールする。
  • その前にデフォルトエディターを変更する。デフォルトだとnanoなのだが…自分はviにしている。
    $ update-alternatives --config editor
  • まずapt自体のアップデートを行う。これを忘れると後でエラーが出たりして面倒。
    $ sudo apt-get update
  • auto-aptをインストールする。あると便利。
    $ sudo apt-get install auto-apt
    途中posfixのインストールダイアログが出るが、デフォルトのままで問題ない。エンターを2回押して次に進む。
  • auto-aptのアップデートをする。
    $ sudo auto-apt update
  • 次にシェルやエディタをインストールするが、省略。

サーバ類のインストール
  • Apacheのインストール
    $ sudo apt-get install apache2
  • MySQLのインストール
    $ sudo apt-get install mysql-server
    インストール中にメッセージが表示され、rootのパスワードを設定しろと言われるので設定する。
    $ sudo apt-get install libapache2-mod-auth-mysql
  • PHPモジュールのインストール
    $ sudo apt-get install libapache2-mod-php5 php5-mysql
  • mod_rewriteの有効化
    $ sudo a2enmod rewrite
  • phpMyAdminのインストール
    $ sudo apt-get install phpmyadmin
    サーバにはApacheを選択。
    phpMyAdmin用MySQLユーザのパスワードを聞かれるので設定する。
    インストールが終わってからApacheの設定を書き換える。
    $ sudo vi /etc/apache2/apache2.conf
    末尾に以下を追加して保存する。
    Include /etc/phpmyadmin/apache.conf
    デフォルト設定だとセキュリティ上問題ありそうだが(せめてBASIC認証くらいはしときたい)、一旦ここではデフォルトでよしとする。
  • ここで一度Apacheを再起動してブラウザで確認。
    $ sudo /etc/init.d/apache2 restart
    http://[IPアドレス]/
    http://[IPアドレス]/phpmyadmin
    両方見れればOK。
  • 基本設定はここまでで完了。後は開発物に合わせて適宜インストールしていく。

FWの設定
  • デフォルトだと何もフィルタしないノーガード状態。当然良いわけが無いので設定を行う。
    ここが参考になる。

実務でObjective-C開発をした際遭遇した問題点など

およそ2ヶ月、Objective-CでiPhone/iPadアプリを開発した経験を忘れないようバックグラウンド含めてアウトプット。また、後続開発者の人が読んだ際一助になるよう役立つリンクも記載していく。

開発に着手する時点での自分自身のステータス
  • 商用開発での携帯端末用アプリ開発の経験はわずか(Javaで携帯アプリ開発を少々かじった程度)
  • 従ってiOSでの商用開発経験はナシ。お遊びで一本アプリを作った程度でAppStoreへ公開した経験もナシ。
  • C言語の知識はそこそこあった。
  • JavaやC#の経験をフル活用すればなんとかいけるんじゃないかと言う甘い期待があった。(これがそもそもの間違い)

初期段階でのお勉強
  • 半日ほどかけてObjective-C入門を端から端まで何度も読んだ。
  • Objective-C最速基礎文法マスターも非常に良くまとまっていた。
  • 言語としてのお約束に関しては上記2つのサイトで大体理解出来ることもあって、この段階でもまだ、なんとなくいけるんじゃないかと言う甘い期待があった。

最初の壁
  • 組み込みクラスのAPIドキュメントの邦訳が思ったより少ない。何をやるにも断片的な情報を組み合わせて試行錯誤していくしかない。
  • ガーベッジコレクションが当たり前という環境に慣れすぎていた。とにかくメモリ関連の問題につまずき続ける。

第二の壁
  • メモリ関連の理解が進まないために生産性が上がらない。書いては書きなおすの連続。
  • 正直もう少し勉強してから着手すべきだったと後悔。
  • QuartzDemoのコードを読んで勉強する。どんなブログなどの情報ソースよりも役に立ったと思う。

現段階で言えること
  • iphone/ipad開発においてはメモリ管理が全てのボトルネックになりうる。リソースが限られているのだから当然だ。
  • とにかく最初から計画立てた実装を行うことが重要。従って勉強しながら開発をするといった甘い考えは捨てたほうがいい。身を持って示した。
  • 浅いレベルの情報はブログなどを見ればある程度収集出来るが、少しでも難しいことをやるとなると情報源が限られる。出来る出来ないの問題になるので、リスクヘッジのために企画やデザインが決まる段階で他の人がやっていないことには手を出さない方が安全という事は伝えておいたほうが良い。

2011年1月20日木曜日

ゼロからgitを始めた際のメモ

今更gitを始めました
時代の流れに乗らねば!ということでsvnから徐々にgitに移行しようと決意。幸い、svnとの連動機能がgitにはあり、現行のsvnリポジトリに対して何か変更が必要になることもないので、チーム開発で自分一人だけgitを使ってみる、なんて事も可能なようだ。
分散リポジトリをまるっと理解するまでgitのメリットが良く分かっていなかったのだが、幾つかの参考サイトのお陰で今まで気づかずやっていた面倒な事、リスキーな事がいい方向に解決しそうな見通し。

学習コストについて知っておく

  • お勉強に必要だった時間は概ね1日。
    興味あるけど覚えるのに時間かかりそう…。と思いきや、大体の流れは1日でマスター出来た。ただしsvnと違って全くバージョン管理が初めてですという人はもう少し理解に時間がかかると思う。
  • GUIで操作が出来ないので(あるけど便利とは言えない)、コマンドラインに慣れていないとそもそも導入が出来ないと思う。まずはシェルの勉強から始めると良い。
  • 得られる恩恵を考えると、学習コストとしては非常に低いほうだと感じた。さっさと移行しなかった自分が恥ずかしい。


以下のサイトだけ目を通せばざっくり理解可能
  • GitM#1
    まずはここで好奇心だけでも刺激すると良い。5分もあれば通読出来るので、暇なときにサクっと読んでおくと次のステップに進みやすいと思った。
  • 分散バージョン管理システムGitの使い方入門
    仕組みに関しての情報は一番ここがまとまってて理解もしやすかった。svnと違って直感的に理解出来ないのがgitの痛いところだと私は思う。が、ここを読んだらスッキリした。
  • マニュアル付属チュートリアル日本語訳
    仕組みが理解できたら、後はここを通読すればすぐにでも使い始められると思う。ただ現行のバージョン管理がsvnの場合は、後述のsvn連動機能のまとめ情報を読まないと進められないので焦らず読むこと。

まずは既存SVNリポジトリへの変更をローカルで管理してみる
  • idesaku blog
    手取り足取り教えてもらった感じ。今日からgit使おうと思っている人は、上記3つのドキュメントに加え、ここを通読することでgitを始められると思う。
  • まちゅダイアリー
    ここもよくまとまってた。一つ上のブログと合わせて読むと理解が深まる。
  • Subversionリポジトリと連携できるgit-svn
    実際に使い始めたらここも読んでおくとよいと思う。

使い始めて困った事があったら
  • Gitを使いこなすための20のコマンド
    大体の問題はここで解決するかと思う。
  • Git Cheat Sheets JP
    ここも通読しておくと後で慌てずに済む。
  • トラブルに見舞われても慌てず焦らず別名でgit clone。
  • グラフィカルなSVNリポジトリブラウザは、それはそれで便利なので併用する。ローカルでの変更はgitで管理し、チームのリポジトリにコミットさせる際はグラフィカルなSVNリポジトリブラウザで変更を確認しながらやるようにすると上手いことハマってくれた。
  • 新しい作業に着手する前には必ずgit checkout -b。タスクの名前とブランチ名を一緒にして管理するようにしたら上手いことハマってくれた。

Google Chart APIを利用する際の注意点


提案する技術屋として覚えておくべき3つのポイント
  1. 顧客要求を煮詰めると、ユーザ向けのビューにグラフで出したり、チャートを出したりした方が分かりやすく、しかも見た目もGoodなことはよくある。詳細データの参照回数やURLのクリック数など、特定のコンバージョンが定義出来るシステムであれば、ソーシャルなデータを集積してそれを活用しましょうと顧客に提案するべき。そんな時Google Chart APIを上手く利用できるよう、データ設計に留意し、出来ること、出来ないことを明確にした上で顧客要求を具体化しなければならない。仕様によってはChart APIでは実現が出来なくなる可能性もあるので、事前に後述ウィザードでプレゼンしておくと良いだろう。
  2. チャートウィザードで出来る事が、Google Chart APIの全てと考えて良いだろう。もちろんAPIドキュメントを端から読むと色々できそうな事が見つかってくるが、高度なことが出来ますよと顧客にプレゼンした後出来ませんでした的な流れになると痛いので差し控える。
  3. QRコードなどのバーコードもGoogle Chart APIで表示が可能。携帯サイトとの連動が仕様に含まれそうな場合は、QRコードの活用を予め提案に含めると印象が良いので忘れずにおくこと。
実際に使う際の注意点
  • APIドキュメント
  • 基本的に見た目はアッサリしてる。カスタマイズもしづらい。デザインの際はグラフはオカズ程度になるようにする。無理ならAPIの利用は諦め、グラフを描画する機能を実装した方がいい。
  • 棒グラフ、線グラフなど一部のグラフでは左端と下端に1ピクセルの線(縦軸横軸)が入ってしまう。消せないっぽい。デザイン上、ここにも留意すること。