iosでIFRSコンバーターアプリを作ろう

IFRSの特徴
◆原則主義(プリンシプル・ベース)
IFRSは、財務報告に関する原理・原則を明らかにするとともに、例外規定は極力認めず、その解釈や運用は、企業の 判断に任せる考え方です。一方、日本基準は、詳細で具体的な規定や数値基準を設ける対照的な「細則主義(ルール・ベース)」と云う考え方で、制定されています。

◆資産・負債アプローチ
IFRSは、資産・負債の評価とその差額としての純資産、つまり、財政状態計算書に計上されている財産価値を重視しています。その財産価値の、会計期間の期首から期末までに増加した(または減少した部分を利益(または損失)として認識します。利益算出の考え方を「資産・負債アプローチ」と云います。そしてこの認識された利益は「包括利益」と呼ばれています。
従来の日本基準では、収益から費用を差し引いた利益を重視し、その計上された純利益の結果、純資産が増加すると云う考え方で、これを「収益・費用アプローチ」と云います。

◆公正価値アプローチ
IFRSでは、将来の経済的便益の提供能力の算定と云う考え方から、公正価値による評価が重視されます。公正価値は、「・・・・・当事者間で資産が交換され、負債が決済される価額」と定義されますが、平たく云えば、「時価」を指しますが、IFRSでは、資産や負債の公正価値変動額が「包括利益」の一部を構成しますので、「資産・負債アプローチ」と資産・負債の公正価値評価と包括利益の算定には密接な関係があります

◆その他、財報告における経営管理区分(セグメント)を重視した「セグメント・アプローチ」(日本基準でもセグメント情報に採用済み)、財務情報の比較可能性の重視、形式より実質(実態)を優先して、企業の経済的実態をを明らかにしようとしている考え方等がIFRS基準書全体に共通する特徴となっています。

為替レートは?
IFRSでは、まず機能通貨を決定し、機能通貨による帳簿記入を行う
-売上に関連する通貨
財貨及び役務の販売価格に大きく影響を与える通貨
競争力及び規制が財貨と役務の販売価格を主に決定することになる国の通貨
-仕入に関連する通貨
労務費、材料費や財貨や役務を提供するためのその他の原価に主に影響を与える通貨

外貨建貨幣性項目:決算日の為替レート
取得原価で測定される外貨建非貨幣性項目:取引日の為替レート
公正価値で測定される外貨建非貨幣性項目:公正価値で測定された日の為替レート

外貨建取引は、取引日における当該外貨と機能通貨の間の換算は、原則、取引日レートで行い認識します。
なるほど、為替レートはAPIで取得してもダメということですね。

view controller と navigation controllerを配置していきます。

itune connectのスクリーンショット

5.5 Displayはiphone8 plusか。どうりでおかしいわけだ。

enter image description here
iPhone 5.8″ Display (optional)
This is 1125 x 2436 pixels. You can create this size image using the iPhone X simulator. Make sure that Debug > Optimize Rendering for Window Scale is unselected. Then go to File > New Screen Shot or press Command+S to save the screenshot to the desktop.

As noted above, this is one is optional.

iPhone 5.5″ Display
This is 1242 x 2208 pixels. You can create this size image using the iPhone 8 Plus simulator at 100% scale.

iPad 12.9″ Display
That is 2048 x 2732 pixels. You can create this size image using the iPad Pro simulator at 100% scale.

waiting for reviewとなりました。
大体申請の流れはわかりましたね。
-app Icon, キャプチャーの用意
-iphone, ipadを想定して作る
-ituneで似たようなappを調べておく

absで絶対値に変換する

連敗中は、「-3連敗」ではなく、「3連敗」としたい。

if self.load > 1 {
self.gameResult.text = String(self.load) + str
} else if self.load < -1{ self.gameResult.text = String(abs(self.load)) + strl } else { } [/code] きたーーーーーー
とりあえず、じゃんけんアプリ完成!
さて、app申請したい。

連勝中に負けた時、連敗中に勝った時の処理を加える

@IBAction func getChoki(_ sender: Any) {
        let results2 = ["Image1","Image2","Image3"]
        let random2 = arc4random_uniform(UInt32(results2.count))
        let image2 = UIImage(named: results2[Int(random2)])
        imageView.image = image2
        let image5 = UIImage(named: "Image5")
        imageView2.image = image5
        
        let even = "あいこ"
        let win = "あなたの勝ち"
        let lose = "あなたの負け"
        
        if random2 == 0 {
            self.gameResult.text = lose
            if self.userDefaults.object(forKey: "load") != nil {
                if self.userDefaults.integer(forKey:"load") < 0 {
                    self.load = self.userDefaults.integer(forKey:"load")
                    self.load -= 1
                } else {
                    self.load = -1
                }
            } else {
                self.load = -1
            }
        } else if(random2 == 1){
            self.gameResult.text = even
            if self.userDefaults.object(forKey: "load") != nil {
                self.load = self.userDefaults.integer(forKey: "load")
            } else {
                self.load = 0
            }
        } else {
            self.gameResult.text = win
            if self.userDefaults.object(forKey: "load") != nil {
                if self.userDefaults.integer(forKey:"load") > 0 {
                    self.load = self.userDefaults.integer(forKey:"load")
                    self.load += 1
                } else {
                    self.load = 1
                }
            } else {
                self.load = 1
            }
        }
        self.gameResult.text = String(self.load) + str
        UserDefaults.standard.set(self.load, forKey: "load")
    }

7連勝中でも、一度負けると-1連勝に成りました。
あとはviewの分岐ですね。

userDefaultsで連勝している値を保存する

self.userDefaults.object(forKey: “load”) != nil で、空判定

    let userDefaults = UserDefaults.standard

    var load = 0
    var str:String = "連勝"

    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var resultView: UILabel!
    @IBOutlet weak var imageView2: UIImageView!
    @IBOutlet weak var gameResult: UILabel!

    @IBAction func getGoo(_ sender: Any) {
        let results1 = ["Image1","Image2","Image3"]
        let random1 = arc4random_uniform(UInt32(results1.count))
        let image1 = UIImage(named: results1[Int(random1)])
        imageView.image = image1
        let image4 = UIImage(named: "Image4")
        imageView2.image = image4
        
        let even = "あいこ"
        let win = "あなたの勝ち"
        let lose = "あなたの負け"
        
        if random1 == 0 {
            self.gameResult.text = even
            if self.userDefaults.object(forKey: "load") != nil {
                self.load = self.userDefaults.integer(forKey: "load")
            } else {
                self.load = 0
            }
        } else if(random1 == 1){
            self.gameResult.text = win
            if self.userDefaults.object(forKey: "load") != nil {
                self.load = self.userDefaults.integer(forKey:"load")
                self.load += 1
            } else {
                self.load = 1
            }
        } else {
            self.gameResult.text = lose
            if self.userDefaults.object(forKey: "load") != nil {
                self.load = self.userDefaults.integer(forKey:"load")
                self.load -= 1
            } else {
                self.load = -1
            }
        }
        self.gameResult.text = String(self.load) + str
        UserDefaults.standard.set(self.load, forKey: "load")
        
    }

なるほど、保存できることはわかった。

負けた時に、-1連勝となるので、var str:String = “連勝” の他に、連敗のテキストを作り、連勝中の負けの時と連敗中の勝ちの時は、load = 0 にリセットですな。

勝ちの時

if self.userDefaults.object(forKey: "load") != nil {
                if self.userDefaults.integer(forKey:"load") > 0 {
                    self.load = self.userDefaults.integer(forKey:"load")
                    self.load += 1
                } else {
                    self.load = 0
                }

負けの時

if self.userDefaults.integer(forKey:”load”) < 0 { self.load = self.userDefaults.integer(forKey:"load") self.load -= 1 } else { self.load = 0 } [/code]