2019/09/18

Apple Watch スポーツバンドに穴を追加してみた

Apple Watch Series 5発表されましたね。
私は3年ほどSeries 2の42mmを使用しているのですが、Series 5の"常時表示"と"チタン"に惹かれてEditionに買い換える事にしました。

それでなぜ穴を追加することになったかと言うと、Apple Watch Edition Series 5の44mmを注文したのですが、どうやら自分で選択したバンドとは別にライトグレイスポーツバンドが付属するらしい。

ただ、よくよく確認していくと付属するバンドサイズは「M/L」1本のみ。
手首が細く、「S/M」を使っている私には大きすぎるためこのままでは使用できないことが分かった。。。(40mmなら「S/M」が付属する)


44mm チタン Edition の同梱物


スポーツバンドを単体で購入すれば、「S/M」「M/L」の2本のサイズが付属するが、残念ながらライトグレイスポーツバンドは特別色らしく単体での販売はされていない(2019/09/18 現在)
個人的に好みの色であり、どうしても使いたかったので穴を追加して使用することに決めた。

ということで、チタン Editionが届くまでブラックスポーツバンド「M/L」サイズで穴あけの練習をすることに


注意事項
この記事を見て試してみる際は自己責任にて作業をお願いします。
ケガをしたり、スポーツバンドが使えなくなる可能性があります。ご注意ください。

下調べ


  • Webで軽く調べた限りスポーツバンドに穴の追加方法を紹介した記事は見つからなかった
  • 町の時計屋さんに頼めばキレイに穴をあけてくれるのでは?と考えたが、どうやら町の時計屋さんは革ベルトには穴あけしてくれるが、ゴムやシリコンなどの特殊素材は、穴を開けたところから裂けてくる(!)らしく作業してくれないようだ。
    ※ちなみにスポーツバンドは、フルオロエラストマーというリッチなゴム素材だ

用意するもの

  • いらないスポーツバンド
  • ゴムハンマー、プラスチックハンマーなど
  • 穴あけポンチ
  • 定規(正確性を求める方に)
  • カッターマット、厚目のダンボールなど下に敷けるもの

スポーツバンドの穴の直径を測ってみると3mmだったので、穴あけポンチは3mmを用意しました。
(穴あけポンチってなに?という方はこちらを参考 - Amazon)


実践


作業中の画像を撮り忘れたので、いきなり完成です(笑)
一番右側が追加した穴です。作業時間にして15分ほど

表側

裏側(腕に触れる側)

特に難しいことはなく、

  1. 定規を使って位置決めをして
  2. ポンチを当てて
  3. とにかくハンマーで根気よくガンガン叩く!
だけでした。
ポイントをあげるとするとスポーツバンドは厚みがあるため、ポンチを当てた側と抜ける側で穴の直径が変わってきます。今回は表側にポンチを当てたので、裏側の穴のサイズが若干小さい気がします。


ピンも問題なく入る

よく見ると追加した穴は断面の滑らかさが欠けていますが、ピンをはめてしまば見えない箇所なので気にしない気にしない



穴あけの精度とは関係ありませんが、追加した穴で着用すると内側にくるベルト部分が長いためApple Watch本体に干渉します。さすがにベルトを切断する勇気はなかったのでこのまま着用しています(慣れれば気にならないレベルです)





追加した穴で3日ほどApple Watchを着用していますが、今のところ裂けてきているようには見えません(激しい運動などはしていない)
Apple Watch Editionが来るまで観察して、変化があったら報告しますね


2018/06/10

お久しぶりです

ポジション、環境、心境の変化によりここ3年ほど遠ざかっておりましたが、帰ってきました。
元気に生きてます!

最近はこれからのキャリアについて考えていました(なんとなく見えてきた気がします)。
機会があればそこらへんについて記載していこうと思います。


それではまた!

2015/06/08

Apple(iTunes Connect)からの売上の支払いタイミング


Appleからの入金タイミングについて最近の情報があまり無いのでまとめてみます。


1. Appleからの連絡


まず、売上があると上記のようなメールが(1ヶ月単位で)届きます。
意訳すると「アプリを購入してくれた方がいるから"支払と財務報告"を確認してね」です。


2. 入金タイミング

私の場合は未払いが ¥2,400 の時点で振込がありました。
ただ1ヶ月単位で精算しているようなのでもう少し少なくても入金されるかも。
ちなみに振込元はドイツ銀行でした。

