20211016のiOSに関する記事は4件です。

【iOS】Qiita デイリー LGTM 数ランキング【自動更新】

他のタグ AWS Android Docker Git Go iOS Java JavaScript Linux Node.js PHP Python Rails React Ruby Swift TypeScript Vim Vue.js 初心者 集計について 期間: 2021-10-19 ~ 2021-10-20 GitHub スターをもらえるととっても励みになります LGTM 数ランキング 1 位: RealityKitのサンプルコード集「RealityKit-Sampler」 iOS AR Swift realitykit RealityComposer 2 LGTM 2 ストック @john-rocky さん ( 2021-10-19 23:06 に投稿 ) 2 位: シミュレータの動画を撮影したい時のメモ Xcode iOS 1 LGTM 0 ストック @Fuyan777 さん ( 2021-10-19 10:18 に投稿 )
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【ご紹介】iPadで英論文を爆速超快適に読めるようになるショートカットver.2【DeepL】

いんとろ みなさん論文読んでますかー!?僕はあんまり読めていません。 さて、そんなこんなで英語の論文を読むのに必要なのが、もはやお馴染みのDeepL。翻訳がないとやってられませんよね! パソコン版ならちゃんとしたアプリもあるしCommandにC連打でバシッと翻訳してくれます。 こんなのがiPadにもほしい!ということで作りましたよショートカット。 いろいろやることはありますが、一度セットアップしちゃえばiPad最強の論文ヨミヨミマシンになること間違いなし! もちべ 「でもそんなこと言ったってDeepLのショートカットなんて巷によくあるじゃん?」「既にAssistiveTouchに割り当ててるよ!」 確かにそうです、でもよくあるショートカットにはいくつかの不満がありました。 数式があると途切れる! ちょっと縦に長くて見にくい! 特に数式があると途切れてしまうというのは、論文を読んでいるときには致命的です。 と、いうわけでちゃんとAPIを叩くようにして問題解決しました、なのでVer2.0です。 動く様子 ※このiCloudリンクは古いものです。 できた!よくあるDeepLのショートカットだと、途中に数式とか特殊文字とか含むとそこで途切れちゃったりしてうまく翻訳できないから、直接API叩いて翻訳するようにした結果も見やすいようにカスタマイズAssistiveTouchにショートカット割り当てて爆速https://t.co/4cUUiUfePf pic.twitter.com/r4M5oIvBIh— Hiro (@hiro2do) October 15, 2021 使い方 DeepL APIを利用しているので認証キーをもらわないといけません。 Step1 会員登録 こちらのDeepLのサイトから会員登録をします。 無料会員だと、 1ヶ月あたり500,000文字の上限があること 法人レベルのセキュリティが確保されていないこと に注意してください。 また、無料会員でもクレジットカード番号の入力を求められますが、勝手に請求が来ることはないそうです。 Step2 認証キーをコピー 認証キーをコピーします。アカウント情報の下の方にあるでしょう。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:fx という形をしています。 Step3 ダウンロードとセットアップ こちらからショートカットをダウンロードし、先程の認証キーを貼り付けます。 さらに、使うAPIによって、 アカウント APIのアドレス 無料 https://api-free.deepl.com/v2/translate Pro https://api.deepl.com/v2/translate と分かれているので、違う方は削除してください。 Pro版ではテストしてません、ご了承ください。 Step4 (おまけ)AssistiveTouchに登録 設定→アクセシビリティ→タッチ→AssistiveTouchをオンにします。 このようにショートカットを登録すれば、テキストをコピーしたあと、黒ポッチを連打すればDeepLが開きます。 また、設定→アクセシビリティ→ショートカット(下の方)からこのように設定し、 設定→コントロールセンターでアクセシビリティのなんたらかんたら追加してやれば、黒ポッチの表示/非表示を簡単に切り替えることができます。 参考文献 DeepL API 【サンプル・デモあり】Bootstrap4でコピーしてTooltip(ツールチップ)を表示する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOSアプリからスプレッドシートにデータを書き込む

