あぁ、優しい嘘をついてくれ


珍しく今年は「●月くらいに皆で飲みに行くことになったので一緒にどう?」と、数度誘われたのだけど、一度も実現してない。

まぁ、人望が壊滅的にないワタクシ、きっと「皆」の中に「アイツが来るなら行かない」と仰る方がいて、ワタシを除いたメンバーで開催されたに違いないことは容易に察しがつくのだが、それならそれで、「いや、忙しくなった人がいて、スケジュール調整が難しくなった」とか、「行きたかった店の予約が取れなくて」とか「親戚に不幸があって」とか「実家が地震で」とかなんでもいいから連絡くれよ。

それ以降、まったく連絡なくなっちゃうと、つい「どうなった?」と聞きたくなるじゃないか。
「いや、実はお前抜きで・・・」と正直に言われるのがイヤでガマンしているのだが・・・。

スポンサーサイト

アイディアの提案


何かアイディアを思いついて、提案とまでは言わなくても、人に意見を求めたときに困ってしまう反応。

そんなの上手くいくわけない
 いや、それなら、「くだらねー」とか笑ってもらったほうが嬉しい。ブレストにもなりゃしない。

それならこっちのほうが
 中には参考になる意見もあるんだけど、大抵の場合、対立軸での意見だったり、俺のアイディアのほうが凄いだろとマウントを取りにくる意見だったりする。

もっとこうしたほうが
 これが参考になることが多いんだけど、スケール感が違ったりすると、もう・・・。
 同人即売会で同人誌を売ろうと考えてたら、ジャンプで連載すればいいじゃんみたいな話をされても困る。
 そして、大抵の場合、「そうするにはどうしたら?」と訊ねると、「持込か投稿かな?」と、それで連載取れれば出来れば苦労しねえよ! というような返事だったりする。


まぁ、面白がってもらって、テキトーに意見を出して貰うのが一番ですかねぇ。
自分が意見を求められた際の、自戒も込めて。

バカにされる


ボランティアっぽい関わり方をしていた案件、結局のところ、フン詰まりを起こして、一旦ペンディングに。

原因を簡単に分析すれば、運営側にはある程度損益分岐(お金の儲けだけではなく)が設定されていたんだけど、実際に手を動かすワタシのようなボランティア的なスタッフにはそれが伝えられておらず、ブレブレな方針のもと、運用されていたから。
まぁ、目標設定のないまま、適当に進めていけばそうなるのも当然。
しかも、スタッフにそれを伝えなかったのは、どうも、「損益分岐設定なんか無償で動いている人間に伝えられるわけないじゃない」という理由らしい。

まぁ、そんな事情で上手く行かない案件なんて良くあることなんだけど、そのペンディングにした後処理がもう・・・。
通常、関係者に事情を説明して今後どうするかを話し合うものだと思うんだけど、「いや、とりあえずそのまま放置して~」、「なにかの時の為に無償スタッフはいつでも動かせる状態保持で~」と、もう、自分たちの都合しか考えてない。

ペンディングするならするで、その時点で動いている個別プロジェクトをどうするかも決めなくちゃいけないのに、それも放置。

案の定、ワタシの関わっているプロジェクトで、事情を知らない方が新規資料をアップしてきてちゃった。
しょうがないので、その新規資料を組み込んで、提出したものの・・・。
まぁ、誰もが予測できる、なんのリアクションもないという、お前らなめてんのか? 状態。

なんで、こんな人達が無償で人を使う案件の管理をやっているんでしょう。

こういうことがあると、ホント、人扱いされてないなと思う。
ブラックなんて、企業だけの話じゃないんですよ。

【Swift】 ファイルの読み込みと保存【Mac】


ここのところファミコンのソフトを開発していたのですが、実装するデータを作るのに Mac で変換ツールを作ろうと思い立って、Swift を弄り始めました。

まぁ、変換ツールなので、基本、バイナリファイルを開いて、中身を変換して、バイナリかテキストファイルを書き出すって処理です。

なので、ファイル・オープンと、ファイル・セーブができれば7割がた出来たも同然。(うそ)
で、7割がたできたのですが、結構、時間が掛かってしまったので、備忘録。

といっても、調べたところワタクシの環境が、MacOSX 10.9.5Xcode Version 6.2Swift 1.1.0 なので、あまり需要はないとは思いますが。

