ABC165 C問題(2020.5.2)

概要 本記事は、AtCoderのABC165に参加した際に回答することができなかったの問題を解説を読んで理解した内容を記載します。C問題で回答できなかったのは久しぶりだったので、しっかりと復習したいと思います。 問題 C – Many Requirementshttps://atcoder.jp/contests/abc165/tasks/abc165_c 解説 pdf https://img.atcoder.jp/abc165/editorial.pdf 動画(Youtube) 理解 まず計算量を考える部分ですが、数の組み合わせですが等しい数も選択することができるので、玉を並べてそれらに仕切りを置くようなイメージで算出します。具体的にはN個の仕切りとM-1個の玉からN個を選択するときの組み合わせが総数となります。なので、N+M-1 Choose N となり、今回の最大数は19 Choose 9なので92378通りで全探索でも問題ない処理量と考えられます。次に全探索のdfs関数についてですが、全探索を考えるときのポイントは以下の2つです。 一回のステップでどんな処理をすることで次につなげられるか 終了条件をどうするか

Continue reading

SalesforceにおけるOAuth2.0/OpenID Connect

概要 本記事では、業界標準であるOAuth2.0とOpenID Connectの概要を紹介した後に、Salesforceではそれらをどのように実装することができるのかを簡単に記載していきたいと思います。 本記事のベースとなるOAuth2.0やOpenID Connectの技術的な事項はこちらの本で学習しました。クライアント、認可サーバー、保護対象リソースのそれぞれについてサンプルのソースコードでどのように動作するかが詳細に記載されており理解するのに非常に役に立ちました。おすすめです。 認証・認可とは それぞれ詳細を説明すると非常に長くなるのですが、あえて一言で言うと下記で表せます。 認証 通信の相手が誰(何)であるかを確認すること 認可 とある特定の条件に対して、リソースアクセスの権限を与えること Salesforceにおける認証・認可とは Salesforceで実現可能な認証・認可の仕組みは下記が上げられます。 # 名称 概要 機能名 1 フォーム認証 Webブラウザでユーザ名とパスワードを入力する最も基本的な認証方式

Continue reading

ABC163 D問題(2020.04.19)

概要 コンテストの日から少し時間が空いてしまいましたが、2週間前?くらいに参加したABC163(2020/4/19)で相変わらずD問題がクリアすることができなかったので、復習のために解説を確認しながら、概念を理解してACするプログラムを実装しました。 問題 https://atcoder.jp/contests/abc163/tasks/abc163_d 解説 PDF https://img.atcoder.jp/abc163/editorial.pdf 動画(Youtube) 理解 まずM個の数である10^100の部分は非常に大きい数であるため、選択する数が変わると合計の値は他の数の組み合わせとは重複しないので、各選択した数の組み合わせによる合計値を求めれば算出可能となります。本問題でキーとなる部分は、M個からK個選ぶ場合の最大値は大きい方からK個選ぶ場合であり、最小値は小さい方からK個選ぶ場合となり、これらの最大値と最小値の間の値は全てを組み合わせで生成できるという点となります。したがって、作成できる数の総和は最大値-最小値で算出できます。次に、2つの連続するrからlまでの数の合計は、(l+r)*(r-l+1)/2で求めることができます。というポイントを抑えて実装すると下記のようになりました。 実装

Continue reading

Pythonista3でGithubにPushする方法

Pythonista3とは Pythonista3とは、iPadやiPhoneでPythonのプログラムを書いたり、実行したりすることができるiOSのアプリです。https://apps.apple.com/jp/app/pythonista-3/id1085978097 概要 本記事では、Pythonista3で書いたプログラムをアプリから直接Githubの自分のリポジトリにPushする方法を記載します。iOSのアプリケーションでは基本的にShellスクリプトを実行することができないのですが、Pythonistaのユーザが作成したstashというスクリプトを実行することでShellが擬似的に使用できるにしてGithubへのアクセスをCUIベースで行います。 手順 stashのインストール Pythonistaのアプリケーションで左にスワイプするとコマンドが表示されるので、そこで下記のコマンドを実行してstashをインストールします。 Pythonistaを再起動 インストールが完了したら、Pythonistaを一度タスクリストから削除して、再度アプリの立ち上げを行うことで再起動します。 stashをPythonのバージョン2.7で起動 アプリ内のフォルダ直下(This iPad,This iPhone)にlaunc_stash.pyというプログラムが作成されているので、そのファイルを開いて右上のRun(再生ボタンみたいなやつ)を長押しすると「Run with Python 2.7」が表示されるのでそちらを押下します。すると、unix風のコンソールに切り替わると思うのでそこでコマンドを実行可能となります。ちなみに、Pythonバージョン2.7で起動している理由は、この後で実行するGitコマンドがバージョン3.6で起動すると動作しなかったからとなります。 公開鍵を作成 Githubとの接続に必要となる公開鍵をstash上で作成します。rsaはデフォルトでは1024bitとなりますが、セキュリティを考えて2048bitを指定しています。 作成した公開鍵をGithubへ登録します。GithubのSetting->SSH keysから下記のコマンドで表示される文字列(ssh-rsa