iOSアプリからスプレッドシートにデータを書き込みたい時が人生にはあります。その方法です。 大まかな流れ iOSからスプレッドシートのデータを書くためには、スプレッドシート側にGAS(Google Apps Script)を実装する必要があります。GASでスプレッドシートをWriteするPOSTを実装し、iOSからそこ目掛けて通信する実装をすれば完成です。 GASの実装 スプレッドシートの「シート1」シートに下記のようなデータがあるものとします。 スプレッドシートメニューのツール>スクリプトエディタを選択します。 するとApps Scriptエディタが開きます。 ここに処理を実装していきます。 Writeする スプレッドシートにデータを書き込む方法は以下の通りです。 function myFunction(){ var targetFileID = DriveApp.getFileById("xxxxx") var targetFile = SpreadsheetApp.open(targetFileID) var targetSheet = targetFile.getSheetByName("シート1") var targetRow = targetSheet.getLastRow() + 1 targetSheet.getRange(targetRow, 1, 1, 4).setValues([["次郎", 28, 30, 1]]) } DriveApp.getFileById("xxxxx")でGoogle Drive内にある対象ファイルのIDを取得します。※1 SpreadsheetApp.open(targetFileID)で対象ファイルを取得します。 targetFile.getSheetByName("シート1")で対象ファイル内の対象シートを取得します。 targetSheet.getLastRow() + 1で現在入力済みの最終行を取得し1を足すことで次の空白行の行数を取得します。 targetSheet.getRange(targetRow, 1, 1, 4).setValues([["次郎", 28, 30, 1]])で対象シート内の対象となる行(ここでは4行目)1列目のセルを起点に、1行分4列目までに次郎", 28, 30, 1の値を書き込みます デバッグするにはメニューバーにある▷実行を押します。 スプレッドシートの内容にアクセスする場合、初回はアクセス権限に関する表示が出るので対処します。 ※1:ファイルIDはURLの https://docs.google.com/spreadsheets/d/xxxxx/edit#gid=0 のxxxxxにあたる部分です 実行後、スプレッドシート側に書き込みが行われていることが確認できます。 POSTを実装する GASでWebAPIを実装できます。GASの中でPOSTならdoPost(e)を定義し実装します。これをウェブアプリとして公開するとWebAPIが発行され外部からアクセスできるようになります。 doPost(e) スプレッドシートにWebAPI経由で書き込む方法は以下の通りです。 //POSTされるデータ形式 postData: { 'contents' : '{"users": [{"name": "次郎", "age": "28", "count": "30", "error": "1"}]}' } 前提として、GASのdoPost(e)で送られたデータは、e.postData["contents"]に格納されることになっています。これを踏まえ、doPost内の処理を実装していきます。 function doPost(e){ var targetFileID = DriveApp.getFileById("xxxxx") var targetFile = SpreadsheetApp.open(targetFileID) var targetSheet = targetFile.getSheetByName("シート1") var targetRow = targetSheet.getLastRow() + 1 var json = JSON.parse(e.postData["contents"]) var user = json["users"][0] targetSheet.getRange(targetRow, 1, 1, 4).setValues([[user.name, user.age, user.count, user.error]]) } 書き込む行(データ最下行の1つ下の行)の取得まではWriteすると同じです。 JSON.parse(e.postData["contents"])でPOSTされたデータそのものを取得します。 usersキーのバリューとしてuserを格納した配列があり、ここではその1つ目を取得します。 setValues()でPOSTされたuserデータの書き込みを行います。 デプロイを行い、WebAPIを発行します。 こちらの手順を参考にして下さい。 すると、このような形でWebAPIが取得できます。 ここではusersには1つしかデータがありませんが、 当然一度に複数人のデータを送り全部書き込ませることも可能です。 内容の修正を行った際は忘れずにWebAPIの処理内容も更新してください。 iOSの実装 ここではiOSからGASのWebAPIへのアクセスを容易にするためにAlamofireとSwiftyJSONを用います。 import UIKit import Alamofire import SwiftyJSON class ViewController: UIViewController { let url = "https://script.google.com/macros/s/xxx/exec" //上記で取得したWebAPI @IBOutlet weak var name: UITextField! @IBOutlet weak var age: UITextField! var count: Int! var error: Int! override func viewDidLoad() { //何かしら下記2つの値を取得する処理など count = 45 error = 3 } @IBAction func onTap(_ sender: Any) { //POSTするデータの生成 var user: Dictionary<String, Any> = [:] user["name"] = name.text //香織 user["age"] = age.text //24 user["count"] = self.count user["error"] = self.error var users: Array<Dictionary<String, Any>> = [] users.append(user) //POST処理 AF.request(url, method: .post, parameters: ["users": users], encoding: JSONEncoding.default, headers: nil ).responseJSON{ (response) in switch response.result { case .success(let elm): print("success") case .failure(let error): print("error", error) } } } } doPost(e)で記載した各データと同じキーを用いて辞書型オブジェクトを作成し、配列に格納します。 AF.request(_, method: .post)で上で取得したWebAPIにPOSTで通信を行います。また、パラメータを辞書型で渡し、エンコードをJSON形式にします。 POSTを行うと、GAS側からのレスポンスが来るので受け口を用意します。 .success(let elm)のelmにはGAS側のdoPostに実装したreturnの値が入ります。必要に応じて実装してください。 .failure(let error)はPOSTに失敗した場合に実行されます。 これをシュミレータで実行し、ボタンを押すとこうなります。 まとめ iOSアプリからスプレッドシートにデータを書き込む方法をまとめました。スプレッドシートのデータを読み込む方法もまとめましたので、よろしければこちらもご覧ください。 おまけ doPost(e)を実装する際、POSTデータを修正する度にGASとiOSを直しiOSシミュレータからアクセスするのは面倒です。 GAS側で下記のように実装し実行する関数をdebugDoPostにすることで、擬似的に外部からのPOSTを実装できるので効率的です。 function debugDoPost(){ const e = { postData: { 'contents' : '{"users": [{"name": "次郎", "age": "28", "count": "30", "error": "1"}]}' } } doPost(e) }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOSアプリからスプレッドシードにデータを書き込む

