OSXでオープンソースSwiftの開発環境-まずビルドまで

このエントリーをはてなブックマークに追加
はてなブックマーク - OSXでオープンソースSwiftの開発環境-まずビルドまで

Swiftでの開発環境

Swiftでボットを作るためのフレームワークをオープンソース化しました こちらの記事でオープンソースSwiftでの開発を始めているのですが、最初あまりにも試行錯誤だったので、まとめの情報を書いておきたいと思います。僕もわからないことばかりで、試行錯誤中なので、この方法がいいよというのがあったら教えてください。

Continue reading

Swiftでボットを作るためのフレームワークをオープンソース化しました

このエントリーをはてなブックマークに追加
はてなブックマーク - Swiftでボットを作るためのフレームワークをオープンソース化しました

Swift がオープンソース化して、Linux、OSX両方で動くコードを書けるようになったので、Slackのボットに挑戦してみました。

tomohisa/SwiftSlackBotter: Bot Framework for Swift Linux Command Line

以下はReadmeの意訳です。


SwiftSlackBotter

SwiftSlackBotter はLinux、OSXで動くSlackボットのためのフレームワークです。 J-Tech Creations, Inc. により作成されました。


SwiftSlackBotter はSwiftのための Slack Bot フレームワークです。オープンソース版の DEVELOPMENT-SNAPSHOT-2016-02-08-a Swift を使用する必要があります。Zewo フレームワークのバージョン 0.3、Environment フレームワークのバージョン 0.1 を使用しています。

Zewo/Zewo: Open source libraries for modern server software.
czechboy0/Environment: Easy access to environment variables from Swift. Linux & OS X ready.

環境設定方法

ここでは、OSX環境の設定方法を書いています。Linuxでのビルド方法は、各ツールのページから見つかります。
(Linuxのビルドはまだ試していません)
Continue reading

OSX Yosemite だインストールした古いRubyGemsをアンインストールして再インストールする方法

このエントリーをはてなブックマークに追加
はてなブックマーク - OSX Yosemite だインストールした古いRubyGemsをアンインストールして再インストールする方法

最近、Open Source Swift を使って、サーバーサイドSwiftの技術調査を行っています。Swift 3.0のブランチが二週間に1度くらいアップデートして、それに合わせて、フレームワークも書き換わるので、あのライブラリはこのSwiftで動くけど、このライブラリは動かないというエキサイティングな状況です。この時期に多くのフレームワークが開発されていますが、Linux、OSXで動かすためにはFoundationライブラリさえ使えないという状況の中、HTTPサーバーを頑張って開発している、Zewoという会社のフレームワークで、テスト版のSlackBotを作成しています。

その際にRubyGemを使ってツールをインストールしようとしたところ、
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/gem

のエラーが出て、gemをインストールできませんでした。sudoをつけてもできなくて、調べてみたところ、どうもgemが、/usr/bin/gemにあるのが悪いようでした。Ruby Version Managerを入れても、結局/usr/bin/gem/のgemが優先されて呼ばれていまいました。それもOSX El Capitan で Rootlessという機能がデフォルトで有効になって、sudoでも、/usr/bin領域が書き換えられなくなりました。ただ、意図して書き換えることができるように、

  1. Command+Rを押しながら起動して、Utility – Terminalを起動
  2. 以下のコマンドでRootlessを無効にする
  3. csrutil disable; reboot
     

  4. 再起動して以下のコマンドで、Gemを削除
  5. rm -rf /usr/bin/gem

  6. 以下のコマンドで、RVM(Ruby Version Manager)をアンインストール
  7. rvm implode

  8. Command+Rを押しながら再起動して、Rootlessを再度有効にする
  9. csrutil enable; reboot

  10. RVMをインストール
  11. \curl -sSL https://get.rvm.io | bash -s stable

  12. RVMの設定
  13. rvm get head
    rvm --auto-dotfiles
    ram reload
    rvm list known
    rvm install 2.3
    rvm docs generate-ri
    which gem

    最後のコマンドで、どのgemが参照されるか確認すると、

    MBPR:~ tomohisa$ which gem
    /Users/tomohisa/.rvm/rubies/ruby-2.3.0/bin/gem

    と正しいgemが参照されました。sudoが必要ないエリアにインストールできたので、
    gem install cocoapods
    gem install zewo-dev

    のようにsudo なしで、gemを使用できるようになりました。

GUIの統合環境ばかりで久しぶりにCUIの環境で開発していますが、慣れてくるとこちらも楽しいですね。

IKEAの家具で作った!スタンディングで作業できるヘルシーホームオフィス

このエントリーをはてなブックマークに追加
はてなブックマーク - IKEAの家具で作った!スタンディングで作業できるヘルシーホームオフィス

DSC_6670-Pano.jpg

はじめに


僕は家で作業することが多いので、4畳半のスペースをホームオフィスにしています。引っ越す前もIKEAでホームオフィスを作ったのですが2年半前に引っ越して、一から作り直しました。
引っ越す前の最初のオフィスがこちら自宅作業が多い方にオススメ!IKEA で作った快適自宅オフィス |
引っ越した後の途中経過がこちら4畳半のスペースにIKEAで作った!見えるところにものを置かない、快適ホームオフィス空間 |


ホームオフィスのコンセプト


前のブログ記事にも書いたのですが、ホームオフィスのコンセプトはこのような感じです。

  1. シンプルで見えるところに物を置かないミニマルデザイン
  2. できるだけデスクを広く
  3. ケーブルなどがごちゃごちゃしない
  4. 以上に加えて健康のことも考えて以下を追加しました

  5. 立ちながら仕事できるスタンディングデスク
  6. スタンディングだけではなくて座っても作業できる
  7. プリンタなども含めてすっきりとしたデザイン