Continue reading

ABC162 D問題(2020.4.12)

まえおき 最初に記事の本題に入る前に前置きを書きたいと思います。去年くらいから新しくプログラミング言語を勉強していても実務で使用する機会がない言語でアウトプットする場がないと身につかないなと思い始めました。そこで色々考えていたのですが、ある時TwitterのTLでAtCoder(https://atcoder.jp/)という日本発の競技プログラミングが流行りはじめているのをみて興味を持ったのがきっかけでした。試しに参加してみたら割と簡単に参加できて、大体週一回開催というペースがあっているなと感じ少しづつ始めるようになりました。言語は最近勉強し始めていたPythonを使って参加しておりますが、数回参加して感じたのはプログラミング言語の問題や課題ではなく自分のアルゴリズム能力の無さでした。この課題は将来のためにも改善した方が良いと思い、より本腰を入れて毎週末の夜にABCのコンテストに参加するようになりました。ところが、参加するだけではなかなか能力の向上はないので、問題に臨んだけど解くことができなかった問題は回答や他の方の実装を参照して、自分なりの実装を作成するというのを始めることにしました。そして、その内容はなるべくブログで簡単にでもアウトプットしようと思っています。それの初回が本記事となります。また、時間があれば、アルゴリズムについてチーター本、蟻本、螺旋本あたりを読んでブログで整理できればと考えています。ということで、前置きが長くなりましたが、早速先週末(4/12)の夜に開催されたABC162のD問題が解けなかったので、その回答と自分なりの実装を本記事では記載します。 問題 ABC162 D問題 RGB Triplets https://atcoder.jp/contests/abc162/tasks/abc162_d 解説 https://img.atcoder.jp/abc162/editorial.pdf 理解 何も考えないで実装すると、i, j, kについて全探索で処理を行ってしまい計算量はO(N^3)となり、nは最大で4000なのでTLEしてしまいそうです。なので、方針として最初に”R”,”G”,”B”の3つが異なる組み合わせとなる総数を算出してから2つの条件にマッチしないものを引いていくことにします。その理由は、マッチしないパターンであれば問題文の2個目の条件でi, j, kの関係でi, jを固定するとkが算出できるので、その分を総数から引いてあげることができます。その場合の計算量はO(N^2)とすることができそうです。 実装例 自分が作成した実装は下記の通りとなります。

Continue reading

VSCode Onlineを試してみた

概要 少し前ですがMS社のVisual Studio Onlineのパブリックプレビューで利用可能となったので、実際に触ってみました。個人的に注目していた理由はiPadからコーディングするのにブラウザ経由でVSCodeで使えるのであれば少しくらいなら課金してもいいかなと思って試しました。本記事では検証のために触った際のメモを記載します。※ちなみにブログ投稿と実際の作業試した日に時差があるので画面等が古かったらごめんなさい。 手順 サインアップ 下記のページからサインアップできます。サインアップするには、MSアカウントとAzureのサブスクリプションプラン(課金設定)が必要となります。 https://visualstudio.microsoft.com/ja/services/visual-studio-online/ Visual Studio Onlineの管理画面(?)に遷移するので、Create a Billing Planを実行します。https://online.visualstudio.com/environmentsLocationは、いくつか選択することができましたがSourtheast Asiaを選択しました。 作成したLocationでCreate environmentで環境を作成します。Gitのリポジトリを指定すると環境作成時に自動でCloneされるようです。また、Instance Typeでは、StandardかPlemiumのどちらかが選択できます。Suspendするまでのidle時間もここで選択して環境を作成します。 接続 環境が作成できました。

Continue reading

[Salesforceデザイナー資格]Data Architecture and Management デザイナー

概要 本記事は、Salesforceのデザイナー資格であるData Architecture and Managementを受験するにあたって勉強した際の簡単なメモとなります。私が受験した時のバージョンはWinter’20でしたので、その時点での試験範囲に基づいております。 試験範囲 試験範囲については、リリースごとに変わる可能性があるので最新情報を確認する必要があります。詳細は下記から参照してください。http://tandc.salesforce.com/examguide_cert_data_archi_manage_designer.pdf 勉強内容 基本的な勉強方法は、上記の試験範囲に沿って必要な情報が公開されているヘルプサイトやブログ、Trailheadを参考にインプットをしました。 Data Modeling (20%) BigObject https://developer.salesforce.com/docs/atlas.en-us.bigobjects.meta/bigobjects/big_object.htm https://developer.salesforce.com/docs/atlas.en-us.bigobjects.meta/bigobjects/big_object_example_queueable.htm Roll up summary https://help.salesforce.com/articleView?id=fields_about_roll_up_summary_fields.htm&type=5 https://help.salesforce.com/articleView?id=fields_defining_summary_fields.htm&type=5

Continue reading

VS CodeのOrg Browserという機能

概要 Salesforceのソースコードベースの開発を行う際には、VSCodeとその拡張機能(Extension)を使用しますが、その中にOrg Browserという便利な機能が追加されていたので紹介したいと思います。Org Browserを使用すると、manifest file(package.xml)を作成せずにSandbox等の組織からローカルにソールコードを取得することができます。 VSCodeの基本設定やSalesforceのExtensionについてはこちらに記載していますので、本記事では割愛します。 使用方法 SFDXプロジェクトを作成する VSCodeのコマンドパレットでSFDX: Create Project with Manifestを実行してSFDXプロジェクトを作成します。 接続対象の組織を認証する VSCodeのコマンドパレットでSFDX: Authorize an Orgを実行して対象組織の認証により接続を行います。認証するとVSCodeの一番左のアイコンにSalesforceマークが表示されます。こちらが、Org Browserの機能となります。 対象のメタデータを選択

Continue reading

本番組織へのソース形式でのデプロイ

概要 本記事はSalesforceにおけるリリースにおいて、CLIを使用する場合にソース形式(メタデータ形式ではなく)で直接、本番組織へデプロイする方法を記載します。これまで(Spring’19以前)もSandboxへはソース形式でもデプロイすることができましたが、本番組織には一度メタデータ形式に変換したのちにデプロイする必要がありました。Summer’19からは、一度クイックリリースでテストを実行したのちに、そこで発行されるジョブIDを元にデプロイをすることができるようになったようです。 リリース方法(コマンド) まずは、クイックリリースでテストを実行してコードカバー率が要件を満たしていることを確認します。 上記のコマンドでSuccessとなった後に、実行した際に発行されているジョブIDを用いてデプロイを行います。 以上でリリース完了となります。 まとめ いちいちメタデータ形式への変換が不要となったので、個人的にはこちらの方が便利かなと思っています。 参考 本番組織へのアプリケーションのリリースhttps://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_build_mdapi_production.htm 任意の組織に対する開発https://developer.salesforce.com/docs/atlas.ja-jp.220.0.sfdx_dev.meta/sfdx_dev/sfdx_dev_develop_any_org.htm source Commandshttps://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_deploy

Continue reading

リストビューで選択したレコードを引数にFlowを実行

概要 本記事では、Salesforceのオブジェクトのレコードを一覧表示する標準機能のリストビューにて選択したレコードを引数にしてFlowを実行する方法を記載します。リストビューで選択したレコードに対してアクションではできないような少し複雑なロジックをFlowで実装したい場合に利用できるかと思います。 実装方法 Flowを呼び出すVisualforceを作成 事前に呼び出したいFlowは事前に作成しておきます。起点となるリストビューのオブジェクトに対応する標準リストコントーラを定義したVisualforceページを作成します。当該VFページから<flow:interview>タグでフローを呼び出します。finishLocationでは、Flowで完了ボタン押下後の戻り先のURLを指定します。Accoutオブジェクトのサンプルは、以下となります。 カスタムリストボタンを作成 対象のオブジェクトの設定画面で新規ボタンから表示の種類として「リストボタン」-「チェックボックスの表示」を選択します。内容のソースで上記で作成したVisualforceページを選択します。 まとめ 一覧画面で選択したレコードに対してなんらかの処理をしたいという場合のソリューションとして、極力開発する箇所を少なくするための手法として利用できるかと思います。 参考 Visualforce ページへの標準リストコントローラの関連付けhttps://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_controller_sosc_associate.htm Visualforce ページへのフローの埋め込みhttps://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_flows_adding.htm フローの finishLocation 属性の設定https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_flows_finishlocation.htm 標準リストコントローラを使用したカスタムリストボタンの追加https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_controller_sosc_custom_button.htm

Continue reading