iOSアプリからスプレッドシートにデータを書き込みたい時が人生にはあります。その方法です。 大まかな流れ iOSからスプレッドシートのデータを書くためには、スプレッドシート側にGAS(Google Apps Script)を実装する必要があります。GASでスプレッドシートをWriteするPOSTを実装し、iOSからそこ目掛けて通信する実装をすれば完成です。 GASの実装 スプレッドシートの「シート1」シートに下記のようなデータがあるものとします。 スプレッドシートメニューのツール>スクリプトエディタを選択します。 するとApps Scriptエディタが開きます。 ここに処理を実装していきます。 Writeする スプレッドシートにデータを書き込む方法は以下の通りです。 function myFunction(){ var targetFileID = DriveApp.getFileById("xxxxx") var targetFile = SpreadsheetApp.open(targetFileID) var targetSheet = targetFile.getSheetByName("シート1") var targetRow = targetSheet.getLastRow() + 1 targetSheet.getRange(targetRow, 1, 1, 4).setValues([["次郎", 28, 30, 1]]) } DriveApp.getFileById("xxxxx")でGoogle Drive内にある対象ファイルのIDを取得します。※1 SpreadsheetApp.open(targetFileID)で対象ファイルを取得します。 targetFile.getSheetByName("シート1")で対象ファイル内の対象シートを取得します。 targetSheet.getLastRow() + 1で現在入力済みの最終行を取得し1を足すことで次の空白行の行数を取得します。 targetSheet.getRange(targetRow, 1, 1, 4).setValues([["次郎", 28, 30, 1]])で対象シート内の対象となる行(ここでは4行目)1列目のセルを起点に、1行分4列目までに次郎", 28, 30, 1の値を書き込みます デバッグするにはメニューバーにある▷実行を押します。 スプレッドシートの内容にアクセスする場合、初回はアクセス権限に関する表示が出るので対処します。 ※1:ファイルIDはURLの https://docs.google.com/spreadsheets/d/xxxxx/edit#gid=0 のxxxxxにあたる部分です 実行後、スプレッドシート側に書き込みが行われていることが確認できます。 POSTを実装する GASでWebAPIを実装できます。GASの中でPOSTならdoPost(e)を定義し実装します。これをウェブアプリとして公開するとWebAPIが発行され外部からアクセスできるようになります。 doPost(e) スプレッドシートにWebAPI経由で書き込む方法は以下の通りです。 //POSTされるデータ形式 postData: { 'contents' : '{"users": [{"name": "次郎", "age": "28", "count": "30", "error": "1"}]}' } 前提として、GASのdoPost(e)で送られたデータは、e.postData["contents"]に格納されることになっています。これを踏まえ、doPost内の処理を実装していきます。 function doPost(e){ var targetFileID = DriveApp.getFileById("xxxxx") var targetFile = SpreadsheetApp.open(targetFileID) var targetSheet = targetFile.getSheetByName("シート1") var targetRow = targetSheet.getLastRow() + 1 var json = JSON.parse(e.postData["contents"]) var user = json["users"][0] targetSheet.getRange(targetRow, 1, 1, 4).setValues([[user.name, user.age, user.count, user.error]]) } 書き込む行(データ最下行の1つ下の行)の取得まではWriteすると同じです。 JSON.parse(e.postData["contents"])でPOSTされたデータそのものを取得します。 usersキーのバリューとしてuserを格納した配列があり、ここではその1つ目を取得します。 setValues()でPOSTされたuserデータの書き込みを行います。 デプロイを行い、WebAPIを発行します。 こちらの手順を参考にして下さい。 すると、このような形でWebAPIが取得できます。 ここではusersには1つしかデータがありませんが、 当然一度に複数人のデータを送り全部書き込ませることも可能です。 内容の修正を行った際は忘れずにWebAPIの処理内容も更新してください。 iOSの実装 ここではiOSからGASのWebAPIへのアクセスを容易にするためにAlamofireとSwiftyJSONを用います。 import UIKit import Alamofire import SwiftyJSON class ViewController: UIViewController { let url = "https://script.google.com/macros/s/xxx/exec" //上記で取得したWebAPI @IBOutlet weak var name: UITextField! @IBOutlet weak var age: UITextField! var count: Int! var error: Int! override func viewDidLoad() { //何かしら下記2つの値を取得する処理など count = 45 error = 3 } @IBAction func onTap(_ sender: Any) { //POSTするデータの生成 var user: Dictionary<String, Any> = [:] user["name"] = name.text //香織 user["age"] = age.text //24 user["count"] = self.count user["error"] = self.error var users: Array<Dictionary<String, Any>> = [] users.append(user) //POST処理 AF.request(url, method: .post, parameters: ["users": users], encoding: JSONEncoding.default, headers: nil ).responseJSON{ (response) in switch response.result { case .success(let elm): print("success") case .failure(let error): print("error", error) } } } } doPost(e)で記載した各データと同じキーを用いて辞書型オブジェクトを作成し、配列に格納します。 AF.request(_, method: .post)で上で取得したWebAPIにPOSTで通信を行います。また、パラメータを辞書型で渡し、エンコードをJSON形式にします。 POSTを行うと、GAS側からのレスポンスが来るので受け口を用意します。 .success(let elm)のelmにはGAS側のdoPostに実装したreturnの値が入ります。必要に応じて実装してください。 .failure(let error)はPOSTに失敗した場合に実行されます。 これをシュミレータで実行し、ボタンを押すとこうなります。 まとめ iOSアプリからスプレッドシートにデータを書き込む方法をまとめました。スプレッドシートのデータを読み込む方法もまとめましたので、よろしければこちらもご覧ください。 おまけ doPost(e)を実装する際、POSTデータを修正する度にGASとiOSを直しiOSシミュレータからアクセスするのは面倒です。 GAS側で下記のように実装し実行する関数をdebugDoPostにすることで、擬似的に外部からのPOSTを実装できるので効率的です。 function debugDoPost(){ const e = { postData: { 'contents' : '{"users": [{"name": "次郎", "age": "28", "count": "30", "error": "1"}]}' } } doPost(e) }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む