SwiftUI の UIView を画像にして保存するサンプル
SwiftUI で UIView
の内容を画像(UIImage
)にして、アルバムに保存するサンプルを作った。
SwiftUI は現在の View を直接 UIView
として扱うことは難しいので UIApplication
経由で UIView
を取得する感じになる。
extension UIView { func image() -> UIImage { let renderer = UIGraphicsImageRenderer(bounds: self.bounds) return renderer.image { rendererContext in layer.render(in: rendererContext.cgContext) } } } extension UIApplication { static func image() -> UIImage? { guard let rootViewController = shared.windows[0].rootViewController else { return nil } guard let view = rootViewController.view else { return nil } return view.image() } }
非税理士が申告書などを作成するソフトを開発、販売することは禁止されているか?
税理士の業務は、独占業務なので、非税理士が事務をすると違法になる場合がある。
では、ソフトウェア・アプリで税理士に関連したものを開発するとどうなるのか?
https://www.nta.go.jp/taxes/zeirishi/zeirishiseido/ihan/qa02.htm
問2-3 他人の求めに応じ、業として、申告書等の作成ソフトを開発又は販売することは、非税理士により行うことが禁止されている税理士業務に該当しますか。 答 非税理士が申告書等の作成ソフトを開発又は販売することは、非税理士により行うことが禁止されている税理士業務のいずれにも該当しません(問2-1参照)。 【参考法令等】
法第2条、第52条
大丈夫そうである。
SwiftUI で iOS アプリを個人開発&ストアに公開した
2019年に Apple から SwiftUI が発表された。
今回、その SwiftUI を使ってアプリを開発&ストアに公開までしたので、実際 SwiftUI 使ってみての感想などをメモする。
公開した iOS アプリ
公開したアプリは以下である。
複雑で難易度が高いアプリだと SwiftUI も慣れていないため、挫折しそう。。
なので、ある程度やりやすそうな題材を選んだ。
最初、審査に提出したら内容がコンパクトすぎたのか、Minimum Functionality でリジェクトされた。。
その後、すこし機能追加して、無事審査は通った。
SwiftUI の初期印象
最初に触ったみた SwiftUI の印象
- あくまでも UI を記述するたの機構
- 今までの Swift コードの View, ViewController にあたる部分が SwiftUI で書き換えれるイメージ
- SwiftUI は Swift 固有の言語(DSL:domain-specific language)であるので Swift とは別に学習が必要であり、すこしとっつきにくい
- UI コンポーネントの名前が UIKit と微妙に変わっていてややこしい
- UITableView -> List
- UISwitch -> Toggle
- データフローまわり、よくわからない・・・
- https://developer.apple.com/documentation/swiftui/state_and_data_flow
- @EnvironmentObject / @Binding / @State
- SwiftUI を使うと iOS 13 以降が対象になる -> なんか未来感があってイイ
よく理解できず、これでアプリが作れるんだろうか? という不安を感じた。
SwiftUI チュートリアルで学ぶ
まず公式のチュートリアルは鉄板なので、動かしてみてみる。
このチュートリアルをみていくと、アプリをつくるために必要な
- NavigationView (画面遷移)
- List(UIKit でいえば UITableView)
- Environment (アプリ全体でつかうデータ)
- @State (UI で変更した値と連動)
などの要素を学べる。
このチュートリアルで基礎を学んだら、いろいろ自分で、こういうのは SwiftUI でどう実現するのかな? という題材をつくり、トライして理解度を高めてゆくとよい。
SwiftUI サンプルを作って理解度を高める
いろいろサンプルを作って、動作を確かめていく。
私は以下のサンプルを作って試した。
- https://github.com/daisuke-t-jp/LocationObserverTest
- 地図表示と位置トラック
- https://github.com/daisuke-t-jp/SwiftUIListColorSample
- 色表示
- https://github.com/daisuke-t-jp/SwiftUIUserDefaultSample
- UserDefaults(記録の永続化)
- https://github.com/daisuke-t-jp/SwiftUIBindingSample
- Binding / 複数ビュー間で、共有データを連動
- https://github.com/daisuke-t-jp/SwiftUITextFieldOnEditingChangedSample
- TextField 編集イベントをハンドルする
- https://github.com/daisuke-t-jp/SwiftUIProgrammaticallyPushAndPop
- ユーザーアクションではなく、プログラムで Push/Pop
- https://github.com/daisuke-t-jp/SwiftUINavigationLinkSample
- UINavigationLink を使ってみた
- https://github.com/daisuke-t-jp/SwiftUICustomListRowSample
- カスタムな List の項目(テーブルビューのカスタムセル)
- https://github.com/daisuke-t-jp/SwiftUITextFieldCloseKeyboardSample
- TextField 編集中に背景ビューをタッチしたら、キーボードをとじる
- https://github.com/daisuke-t-jp/SwiftUITextFieldCurrencySample
- NumberFomatterで通貨表記
参考になった情報
マネーフォワードさんが SwiftUI で実際にアプリをリリースした時の記事。
SwiftUIの大変なところ 現状のSwiftUIには様々なバグや不足しているAPIなどまだまだ残っているなという印象です。
先行していろいろ試している方の記事を読んで「諦めが肝心」というマインドを得た。
こちらのリポジトリには、まとまった SwiftUI コードがあって、実装の上で大変参考になりました。
(Apple のチュートリアル以外で、ある程度の規模がありながら、動作する SwiftUI のコードは貴重である)
感想
アプリを開発/公開したり、いろいろ調べた結果
2020/1/7 現在、SwiftUI でアプリ開発することはまだ辛いな、という印象。
以下、理由
- アプリの動作に支障をきたすレベルの問題がまだ発生する(安定している環境とは言えない)
- Xcode のビルドエラー表示と、実際のエラーが剥離があり、修正しづらい
- 実際のエラーと関係ない
'Int' is not convertible to 'CGFloat?'
が表示され、わかりづらい - たとえばこれ -> SwiftUI ビュー内に直接配置するビューが多くてビルドエラーになる場合 - Daisuke TONOSAKI Weblog
- 実際のエラーと関係ない
一方で
今は SwiftUI そのものが改善されていくのを日々体験できる、という特別感があり、今後行き先はどうなるのか、楽しみではあります。 (Swift は OSS ですが、 SwiftUI は Closed な Apple 感があるような気がしますね)
複数の SVN ワーキングコピーの内容を最新に保つ
SVN の GUI クライアント(たとえば TortoiseSVN)を使うと、簡単に SVN 操作をできる。
しかし、複数の SVN ワーキングコピーに対して一括で操作したい場合、ひとつひとつ手作業をすると手間になる。
具体的には複数の SVN ワーキングコピーに対して、以下を実行したい
- ワーキングコピーがある場合は
svn update
でワーキングコピーを更新する - まだワーキングコピーがない場合は
svn checkout
で SVN リポジトリをチェックアウトする - update/checkout 時にエラーが発生したら
svn cleanup
をする
この問題に対応するために Python スクリプトを作成した。
https://github.com/daisuke-t-jp/svn-working-copy-updater
詳しい使い方は上記 GitHub の README.md を参照すること。
ところで
このスクリプトをテストするにあたり、現在まだ commit が継続されている現役の複数の SVN リポジトリを探すことに難儀した。
2019年現在、 やはり Git が主流(というかほぼ全て)になり、SVN でメンテナンスしているプロジェクトは少なくなった。
探した結果、Apache はまだ現役で SVN を使って複数のプロジェクトのバージョン管理をしているので、今回はそれをテストに使用した。
https://svn.apache.org/repos/asf/
subversion や httpd などがメンテナンスされていることが確認できる。
Apache 以外だと大きいところでは gcc も SVN 管理されている。(GitHub にある gcc リポジトリは mirror である)
本『「NHKから国民を守る党」の研究』(えらいてんちょう)の感想
YouTube という新しいメディアを活用して、地方議会、そして国会(参議院)に議席を獲得した政党「NHKから国民を守る党」を研究した本。
SNS というメディアが個人に普及して、ついに政治にまで影響が出る社会になったのか、と感じた。
YouTube や Twitter で出る情報というのは日々新しいし、コミュニケーションのツールでもあるため、なかなかまとまった情報がなく、いま現在ある熱狂に目がいってしまいがちだ。
その点この本では、ネット上の軌跡、書籍、関係者への取材を通じて、客観的に情報がまとまっているので、どのように新しい国政政党ができたのかを把握しやすい。
個人的にはこの本を読んで、妙に面白いのは、、
かつて作家の立花”隆”さんが、「日本共産党の研究」という政党の研究本を出したが、この本は立花”孝志”さんが党首である「NHKから国民を守る党の研究」という本なので、なんだかそのレトリック感がよい。
2019年ふりかえり 映画
2019年に観た映画のふりかえり。
以下、14作品の感想を書いた。
- あなたへ
- フィールド・オブ・ドリームス
- エンド・オブ・デイズ
- ビューティフルマインド
- ジュマンジ
- あん
- 悪人
- ショーシャンクの空に
- マッドマックス 怒りのデスロード
- ターミネーター2
- キューブ
- 今を生きる
- 不思議の国のアリス
- AKIRA
公開から時間が経っても良い評価が残る映画は、やっぱりよい映画が多い。
大半面白い映画だっだが、特に印象に残った映画は
- あん
- フィールドオブドリームス
- AKIRA
90年代のケビン・コスナーの映画はエキサイティングで良いですね。