ネット上では昔は$150で入金などの情報があったので、かなりハードルが下がりましたね。


3. 振込手数料

振込手数料は取られませんでした ^^
全銀システムさま様です。


というわけで、実際の振込額は純粋に

アプリ売上 ✕ 70%


となります。



さいごに
SSLauncherをご利用いただきありがとうございます。
さらに使いやすいアプリとなるようアップデートを計画していますので、もうしばしお待ちいただけると幸いです。

2015/05/08

月間1000PVを超えたのでこれまでを振り返ってみる

こんばんは。toomooです。
先月から生活環境がガラッと変わりました。なかなか自分自身の時間を作ることが難しくなってしまいましたが、
なんとかリズムを作って勉強は続けていこうと思います。

さて、初めて月間1000PVを超えることができました!!
いつも拙いブログをご覧いただきありがとうございます♪

今回は記念として、これまでにPV数の多い投稿をランキング形式で振り返ってみます。
(まだまだ投稿数が少ないので、見ようと思えばすべて読めちゃうです ^^;)



第5位 playgroundでUIKit(UIButtonなど)を使用する方法 359PV


Xcodeをインストールしたらまず試したくなるPlayground。
起動時だとOS X向けの設定になっており、UIKit系が使えなくて困ったので調べました。

Xcode6.3.1でも確認したところ、起動時にPlatformを選択できるようになっていたので、迷う心配はなくなりましたね ^^




第4位 iOS Developer Programへの登録方法 401PV


実機で開発するiOSディベロッパーにとって最初に行っておきたい手順ですね。
ちょっと前まで8500円くらいだったのが、円安のあおりを受けて約13000円となってしまいツライです T-T

多少書いてから時間が経っていますが、大きく変更されていないので参考にできると思います。




第3位 Swiftで円グラフを描いてみよう - 改 474PV


こちらも継続してアクセス数のある記事です。
UIのスキルアップをしたいなと思っていたところに水島企画様のブログを発見して、
Swiftで書きなおさせていただきました。




第2位 Xcode 5 のGitでDropboxをリモートリポジトリとして使用する方法 482PV


最近はbitbucketなど手軽にソースをバックアップする環境ができてきていますが、やはりお馴染みのDropboxに保存しておきたかったので調べました。
みなさんも同じような思いがあるみたいで、お役に立ててよかったです。




第1位 Swiftのmapとreduceについて書いてみた 654PV


PV数第1位はSwift関連で初めて書いた記事でした!
この記事はGoogle検索のランキングトップになったこともあり、とても思い入れのある記事ですね。

最近はわけあってSwiftからは距離を置くことにしています。
個人的にはO-C好きなので、Appleには両方の言語を継続していって欲しいです。



-----
興味のある記事はありましたでしょうか。
個人的にはSSLauncherがらみの記事がランクインしていないのが
少々さみしくもあります(笑)


次回はプレゼンについて書いてみようと思います。
それではまた

2015/03/30

[iOS,アプリ,ScanSnap] 「SSLauncher」を2.0.0にバージョンアップしました


みなさん長らくお待たせしました。
 ScanSnapをもっと便利にするアプリ、「SSLauncher」満を持してバージョンアップです!!