上記のコンセプトで少しずつ改良してだいぶ満足いくところまでできたのでブログにまとめておきます。
Continue reading

Mac・英語キーボードで親指シフト始めてみた[配列表あり]

このエントリーをはてなブックマークに追加
はてなブックマーク - Mac・英語キーボードで親指シフト始めてみた[配列表あり]

ガジェットや最新のテクノロジーニュースを扱ったPodcast番組,backspace.fm

ちょっと前ですが,日本語入力の入力方法の親指シフトが紹介されていました。B-side #018: 親指シフト vs ローマ字シフト – backspace.fm

ずっと試してみたいと思っていて,ついに試せたので,備忘も兼ねてブログに残しておきます。

Continue reading

ThumbFan Keyboard 1.0.1リリース。キーボードエクステンションの技術所感

このエントリーをはてなブックマークに追加
はてなブックマーク - ThumbFan Keyboard 1.0.1リリース。キーボードエクステンションの技術所感

ThumbFan Keyboard 1.0.1がリリースされました。

今回のアプリでの変更点を見ながら、iOSキーボードやiOS8開発の技術についてまとめておきたいと思います。

DSC_5654-2
関係ないですが、最近カメラとレンズを新しくして、夕日が綺麗だったので写真撮ってみました。

Continue reading

趣味のカメラマンが結婚式カメラマンをするための準備(2)基本の機材

このエントリーをはてなブックマークに追加
はてなブックマーク - 趣味のカメラマンが結婚式カメラマンをするための準備(2)基本の機材

趣味のカメラマンが結婚式カメラマンをするための準備(1)カメラとレンズ | Zero4Racer PRO Developer’s Blog の続編です。ちょっと撮影に行くだけだったら使いたいレンズいくつかとスピードライトを持っていけばよいのですが、結婚式となったら、一日中カメラを使うのでSDメモリ、バッテリーにも気をつけないと行けません。

メモリ、バッテリー

これらは基本ですね。D90で使えるSDHCカードを16GB、32GBのものを買いました。
Continue reading

趣味のカメラマンが結婚式カメラマンをするための準備(1)カメラとレンズ

このエントリーをはてなブックマークに追加
はてなブックマーク - 趣味のカメラマンが結婚式カメラマンをするための準備(1)カメラとレンズ

結婚式と言えばやっぱりよい写真が欲しいですよね。僕はプロカメラマンではなくて趣味でカメラを撮っています。数年前にフリーランスの仕事があまり忙しくないときにアメリカで子どものポートレートをとったり、卒業記念のポートレートをとったり、ファミリーポートレートをとったりしていました。先立つものも限られているので、機材も限られたものです。最近はもっぱら家族の写真くらいしかとっていなかったのですが、友人から結婚式のカメラマンをしてほしいとの依頼を受けました。プロのようには行かないことは了承してもらったのですが、手作り結婚式なので、出来る限りでよいのでとってほしいということで、ちょっと久しぶりにカメラ周りをいろいろ勉強して、準備しているところです。喜ばれるよい写真が撮れればいいな。
主に子どものポートレートがメインで、簡易スタジオを作って撮ってました。
Baby Portrait
アメリカではこのようなコラージュ写真を作って大きくプリント(11×14インチ B4くらい)するのが喜ばれます。
Baby Collage

事前の手持ち機材

これらの写真を撮るのに使っていたレンズとカメラはこちら。
Continue reading

Objective-Cで、サブクラスだけで使用出来るプロパティを作成する

このエントリーをはてなブックマークに追加
はてなブックマーク - Objective-Cで、サブクラスだけで使用出来るプロパティを作成する

Objective-Cでクラスを作る場合は、他のクラスからアクセスさせたくないプロパティはクラスエクステンションにして、自クラスだけでアクセス出来るようにします。こんな感じです。

PCEBaseClass.h
PCEBaseClass.h

モジュールはこんな感じです。
PCEBaseClass.m
PCEBaseClass.m

こうすることによって、notesというプロパティは、参照するクラスからは変更されたくないので、ヘッダーにはreadonly,クラスエクステンションでは、readwriteで定義することによって、クラス内で変更可能です。
booksというプロパティは、クラス内ではNSMutableArrayとして振る舞いたいけれども、対外的には変更してほしくないので、NSArrayとして返しています。booksと別のbooksInternalという内部用プロパティをNSMutableArrayで定義して、内部ではbooksInternalにアクセスすることによって、オブジェクトの追加が出来るようにしています。

このクラスを継承したクラスを作った場合は、対外的には同じくbooks, notesを触られたくないですが、継承したクラス内では触りたい訳です。

PCEExtendedClass.h
PCEExtendedClass.h

モジュールでbooks, notesを触ろうとすると当然ですが、エラーになります。
PCEExtendedClass.m
PCEExtendedClass.m

これを解決するために、クラスエクステンションを別ファイルに出してあげると解決出来ました。
Class Extentionを作成
Class Extentionを作成

このようにします。
クラスエクステンション作成2
クラスエクステンション作成2

クラスエクステンションの新しいファイルに、プロパティを記述
クラスエクステンションの内容
クラスエクステンションの内容

ベースクラスでは、クラスエクステンションをモジュールでImportします。

ベースクラス
ベースクラス

継承したクラスでもクラスエクステンションをモジュールでImportします。booksに関しては、内部的にmutableのプロパティ booksInteranlをクラスエクステンションで定義しているのでそちらを使用します。

継承したクラス
継承したクラス

これで、他のクラスからはprivateExtentionのヘッダーをインポートしないようにすれば定義が見えないので、コンパイル時点で正しい処理が行われていることを確認出来ます。