はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    WWDC25

『qiita.com』

  • 人気
  • 新着
  • すべて
  • Playwrightで遠隔からAndroidデバイスをぐりぐり動かす。 - Qiita

    5 users

    qiita.com/YusukeIwaki

    この記事は、ソフトウェアテスト Advent Calendar 2022の11日目の記事となります。 前日11日の記事は、@gremito さんによる「Appium on Azure Pipelines」でした。本日の記事もアプリの自動操作関連です。 概要 ChromeやWebKitを自動操作できるPlaywrightはもう皆さんご存知ですよね? PlaywrightにはAndroidを自動操作する機能が実は備わっていて、AndroidネイティブアプリケーションもChromeブラウザも自動操作することができます。 ただ、これまではPCに直接ADB接続されているAndroidデバイスしか自動操作することができませんでした。 ところが、割と最近リリースされたv1.28では launchServer (ADB接続したAndroidデバイスをWebSocket経由で自動操作する機能)が追加されまし

    • テクノロジー
    • 2022/12/14 11:20
    • browser
    • android
    • 2021年12月現在、PlaywrightとPuppeteerのどっちを使うべき? - Qiita

      4 users

      qiita.com/YusukeIwaki

      去年、こんな記事を書いていました。 あれから1年、いまはどうなんでしょうか。 結論から言うと よほどの理由がない限り、Playwrightでしょう。 6月頃にはもうこの結論は出ていました。 Playwrightを使う理由 JavaScript, Python, C#, Java の言語を公式にサポートしている Goも公式入りするという話はあるが、半年以上経った今もまだされていない Auto waiting により、いちいちwaitForナントカを書かなくても、ある程度は安定した自動操作ができる 2021年8月ごろにリリースされたPlaywright 1.14で導入されたLocatorにより、さらにこの特性が利用しやすくなった。 ドキュメントの品質がとても良い マイクロソフトとは思えないクオリティ さすが元Googleの人が作ったOSS 他にもテストランナーなど便利な特徴はありますが、 とも

      • テクノロジー
      • 2021/12/13 13:16
      • browser
      • playwright-pythonを使ってE2Eテストを始める - Qiita

        6 users

        qiita.com/YusukeIwaki

        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

        • テクノロジー
        • 2021/02/18 00:02
        • テスト
        • 2020年: PuppeteerとPlaywrightの激動の1年。 - Qiita

          57 users

          qiita.com/YusukeIwaki

          2020年は、突如Playwrightが現れ、Seleniumを置き換えるほどの勢いでいろいろなツールが現れました。 Puppeteerは、Playwrightが出てからもTypeScript化をしたりカスタムクエリハンドラ機能が実装されたりと、Chrome DevToolsプロトコルを利用するライブラリとして改善が続いています。 今年1年の Puppeteerのリリースページ https://github.com/puppeteer/puppeteer/releases Playwrightのリリースページ https://github.com/microsoft/playwright/releases を時系列にまとめてみます。 2020年1月。 PuppeteerとPlaywrightの15日間の演劇 https://speakerdeck.com/taminif/relation-

          • テクノロジー
          • 2020/12/23 00:55
          • Puppeteer
          • Playwright
          • あとで読む
          • test
          • javascript
          • node.js
          • 2020年12月現在、puppeteerとplaywright どっち選んだらいいの? - Qiita

            9 users

            qiita.com/YusukeIwaki

            今年の1月に突如 microsoft/playwright が出て、「なに?puppeteerはオワコン?」と一瞬思いましたが、playwrightが出てからもpuppeteerはTypeScript化したりしていますし、いまのところどちらも活発に開発されています。 「puppeteerとplaywrightはどっち使えばいいの?」に対して、2020年12月現在の答えはおそらく「使いたいほうを使えばいい」です。 ただ、「使いたいほう」ってなんやねん?というところがググってもあまり情報が出てこないこともあり、今回の記事では、この選ぶ手がかりになる情報を少し投じておこうかなと思います。 PythonやC#でも使いたい? puppeteerは現在のところJavaScriptのライブラリ一本です。 playwright はPythonとC#のバインディングがあります。 microsoft/play

            • テクノロジー
            • 2020/12/05 07:43
            • browser
            • Firefox
            • microsoft
            • Microsoft Teamsでチャネルのメッセージの取得、ユーザメッセージの送信 - Qiita

              4 users

              qiita.com/YusukeIwaki

              Microsoft Teamsは、Slackに比べると、APIドキュメントのレベルが非常に低く、意味不明。 ユーザとしてメッセージを送りたいと思ったときに https://docs.microsoft.com/ja-jp/graph/api/channel-post-messages?view=graph-rest-beta&tabs=http こいつにぶち当たると思うんだけど、書いてないことが山ほどあったのでメモ。 認証トークンはどこからもらってこればいいのか? OAuthアプリケーション登録して、アクセストークンもらってくる必要があるらしい。 パーソナルアクセストークンとかそういうイケてる仕組みは無い。 OAuthアプリケーション登録 https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsLis

              • テクノロジー
              • 2020/11/08 09:26
              • teams
              • webapi
              • api
              • qiita
              • microsoft
              • puppeteer-coreとMacにインストール済みのChromeを使って自動操作 - Qiita

                3 users

                qiita.com/YusukeIwaki

                Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                • テクノロジー
                • 2020/10/01 09:17
                • chrome
                • socketry/asyncめも - Qiita

                  3 users

                  qiita.com/YusukeIwaki

                  puppeteer-rubyっていうライブラリを作っているときに、WebSocketのコールバック順序がぐちゃぐちゃになる事象に嫌気がさして、WebSocketの代替実装を探していたところ、 (ぜんぜんWebSocketではないがw)asyncという面白そうなライブラリを見つけたのでメモ。 複数のタスクを待ち合わせる require 'async' def do_task(name) Async do |task| puts "start task - #{name}" task.sleep(name.to_i) puts "end task - #{name}" name end end def all_task(*args) Async do |task| puts "start tasks - #{args}" values = args.map do |arg| do_task(a

                  • テクノロジー
                  • 2020/06/14 17:17
                  • FlutterでGoogle Mapを使ってできること、できないこと(2019年版) - Qiita

                    6 users

                    qiita.com/YusukeIwaki

                    まえおき 2019年10月、alwaysDRINK が突如として福岡にサービスインされたのですが、 当時のサービスは毎日使うにはしんどいUIだったので、自分が毎日使ってもしんどくない程度のAndroidアプリを勝手に作りました。 これは適当にAndroidのネイティブで実装していて、 ViewModelで保持している「選択されたお店」を変更時に地図の中心をanimateCameraで動かす(データバインディング) 縮尺によって、マーカーをまとめる(android-maps-utils の Marker Clustering) https://qiita.com/YusukeIwaki/items/d4979fc698d7f0998e30 のように、シンプルな技術要素で成り立っていました。 「この程度なら Flutterでサクッと書けるんじゃね?」と思ってやってみたら見事に撃沈したというお話

                    • テクノロジー
                    • 2019/12/03 10:05
                    • あとで読む
                    • もうWebViewに飽きた?そんなときはGeckoViewを使ってみよう。 - Qiita

                      3 users

                      qiita.com/YusukeIwaki

                      まえおき WebView使うと、ブラウザっぽいアプリはすぐに作れる! とおもいきや、実際つくってみると結構ボイラープレートコードが多いんですよね。 ( http://arianrod-berry.hatenadiary.com/entry/2018/01/29/233841 あたりにいい感じにまとめられています) なんかいい感じのWebView-alternativeはないかなーと探していたところ、GeckoViewというものを見つけました。Firefox Focusなどで使われているGeckoベースのWebViewてきなものみたいです。 Qiitaで現時点では「使ってみた」レベルの記事もなかったので、とりあえず使ってみた感じを書いておきます。 セットアップ: build.gradleへの追記 implementationを1行ペロッと書くだけ・・・ではありません。 オフィシャルのWiki

                      • テクノロジー
                      • 2018/11/13 12:31
                      • Android
                      • Android 9.0のdisplay cutoutは端末ベンダーにどういう選択肢を与えているか

                        3 users

                        qiita.com/YusukeIwaki

                        まえおき iPhone Xに始まった↑のような欠陥デザインは、Android 9.0でも正式に対応されたようです。みんな「ノッチ」とか言っていますが、Androidでは display cutout と呼ぶようです。 display cutoutは全画面表示するようなアプリの動作にも影響が出るため、開発者向けリファレンスにも、 https://developer.android.com/guide/topics/display-cutout/ こんな感じのドキュメントが公式に公開されています。 display cutoutにはいろんな種類がある Android 9.0エミュレータで開発者オプションを見てみると corner double tall の3種類を選ぶことができるようになっています。 これってようするに、端末ベンダーが割と自由にdisplay cutoutできるようになってたりす

                        • テクノロジー
                        • 2018/10/16 17:37
                        • 2-wayデータバインディングが格段に実装しやすくなったAndroid data-binding 3.1.0 - Qiita

                          6 users

                          qiita.com/YusukeIwaki

                          <?xml version="1.0" encoding="utf-8"?> <layout> <data> <variable name="viewModel" type="io.github.yusukeiwaki.twowaydatabindingpractice.SignupActivityiewModel"/> </data> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <android.support.design.widge

                          • テクノロジー
                          • 2018/03/28 11:46
                          • Android Architecture ComponentsのViewModelとLiveDataを使えば画面回転も怖くない - Qiita

                            5 users

                            qiita.com/YusukeIwaki

                            ViewModelとかLiveDataのサンプルってAPI通信とかのわりと複合的なのが多いけど、もっと単純に使っていけるんではないか、という話。 ほぼ自分用のメモ。 ViewModel ViewModelは、内部的にはRetained Fragmentをうまく利用して、Activityが"本当にDestroy"されるまで居残り続けられる土台みたいなもの。 これ、データバインディングを使うとだいぶありがたみがある。 たとえば、画像処理をやるアプリだと... これ、何も考えずにActivityとsavedInstanceStateでやろうとすると結構めんどくさい。 class ImageProcessingActivity .... { private int seekBarPosition; public void onCreate(Bundle savedInstanceState) {

                            • テクノロジー
                            • 2018/03/06 10:15
                            • Android
                            • Android 8.0調査メモ:もう裏でこっそりサービスを動かせない件(前編) - Qiita

                              8 users

                              qiita.com/YusukeIwaki

                              これは何? https://developer.android.com/about/versions/oreo/background.html?hl=ja#services Android 8.0では、バックグラウンド動作制限の一環として、 **裏でこっそりサービス起動しようとしてもできなくなります!**だって。 まじかよ!!!!! でも、 リファレンスに書いてあるとおりの実装になっているとは限らないのがAndroidのいいところだ(違w いちおうソースはちゃんと読んでおこう、ということで調査した自分用メモです。 (長くなったので、前編・後編に分けましたw (が、後半は適当です 実際にアプリを動かすとどんな感じになっているか? JobScheduler(とか、それをラップしているGcmNetworkManager)から起動されるジョブサービスはちゃんと裏でも動ける でもそこからstartS

                              • テクノロジー
                              • 2017/12/07 08:48
                              • Android
                              • programming
                              • コンポーネント指向でAndroidアプリを作ろう - Qiita

                                4 users

                                qiita.com/YusukeIwaki

                                この記事は CrowdWorks Advent Calendar 2017 の2日目の記事です。 CrowdWorksで公式Androidアプリの開発をやっている @YusukeIwaki がお送りします。 まえおき いまさらですが、Androidアプリって開発するの難しいですよね。何も考えずに機能を追加していくと、すぐにFatなActivity/Fragmentができてしまいます。 「じゃあFat Activity/Fragmentを回避するために、MVPアーキテクチャーを導入しよう!」ってなると今度は、ボイラープレートコードが増えます。 「こんな無駄なコードを書きたくない!!」という衝動が強くなり、カッとなってオレサマコードジェネレータが作られたり、オレサマアーキテクチャが生まれたりします。 「うーん、本質的に解決になってるのかこれ?」とある日考えます。 ・・・と、(やや極端ですが)ア

                                • テクノロジー
                                • 2017/12/02 22:29
                                • Android 7.0からDownloadProviderがJobSchedulerを使うようにしれっと変わっていた話 - Qiita

                                  4 users

                                  qiita.com/YusukeIwaki

                                  多くは語らないけど、DownloadProviderのアーキテクチャは単純明快で、いろいろ参考になることが多い。 そんなDownloadProviderが、Android 7.0 Nougatからしれっと実装が変わっていたので、かるくソースコード解読をしたメモです。 ※ちなみにこの記事は、DownloadProviderのもともとの作りを知ってる前提で書いてます。しらないかたはまずはAndroid 6.0までのソースを読んで下さい。 対象のコミット 消えたDownloadService DBに書かれたイベント契機で裏でいろいろゴニョゴニョ動いていたDownloadServiceがなくなりました。 代わりに、JobScheduler発動時に動くDownloadJobServiceというのが追加されています。 「ネットワーク状態が変わったら・・・」とか、「リトライ回数が・・・」みたいなロジック

                                  • テクノロジー
                                  • 2017/08/17 14:15
                                  • Android
                                  • いまこそAndroidのDownloadProviderのソースを読もう - Qiita

                                    4 users

                                    qiita.com/YusukeIwaki

                                    この記事はCrowdWorksアドベントカレンダーの5日目の記事です。 #CrowdWorksのエンジニアが毎日なにかを書いています。 まえおき クラウドワークスでAndroidアプリやAPIの開発をやっています @YusukeIwaki です。 前職でAndroid OSのカスタマイズをいろいろやっていたので、いまだにAndroidのソースを眺めて「この設計いいな」と思っては、それをマネしてアプリをつくるスタイルでやっています。 今回は、Androidのファイルのダウンロード機能の根幹を担う、DownloadProviderのイケてる設計のことを書きます。 DownloadProvider自体は、5年以上前からあるし今更感はあるとはおもうのですが、クラウドワークスの公式Androidアプリは、DownloadProviderの設計を大いに参考にしているので、CrowdWorksアドベント

                                    • テクノロジー
                                    • 2016/12/05 08:42
                                    • Android
                                    • Android 7.0でChromeがWebViewを提供するようになった仕組み - Qiita

                                      20 users

                                      qiita.com/YusukeIwaki

                                      Android 7.0からはChromeがWebViewを提供する みたいのはあちこちでバズってる割に、中身の仕組みをちゃんと書いた記事は殆ど見ません。 個人的にはとても残念に思います。 ということで、中を見てみました。 まずは、Lollipopまでのおさらい WebViewのAPIを提供するのが、WebViewFactoryProviderで、 WebViewFactory::getProvider のなかで ネイティブ側の準備:libwebviewchromium.soの探索とロード パッケージ名はgetWebViewPackageName()で取得 Java API側の準備:WebviewProviderの生成と初期化 WebViewChromiumFactoryProviderが内部でWebViewDelegateを実装する みたいな流れの処理があります。 ソースレベルで見たければ

                                      • テクノロジー
                                      • 2016/10/07 13:03
                                      • chrome
                                      • android
                                      • qiita
                                      • mobile
                                      • 複数端末を所持している人を考慮してプッシュ通知を送る - Qiita

                                        7 users

                                        qiita.com/YusukeIwaki

                                        Gmailとかハングアウトとかって、複数端末で通知を受けても、1つの端末で消せばちゃんと全部の端末で通知消えるんですよね。 これがやりたい。 あれ、どうやるの? という話です。 ざっくり プッシュを受け取った端末が「受け取ったよ!」って空プッシュを送って send-to-sync する、みたいなことをやらないといけないようです。 以下のリファレンスを見ると、Device Group Messagingというのをつかうだけで、GCMがいい感じにやってくれるようにも見えますが、実際に動かしてみると、プッシュ消去は同期されませんでした・・・・・・。 http://www.androiddocs.com/google/gcm/notifications.html https://firebase.google.com/docs/cloud-messaging/android/device-grou

                                        • テクノロジー
                                        • 2016/08/25 21:04
                                        • Android
                                        • 技術
                                        • Railsのコードを書けないAndroidアプリ開発者がFirebaseを使ってチャットアプリを作る - Qiita

                                          3 users

                                          qiita.com/YusukeIwaki

                                          昨晩のGoogle IO 2016で、Firebaseの大幅機能拡充が発表されました。 Railsのコードを書けないAndroidアプリ開発者がnifty cloud mobile backendを使ってチャットアプリを作る っていうのをやったときに、ニフティクラウド モバイルバックエンド最大の欠点であった、「リアルタイムDBが使えない!」っていうのがFirebaseではいけてるように見えたので、実際にどうなのかさわってみることにしました。 アプリケーションの作成 なんかイイ感じのページから「GET STARTED FOR FREE」で アプリケーションを新規作成。 アプリとFirebaseのひも付け Googleログインを利用してラクしたいので、SHA-1ハッシュを登録します。 まずは、Android StudioでKeyStoreをつくります。 $ keytool -exportcer

                                          • テクノロジー
                                          • 2016/08/01 18:52
                                          • Android 6.0のSystemUI Tuner(の謎機能)をいじってみる - Qiita

                                            8 users

                                            qiita.com/YusukeIwaki

                                            Android 6.0から、新たな隠し機能?としてSystem UI Tunerというものが現れました。 れいによって そのうち無くなるかもね、でも文句いわないでね、てきなことが書いてある Gitコミットの詳細を見てもわからない ソースのコメントもない = **ソースをガリガリ読むしか無い!**w という非常にてきとーなコンポーネントです。 ぐぐってもなかなか情報がでてこない、 けど、なんとなく使えそうな雰囲気を感じるものがある、のでちょっと触ってみました。 2015/10/30現在、Broadcast TileとDemo modeの説明が、なかなかぐぐっても出てこないので、この記事ではその2つの機能をいじって情報共有してみます。 IntentTile (Broadcast Tile) あまりにも利用方法が書かれていないので、「未実装だ」とか「機能を持たないものだ」とか言っている記事が世の

                                            • テクノロジー
                                            • 2015/10/30 09:25
                                            • android
                                            • 開発
                                            • Android 6.0でChromium WebViewがソースビルドされなくなったので、自前でChromiumをビルドをする - Qiita

                                              6 users

                                              qiita.com/YusukeIwaki

                                              Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                              • テクノロジー
                                              • 2015/10/22 13:13
                                              • Android
                                              • SQLiteOpenHelper を使うときには、getReadableDatabase/getWritableDatabaseを直接使わない! - Qiita

                                                4 users

                                                qiita.com/YusukeIwaki

                                                public class User { private static final String TABLE_NAME = "user"; public int _id; public String name; public int age; private User(){ _id = -1; } private static User createUsingCursor(Cursor c, int offset) { /* open済みのCursorからインスタンスを生成するためのstaticメソッド。Cursorのcloseの責務は持たない */ User u = new User(); u._id = c.getInt(offset); u.name = c.getString(offset+1); u.aget = c.getInt(offset+2); return u; } pu

                                                • テクノロジー
                                                • 2015/08/21 12:04
                                                • android

                                                このページはまだ
                                                ブックマークされていません

                                                このページを最初にブックマークしてみませんか?

                                                『qiita.com』の新着エントリーを見る

                                                キーボードショートカット一覧

                                                j次のブックマーク

                                                k前のブックマーク

                                                lあとで読む

                                                eコメント一覧を開く

                                                oページを開く

                                                はてなブックマーク

                                                • 総合
                                                • 一般
                                                • 世の中
                                                • 政治と経済
                                                • 暮らし
                                                • 学び
                                                • テクノロジー
                                                • エンタメ
                                                • アニメとゲーム
                                                • おもしろ
                                                • アプリ・拡張機能
                                                • 開発ブログ
                                                • ヘルプ
                                                • お問い合わせ
                                                • ガイドライン
                                                • 利用規約
                                                • プライバシーポリシー
                                                • 利用者情報の外部送信について
                                                • ガイドライン
                                                • 利用規約
                                                • プライバシーポリシー
                                                • 利用者情報の外部送信について

                                                公式Twitter

                                                • 公式アカウント
                                                • ホットエントリー

                                                はてなのサービス

                                                • はてなブログ
                                                • はてなブログPro
                                                • 人力検索はてな
                                                • はてなブログ タグ
                                                • はてなニュース
                                                • ソレドコ
                                                • App Storeからダウンロード
                                                • Google Playで手に入れよう
                                                Copyright © 2005-2025 Hatena. All Rights Reserved.
                                                設定を変更しましたx