V2.0.0では以下の機能を追加しました。(SSLauncherについてはこちら
(※)このバージョンからiOS 8.1 以降が必須となります。







1.Evernoteに対応しました


・リクエストの多かったEvernoteに対応しました。
 スキャンからノート作成までワンタップで可能です。
・タグも同時に付けられます(複数可能)。

2.お気に入り画面を追加しました


・お気に入り画面を追加しました。
 リスト画面の Launcher を左にスワイプすることで追加するメニューが表示されます。

3.ウィジェット(通知センター)対応しました


・ウィジェットに対応しました。
 ロック画面からでもスキャンを開始できるので、外出先から帰ってきてレシートなどをすぐにスキャンできます。
 お気に入りに追加しているLauncherが表示されます。

4.プレビューを確認できるようになりました


・スキャンしたプレビューを確認できるようになりました。
 もう失敗した画像をアップロードする心配はありません。


5.公開リンクを作成できるようになりました(Dropboxのみ)



・Dropboxにアップロードしたファイルを簡単にシェアできます。
 自動でクリップボードにURLがコピーされるので、あとは好きな箇所に貼り付けするだけです!


6.使い方画面をカイゼンしました


・各手順を完了するとチェックマークが表示されるようになりました。

7.デザインの最適化など

・画面デザインを変更しました。
・iPhone 6, iPhone 6 Plus に最適化しました。
・iOS 8 に対応しました。


今後も便利な機能を追加予定です。
このアプリがみなさんのお役に立つことを願っております。

2015/01/04

[Swift, iOS]Swiftで円グラフを描いてみよう - 改

明けましておめでとうございます。
今回は Swift 兼 円グラフ を描いてみる練習です。

 


今回は水島企画様のサンプルコードを「Swiftで書き直す +α」しています。
快くサンプルコードの掲載許可を下さった水島様に心より感謝いたします。

   ・水島企画 - 円グラフを描いてみよう

動作イメージは上記リンク先から動画で確認できます。
簡単に説明しますと、スライダーで4つの円グラフの割合を変更できます。
また、+α としてセグメンテッドコントロールを使用して円グラフの見た目を「点線 or 塗りつぶし」と変更できるように改変しています。

それでは早速サンプルコードを

import UIKit
import QuartzCore

class ViewController: UIViewController {

    var markers: [UILabel] = [];
    var chart: UIView = UIView();
    var selector: UISegmentedControl = UISegmentedControl(items: ["LineDash", "Fill"])

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override init() {
        super.init()
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        self.view.backgroundColor = self.dynamicType.color(5)
        
        self.createSliders()
        self.createSelector()
        self.createChart()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    // 円の割合を変更するスライダーを作成する
    func createSliders() {
        
        for i in 0..<4 {
            var slider: UIView = self.createSlider(self.dynamicType.color(i));
            slider.center = CGPointMake(160, (CGFloat)(50 * (i + 1)))
            slider.tag = i;
        }
    }
    
    func createSlider(color: UIColor) -> UIView {

        let slider: UIView = UIView(frame: CGRectMake(0, 0, 280, 40))
        slider.backgroundColor = UIColor.clearColor()
        self.view.addSubview(slider)
        
        let bar: UIView = UIView(frame: CGRectMake(0, 15, 280, 10))
        bar.backgroundColor = UIColor.lightGrayColor()
        slider.addSubview(bar)
        
        let marker: UILabel = UILabel(frame: CGRectMake(120, 0, 40, 40))
        marker.backgroundColor = color
        marker.text = "50"
        marker.font = UIFont(name: "Futura-CondensedExtraBold", size: 20)
        marker.textAlignment = NSTextAlignment.Center
        marker.textColor = self.dynamicType.color(4)
        marker.userInteractionEnabled = true
        
        slider.addSubview(marker)
        
        let pan: UIPanGestureRecognizer =
        UIPanGestureRecognizer(target: self, action: Selector("slide:"))
        marker.addGestureRecognizer(pan)
        
        self.markers.append(marker)
        
        return slider
    }
    
    // スライダーのイベントを受け取る
    func slide(panGr :UIPanGestureRecognizer) {
        
        // ラベルの数値変更
        var p: CGPoint = panGr.locationInView(panGr.view?.superview)
        let marker: UILabel = panGr.view! as UILabel
        
        if (p.x < 20) {
            p.x = 20
        } else if (260 < p.x) {
            p.x = 260
        }
        
        marker.center = CGPointMake(p.x, marker.center.y)
        
        let labelNum: Int32 = 100 * (Int32(p.x) - 20) / 240
        marker.text = "\(labelNum)"
        
        // チャートの再作成
        self.chart.removeFromSuperview()
        self.createChart()
    }
    
    // 円チャートの作成
    func createChart() {
        
        let chartSize: CGFloat = 200.0
        self.chart = UIView(frame: CGRectMake(60, 250, chartSize, chartSize))
//        self.chart.backgroundColor = UIColor.blackColor()
        self.chart.backgroundColor = UIColor.clearColor()
//        chart.layer.cornerRadius = 100
        self.view.addSubview(self.chart)
        
        var red: CGFloat    = CGFloat(self.markers[0].text!.toInt()!)
        var blue: CGFloat   = CGFloat(self.markers[1].text!.toInt()!)
        var green: CGFloat  = CGFloat(self.markers[2].text!.toInt()!)
        var orange: CGFloat = CGFloat(self.markers[3].text!.toInt()!)
        var total = red + blue + green + orange
        
        if (total != 0) {
            
            // 円のどれだけに表示するか計算
            red     = red / total * 2 * CGFloat(M_PI);
            blue    = blue / total * 2 * CGFloat(M_PI);
            green   = green / total * 2 * CGFloat(M_PI);
            orange  = orange / total * 2 * CGFloat(M_PI);
        } else {
            
            red     = CGFloat(M_PI) / 2.0;
            blue    = CGFloat(M_PI) / 2.0;
            green   = CGFloat(M_PI) / 2.0;
            orange  = CGFloat(M_PI) / 2.0;
        }
        
        let ratios: [CGFloat] = [red, blue, green, orange]
        let chartCenter: CGFloat = chartSize / 2.0
        
        // チャート作成関数の切り替え
        var chartFunc: (chartCenter: CGFloat, i: Int, start: CGFloat, end: CGFloat) -> ()
        if(self.selector.selectedSegmentIndex == 0) {
           
            chartFunc = self.strokeChart
        } else {
            
            chartFunc = self.fillChart
        }
        
        var start: CGFloat = 0.0
       for i in 0..<4 {
            
            var end: CGFloat = start + ratios[i]
            chartFunc(chartCenter: chartCenter, i: i, start: start, end: end)
            start = end
        }
    }
    
    // 塗りつぶしでグラフを描画します
    func fillChart(chartCenter: CGFloat, i: Int, start: CGFloat, end: CGFloat) {
        
        var path: UIBezierPath = UIBezierPath();
        
        path.moveToPoint(CGPointMake(chartCenter, chartCenter))
        path.addArcWithCenter(CGPointMake(chartCenter, chartCenter),
            radius: 100,
            startAngle: start - CGFloat(M_PI) / 2.0,
            endAngle: end - CGFloat(M_PI) / 2.0,
            clockwise: true)
        
        //=====
        var sl: CAShapeLayer = CAShapeLayer()
        sl.fillColor = self.dynamicType.color(i).CGColor
        sl.path = path.CGPath
        //=====
        
        self.chart.layer.addSublayer(sl)
        
        var mask: UIView = UIView(frame: CGRectMake(0, 0, 140, 140))
        mask.layer.cornerRadius = 70
        mask.center = CGPointMake(chartCenter, chartCenter)
        mask.backgroundColor = self.dynamicType.color(5)
        chart.addSubview(mask)
    }
   
    // 点線でグラフを描画します。
    func strokeChart(chartCenter: CGFloat, i: Int, start: CGFloat, end: CGFloat) {
        
        var path: UIBezierPath = UIBezierPath();
        
        path.addArcWithCenter(CGPointMake(chartCenter, chartCenter),
            radius: 100,
            startAngle: start - CGFloat(M_PI) / 2.0,
            endAngle: end - CGFloat(M_PI) / 2.0,
            clockwise: true)
        
        //=====
        var sl: CAShapeLayer = CAShapeLayer()
        sl.fillColor = UIColor.clearColor().CGColor
        sl.strokeColor = self.dynamicType.color(i).CGColor
        sl.lineWidth = 30
        
        // 点線をセット
        var dashPattern:[CGFloat] = [1, 4]
        sl.lineDashPattern = dashPattern
        sl.path = path.CGPath
        //=====
        
        self.chart.layer.addSublayer(sl)
        
    }
    
    // セグメンテッドコントロールを作成
    func createSelector() {
        
        self.selector.frame = CGRectMake(60, 500, 200, 44)
        self.selector.selectedSegmentIndex = 0
        self.selector.addTarget(self, action: "selected:", forControlEvents: UIControlEvents.ValueChanged)
        self.view.addSubview(self.selector)
        
    }
    
    func selected(sender: UISegmentedControl) {
        // チャートの再作成
        self.chart.removeFromSuperview()
        self.createChart()
    }
    
    class func color(num: Int) -> UIColor {

        switch num {
            
        case 0: return ViewController.uiColorHex(0xF24495)
        case 1: return ViewController.uiColorHex(0x04BFBF)
        case 2: return ViewController.uiColorHex(0xB2F252)
        case 3: return ViewController.uiColorHex(0xF2CB05)
        case 4: return ViewController.uiColorHex(0xE9F2DF)
        case 5: return UIColor(white: 0.8, alpha: 1.0)

        default:
            break
        }
        
        return UIColor.blackColor()
    }

    class func uiColorHex(rgbValue: UInt32) -> UIColor {
        
//        println("------------")
//        println("rgbValue :\(rgbValue)")
//        println("red      :\((CGFloat)((rgbValue & 0xFF0000) >> 16) / 255)")
//        println("green    :\((CGFloat)((rgbValue & 0x00FF00) >> 8) / 255)")
//        println("blue     :\((CGFloat)(rgbValue & 0x0000FF) / 255)")
//        
//        let red: CGFloat    = ((CGFloat)((rgbValue & 0xFF0000) >> 16) / 255)
//        let green: CGFloat  = ((CGFloat)((rgbValue & 0x00FF00) >> 8) / 255)
//        let blue: CGFloat   = ((CGFloat)(rgbValue & 0x0000FF) / 255)
//        return UIColor(red: red, green: green,blue: blue, alpha: 1.0)
        
        return UIColor(red: CGFloat(((rgbValue & 0xFF0000) >> 16)) / 255.0,
                    green: CGFloat(((rgbValue & 0x00FF00) >> 8)) / 255.0,
                    blue: CGFloat((rgbValue & 0x0000FF)) / 255.0,
                    alpha: 1.0)
    }
}



Swiftの文法に慣れていないので思ったより時間がかかりました。
詰まった点として
 ・Int型とCGFloat型(というか異なる型間)との計算時にキャストが必須となっている
 ・オプショナル型(!, ?)の扱いによるメソッド呼び出し
でしょうか。


2014/12/29

[Swift] required init(coder aDecoder: NSCoder) の "coder" って?!

タイトルのままです。

プライベートが忙しく久しぶりに Swift を触ってみたのですが、
この " coder" が何を指しているかわかりません ^^;


class ViewController: UIViewController {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override init() {
        super.init()
        
    }
}

みなさん頻繁に出会うはずなのですが、特に情報もなく...
ご存知の方いらっしゃったら、教えてください!

2014/10/19

[Xcode, Git] Xcodeで作成した Git リポジトリにタグを追加する方法


せっかくGitでソース管理をしているので、次の開発へ入る前にリポジトリにタグをつけておきたいですよね。
しかし、Xcode(5.1.1)ではGitのリポジトリにタグをつけることができません。
「困ったぞ...」と思っていたのですが、「他のツールやコマンド使えばできるんじゃ?」と思い、「SorceTree」を使用してタグを付けることに成功しましたのでご紹介します。

1.ツールの準備

「SorceTree」を以下からダウンロードし、Macにインストールします。
(昔、私がインストールした時はメールアドレスの登録が必要でしたが現在は不要になった?)

  ・SorceTree - Atlassian.

「SorceTree」の基本的な使い方は、詳しく解説されている方いらっしゃるので、ここでは割愛します。

2.リポジトリのクローン(ソースの取得)

対象となる(XcodeでPushしている)リポジトリをローカルにクローンします。 私は以前書いた記事のとおりDropbox上にリポジトリを作成しているので、対象となるディレクトリまでのフルパスを指定しています。


3.タグ付け

それではタグを付けます。
2 の手順で、[ブランチ] → [master] にローカルリポジトリを作成しているので選択します。
あとは↓の画像のとおりタグを入力するだけです。
(ここでは "V1.0.0_B2.0" と入力しました)


タグが付いていることを確認します。


以上でタグ付けは完了です。
注意したいのは、ここでタグ付けを行ってもXcode上から確認できないということです。

もし、Xcodeからタグの確認を行えるようでしたら、コメントなどでご指摘お願いします。


2014/10/17

[iOS,アプリ,ScanSnap] (追記アリ)ScanSnapをもっと便利にするアプリ「SSLauncher」をリリースしました



今回、個人として初めてアプリをリリースする運びとなりました。
本日はそのアプリの紹介をしちゃいます。








その名も「SSLauncher」です。(バージョン2.0.0にアップしました15/03/30追記

SSLauncher を使えば ScanSnap Connect Applicationと連携し、ScanSnap でスキャンしたドキュメントを「自動」で「簡単」にクラウドへアップロードできます。
(※)対応するクラウドは随時追加していきます。

 ----- 15/03/07追記 -----
   リクエストいただきありがとうございました(レビュー励みになっております)。
   Evernote対応をいたしました(今後も便利な機能を追加予定です)。
   この機会に是非ご利用ください!
 -------------------------




SSLauncherの特長は↓のようになっています。
■特長1 ワンタップでクラウドへ
ワンタップするだけでスキャンが始まり、あらかじめ指定したクラウドの場所へドキュメントをアップロードします。
毎回、ドキュメントの保存場所を指定する必要はありません。

■特長2 読み取り設定、アップロード先を個別に記憶できる
読み取り設定、アップロード先をドキュメントに合わせて記憶させておけるので、スキャン時は好きな設定を選ぶだけでOK!

■特長3 スキャン実行時にファイル名を指定できる
スキャン実行時にファイル名を自由に指定できます。もうスキャン後にファイル名を編集する必要はありません。

つまり、こんな人向けです。
■ 手間なくクラウドの特定のフォルダへドキュメントをアップロードしたい
■ 同じ分類のドキュメントは同じフォルダに簡単にまとめておきたい
■ ドキュメント毎にスキャン設定を変更してスキャンをしたい

使い方

それでは、SSLauncherの使い方を説明していきます。

1. 環境の確認

SSLauncherを使用するには、以下のソフトウェアやスキャナなどが必要です。

 ・ScanSnap Connect Application V2.4.0 以降(iOS版)
 ・ScanSnapシリーズ
 ・Dropboxのアカウント


動作確認済みの ScanSnap は以下です。
    (※)他の機種での動作結果について、フィードバックをくださると助かります(連絡先は最下部にあります)。
・iX100
・iX500
  

2. 事前準備

1. SSLauncher を App Store からインストールします。




2. ScanSnap Connect Application(以降、SSCAとします) を App Store からインストールします。
 (※)Dropboxのアプリはインストールしていなくても大丈夫です。

   



3. SSCA と ScanSnap の接続設定を行います。
 詳細はPC上の ScanSnap Manager の設定手順やSSCA内の使用方法をご覧ください。
 (※)既にSSCAをご利用の方は、改めて設定する必要はありませんです ^^
 
 
 

iX100は、SSCAでセットアップウィザードが用意されておりとてもわかり易かったです。


4. SSLauncher を起動し、[設定] → [クラウド] → [Dropbox] を押下します。
  Dropboxとの認証画面が表示されるので、 [許可] を押下してください。

    
















5. [+] ボタンを押下して、Dropboxへのドキュメントの保存先やスキャン時の用紙サイズ、画質などを設定します。




6. 作成するとLauncherが表示されます。



以上で準備はできました。それではいよいよスキャンを行います!!

3. スキャン 〜 アップロード

1. Launcherをタップします。



 2. SSCAが起動し、スキャンが開始されます。

 


 3. ScanSnapでドキュメントを読み込み、スキャンが完了したら終了ボタンを押します。



 4. SSLauncherが起動し、スキャンしたファイルがクラウドへアップロードされます。
   ステータスバーの(時刻などを表示している)位置にアップロード状況が表示されます。

  


※Dropboxアプリでアップロードされていることを確認してみます。
あらかじめLauncherで指定したフォルダにアップロードされていることが
分かると思います(左図)。

 


以上でSSLauncherの使い方の説明は終了です。
2回目以降は「3. スキャン 〜 アップロード」の手順を繰り返せばどんどんクラウドへドキュメントをアップロードできるので、とても簡単です。


4. その他

すべての機能は無料でご利用できます。
ただ、スキャン回数などに上限が設けてありますので、もし気に入ってくださった方はフル機能をご購入いただけますと幸いです。


5. フィードバック先

「こんなクラウドに対応して欲しい」、「こんな機能あったらいいのに」、「このScanSnapで使えたよ」など、ありましたら↓にフィードバックをお願いします。
可能な限り対応していきます。

  toomoo.feedback@xxx     ← xxx は、gmail.com となります


6. 技術的内容

本当はSwiftで作成したかったのですが、開発スピード優先で今回は見送りました。
今後の追加機能などはSwiftで作成できるよう取り組んでいきます。


-----
それでは、このアプリが皆さんのScanSnapライフに役立つことを願っております♪







※当方は株式会社PFUとは関係ありません。このアプリについて株式会社PFUへお問い合わせを行うのはご遠慮願います。

・ScanSnap は株式会社PFUの日本における登録商標または登録商標です。
・Dropboxは、米国Dropbox, Inc.の商標または登録商標です。
・その他、記載されている社名及び商品名はそれぞれ各社が商標または登録商標として使用している場合があります。