というかさぁ、公式のドキュメント(とネットの情報)がガンガン最新の物に書き換わり、古いバージョンの物がなくなってるので、とてもとても苦労します。
結局のところ、Objective-C のコードを解析して、Swift に置き換えるようなことになってしまった。
じゃぁ、Objective-C で書いたらいいんじゃないかと思うけど、まぁ、ファイル数は半分になるし、コードも少ないし・・・と、面倒臭がりやのワタシはSwift の誘惑に負けるわけです。

ま、いいや、とりあえず、ファイルオープン。

    func openFile(){
       
        let openPanel = NSOpenPanel()
        openPanel.allowsMultipleSelection = false // 複数ファイルの選択を許すか
        openPanel.canChooseDirectories = false // ディレクトリを選択できるか
        openPanel.canCreateDirectories = false // ディレクトリを作成できるか
        openPanel.canChooseFiles = true // ファイルを選択できるか
        openPanel.allowedFileTypes = ["xxx","aaa"]// 選択できるファイル種別 :拡張子を指定

        openPanel.beginWithCompletionHandler({ (num) -> Void in

            if num == NSModalResponseOK {
           // OKボタンを押したら
                for fileURL in openPanel.URLs {
                    let filePath :String! = fileURL.resourceSpecifier
                    let decoadPath :String! = filePath.stringByRemovingPercentEncoding  // 日本語ファイルの場合
                    // 以下にファイルを開いてからの処理

                       let file = NSData(contentsOfFile: decoadPath)

                       //  読み込んだデータを配列にコピー
                       let fileLength = file?.length
                       var data = Array<uint8> (count:fileLength!, repeatedValue:0)
                       file?.getBytes(&data, length: fileLength!)
       
                }
           
            } else if num == NSModalResponseCancel {
           // キャンセルボタンを押したら

                //NSLog("Canceled")
            }
        })
    }



で、実装するには、

    @IBOutlet weak var fileOpen: NSMenuItem!
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        openFile()
    }


こんな感じですかね。
アプリが起動したら、即ファイル選択って感じですけど。


でもって、ファイル保存(テキスト保存)

    func saveText(str: String){
   
        let savePanel = NSSavePanel()
        savePanel.canCreateDirectories = true     //この辺はファイル・オープンと一緒
        savePanel.showsTagField = false
        savePanel.nameFieldStringValue = "test.asm"
        savePanel.allowedFileTypes = ["txt"]

        savePanel.beginWithCompletionHandler { (result) in

            if result == NSFileHandlingPanelOKButton {
    //OKボタン

                let url = savePanel.URL!.path
                let path = url?.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
              
                if (path != nil){
                   
                    if str.writeToFile(path!, atomically: true, encoding: NSUTF8StringEncoding){
                        print(str)
                    }else{  }
                }else{
                    return
                }

            }else{
     //OKボタン以外

            }
        }
    }



ファイルオープンは、色々なサイトさまを参考にさせて頂いて、割とすぐにできたんだけど、ファイル保存で手間取りました。
let url = savePanel.URL!.path で、URL をパスに変換しなくちゃならないということに気がつかなくて。
しかも、writeToURL を使おうとするとエラーが出るし。
いや、エラーがでるのはいいんだけど、Xcode が表示するエラーフィックスの候補がことごとく外れるという。
あれ、新しいバージョンだと改善されてるんだろか。

というわけで、あとはガシガシ変換すればOKなはず。
ガンバロー! おー!

キャンプファイヤー!【クラウドファンディング】


まぁ、ちょっとした出来心で、クラウド・ファンディングで資金を集めて何か作れないかなー? などと思って、CAMPFIRE を覗いてみた。

んだけど、その、なんだ、成功しているプロジェクトを見ると、別に資金難でもないんだなという印象。
商品などは、すでに用意されていて、そのブランディングのためとか、まぁ、音楽や出版などは物は出来ていて、販売費用とか(CDにしたり本にしたり)媒体化費用の補助とか。
どちらかというと、パトロン(支援者)を集めて、広告するほうがメインなのかな? という印象。

リターンも法人向け以外は、そういう物が元々好きな人が喜びそうな物などが設定されていて、投資的な意味合いはまったくないのね。もしかしたら、募金に近いのかも知れない。

まぁ、確かに、利益の何%を投資比率で分配、利益がなければリターンもなし、なんて条件じゃ、支援するほうも楽しくないものね。
そういうのは、ガチのファンド・マネージャー通してやれってことか。

まぁ、観測気球的にクラウド・ファンディングやってるところもありそうではある。
パトロン数が多ければ、銀行から資金調達するときに交渉しやすいってこともあるだろうし。
目標額に到達しなければ、プロジェクトの継続、中止も判断しやすいだろうしなぁ。

はてさて、どうしたもんじゃろうのぉ。