Labyrinth of Wisdom

-This is My Archive-


レコードへのアクセス制限について(随時更新)

Salesforceのレコードへのアクセス制限がややこしかったので、使った範囲でメモしていきます。

新しいことが分かったら随時更新していくと思います。

プロファイル

ユーザーの管理 > プロファイル

各オブジェクトへのアクセスを制限することができます。(下記参照)

  • 参照
  • 作成
  • 編集
  • 削除
  • すべて表示
  • すべて変更

f:id:Labyrinth_of_Wisdom:20160815104028p:plain

組織の共有設定

設定 > セキュリティのコントロール > 共有設定

レコードの所有者以外のユーザーのレコードへのアクセス権限を設定できます。(下記参照)

  • 非公開
  • 公開/参照
  • 公開/参照・更新可能
  • 公開/参照・更新可能/所有権の移行

f:id:Labyrinth_of_Wisdom:20160815104047p:plain

「非公開」にすればレコードの所有者以外のユーザーはレコードを参照することができません。 所有者はフルアクセス権を擁します。

ただし、ロールの設定によって所有者以外もレコードにアクセスすることが可能になります。

ロール

ユーザーの管理 > ロール

共有設定でレコードへのアクセス権限を設定したが、ロールを設定することでアクセス権限を拡張することができます。

ロールには階層というものがあり、上位の階層に位置するロールのユーザーは、下位のロールのユーザーが所有者のレコードにもアクセスすることができます。

例えば下記の様なロール階層があったとします。

部長
  └課長
    └平社員

そして、リードオブジェクトのあるレコードの所有者Aさんのロールが「平社員」で、組織の共有設定ではリードオブジェクトのアクセス権限は「非公開」だとします。

この場合、通常はレコードの所有者であるAさんしかそのレコードにはアクセスできませんが、ロールが「課長」のBさん、「部長」のCさんは、「平社員」よりも上位の階層のロールを割り当てられているので、そのレコードにアクセスすることができます。

参考

【J-HIPHOP】Amp-refive - Coming Out

大阪発のHIPHOP CREW Amp-refiveが2010年にリリースした1stアルバム

メンバーはMC兼TrackMakerのCosaqu,MCのpLRayer,SEAMAN、DJ兼TrackMakerのFUKUMURA,DMCでも実績を残しているDJの比我の5人。

キャラ立ちした3MCのスキルフルなラップが映える。

トラックやサビはいい意味でポップなものが多く、音楽センスの高さを感じます。

あとボーカルの入れ方がうまいというか、重ねやコーラスの入れ方がライブ感あって気持ち良いです。

アルバムのメガミックス1曲目の'The Session'が凄いかっこよくて、買うのを即決めしたのを覚えています。 ジャケットも回路図みたいで面白いですね。

今はグループでは全然活動していない感じで残念なんですが、次のアルバムをとても楽しみにしているので活動再開を心待ちにしております。

全国流通はしておらず、現在購入できる所が無さげなので欲しい人は本人達に直接問い合わせてもらった方が確実かと。

Windows 7からWindows 10 アップグレード時のトラブル

以前職場のPCをアップグレードした際にトラブルに見舞われ、下記の様な記事を書きました。

今回は自宅のWindows 7(自作PC)をアップグレードした際、そしてアップグレード後のトラブルに見舞われたので、その際の解決方法を書きたいと思います。

何かの参考になれば幸いです。

アップグレード時のトラブル

まず通常通りWindows 7のデスクトップ画面にWindows 10にアップグレードする通知が来ていますので、「今すぐアップグレード」をクリックしてアップグレード開始。

f:id:Labyrinth_of_Wisdom:20160728101310p:plain

アップグレードが始まってしばらくすると下記の様な画面になると思います。

f:id:Labyrinth_of_Wisdom:20160728101450p:plain

時間が経つにつれてどんどんパーセンテージが上がっていきます。 順調、順調とか思っていたら値が76%のところでストップしてしまい、先に進めなくなりました。

1~2時間待ってみたんですが一向に進まないので、やむなく電源ボタンを長押しして強制終了。

これを三回ほど繰り返しましたが、一向に進まないので原因を突き止めるべく調査を開始しました。 下記のリンクに色々な解決パターンが書いてあり、参考にさせて頂きました。

参考

Windows10へのアップグレードに失敗しないための注意事項やチェックポイント

結論から言うと、僕の場合は「レガシーUSBのサポートを無効」にすることで解決することが出来ました。

BIOS画面にて無効にすることが出来ます。

無効にした後はすんなりアップグレードしてくれました。

「なんだ、Windows 10思ったより楽勝じゃん!」とかこの時は思っていましたが、地獄はその先に待っていました。

アップグレード後はフリーズの嵐!

アップグレード後はデバイスマネージャーから、各種ドライバーを手動でアップデート。

121ware.com > サービス&サポート > Q&A > Q&A番号 017784

「これで完了!」とか思って、新しく生まれ変わったMy PCを触っていると、急にソフトが動かなくなりフリーズ...。 仕方ないので強制終了→再起動。

しかしまたフリーズフリーズフリーズのオンパレード。 何が原因か探るためにタスクマネージャーで監視してみました。

デスクトップ画面で何もせずに10~15分経つと急にディスク使用率が10、20、30...とぐんぐん上昇しついに100%になってしまいました。

なにこれ、怖い。

サービス・OneDriveの停止

PCで調べててもフリーズしちゃうので、スマホで「Windows10 ディスク使用率 100%」で検索。

すると出てくる出てくる。

要はWindows 10で起動しているサービスやアプリが悪さしてるんだろうということで、下記記事を参考に色んなサービスを停止してみました。××と×は全て、△もできる限り停止しました。

OneDriveも停止。

これでいけるか?と思ったがディスク使用率は無慈悲にもぐんぐん上昇。Oh...。

他のフリーズ対策をするも...

仕方ないので「Windows10 フリーズ」で検索。 下記記事を参考に色々実行してみました。

しかし状況変わらず。ヤバイバイバイ

最後の希望!?SSDのLPM問題!

何か解決策はないものかと絶望しながらネットを彷徨っていたところ、下記の記事を発見しました。

Windows10+(Crucial) SSDだと・・。

実はWindows 10にするちょっと前にCドライブのSSDPlextor製の物からCrucial製の物に変更していました。 この記事によると僕の使用しているSSDもこのLPMの問題に当てはまる型の様です。

これを試してみるっきゃねえ!ということで記事を参考にLPMを無効化すると・・・

フリーズしなくなりました!

やっと!ついに!きました!

しかし、まさか直前に変えたパーツにそんな落とし穴があるとは。。

自作PCの怖い所ですが、今後同じことが起こってもこれで対応できるので良かったと思うことにします。

AKAI MPC Softwareのデータ構成について

はじめに

HIPHOPでトラックメイキングするならAKAIのMPC!」とはよく言いますが、MPCって結構難しくて、正直よく分からないって人いませんか? 自分がそうだったのもあって少しづつ解説していこうと思い、記事を書くことにしました。

僕はMPC Softwareを使用しているので基本的にそのソフトの説明になりますが、ハードのMPCや他のサンプラーに関しても考え方の大枠は当てはまるかと思いますので、サンプラー初心者の方もよければ見てみてください。

MPCデータ構成

MPCは音楽を作る機材なので最終的には一つの楽曲になるわけですが、そこに至るまでに様々な形式のデータを作ります。

まずMPCで曲を作る時のデータ構成を図でざっくり表現してみました。

Song (曲)
  ├ Sequence (フレーズ)
  │     ├ Program (シンセサイザー)
  │     │     ├ サンプリングソース (音ネタ)
  │     │     └ サンプリングソース (音ネタ)
  │     └ Program (シンセサイザー)
  │           └ サンプリングソース (音ネタ)
  └ Sequence (フレーズ)
        └ Program (シンセサイザー)
              └ サンプリングソース (音ネタ)

楽曲は全部で4種類のデータ形式でできています。

Songは1個以上のSequenceで構成されており、Sequenceは1個以上のProgramで構成されており、Programは1個以上のサンプリングソースから構成されています。

一つ一つ説明していきましょう。

・サンプリングソース (音ネタ)

レコードやCDの一部分を録音して、曲の材料にするものです。いわゆる音ネタ。 一番ベタなのは「曲のイントロでギターが鳴ってる箇所」みたいな感じですが、極端な話音なら何でもOKです。

これをパッドにアサイン(割り振る)することでパッドを叩くと音が鳴るようになります。

・Program (シンセサイザー)

まずシンセサイザーについておさらいします。
シンセサイザーには大きく分けると二つ種類があります。

  • ハードウェア・シンセサイザー
    microKORG のようにキーボードの中に音源が複数入っているもの。
    ピアノやベースの音などが入っており、音源の切り替えを行って鳴らす音を変更できます。 電子ピアノとかを想像してもらうと分かりやすいです。

  • ソフトウェア・シンセサイザー
    PC内にソフトとして立ち上がり、PC画面の鍵盤をクリックすると音が鳴ります。
    MIDIキーボードなどを使えばハードシンセのような使用感で演奏することもできます。

どちらにも共通しているのは、シンセサイザーに入っている音はあらかじめ決まっており、基本的にシンセサイザーの中身をカスタムすることはできないということです。(パラメータをいじって音作りはできるけど)

これを可能にするのがMPCや他のサンプラー

先ほど紹介したサンプリングソースを使用して、オリジナルのシンセサイザーを作ることができます。 このオリジナルのシンセサイザーのことをMPCではProgramと呼びます。

複数のサンプリングソースを各パッドにアサインして、その状態を保存するとProgramデータが出来上がります。

KREVA氏はMPC4000でスネアだけ、クラップだけを集めたProgramとかを作っているみたいです。

自分の好きなようにProgramの中身をカスタムできるのがMPCをはじめとしたサンプラーの醍醐味の一つです。

ファイル拡張子:.xpm

・Sequence (フレーズ)

Programを使用してパッドでフレーズを打ち込みます。 一番MPCっぽいイメージの部分ですね。 この打ち込んだフレーズがSequenceデータになります。

ファイル拡張子:.xsq

・Song (曲)

Seuenceを複数並べたものがSongになります。
異なるSequenceを並べることにより、曲に変化が生まれ展開が作られていきます。

まとめ

以上、大きく分けると4つのデータ構造を組み合わせて初めてMPCで曲を作成することが出来ます。 もちろん各工程にはもっと細かなことが沢山あるのですが、ざっくり言うとこんな感じです。 イメージは湧いたでしょうか?

Akai Professional 音楽制作システム 7GB音源付き MPC Studio Black

Akai Professional 音楽制作システム 7GB音源付き MPC Studio Black

【Javascript】複数のチェックボックスの全選択・全解除

入力フォームでよくある、全選択・全解除のチェックボックスのサンプルです。

色んな方法がありますが、今回は<input>の属性nameが全て同じだった場合を記載しています。

参考ページに色んな方法が書いてあるので、状況に応じて使いこなしてみてください。


<form name="form">
  <label>
    <input type="checkbox" name="all" onClick="AllChecked();" />全て選択
  </label>
  <p>
    <label>
      <input type="checkbox" name="test" value="TEST1" onClick="DisChecked();" />TEST1
    </label>
    <label>
      <input type="checkbox" name="test" value="TEST2" onClick="DisChecked();" />TEST2
    </label>
    <label>
      <input type="checkbox" name="test" value="TEST3" onClick="DisChecked();" />TEST3
    </label>
    <label>
      <input type="checkbox" name="test" value="TEST4" onClick="DisChecked();" />TEST4
    </label>
  </p>
</form>

<script language="JavaScript" type="text/javascript">
<!--
  // 「全て選択」チェックで全てにチェック付く
  function AllChecked(){
    var all = document.form.all.checked;
    for (var i=0; i<document.form.test.length; i++){
      document.form.test[i].checked = all;
    }
  }

  // 一つでもチェックを外すと「全て選択」のチェック外れる
  function DisChecked(){
    var checks = document.form.test;
    var checksCount = 0;
    for (var i=0; i<checks.length; i++){
      if(checks[i].checked == false){
        document.form.all.checked = false;
      }else{
        checksCount += 1;
        if(checksCount == checks.length){
          document.form.all.checked = true;
        }
      }
    }
  }
// -->
</script>

参考

複数のチェックボックスを同時にチェックする 全選択チェックボックス - [サンプルコード /JavaScript] ぺんたん info

メールアドレス入力フォームでの値の比較・確認

「メールアドレス」と「確認用メールアドレス」の入力値を照らし合わせて、一致しなかった場合はエラーメッセージを出すという、入力フォームでよくある機能のサンプルを2パターン記載します。

どちらもJavaScriptを使用するんですが、エラーメッセージの出し方を変えています。 状況に応じて使い分けてみてください。

サンプル1

エラーメッセージをJavaScriptのアラートで表現したパターンです。 こっちの方がコード的には簡単です。

<form onSubmit="return CheckEmail_1()">
  <div>
    <label for="email_1">メール:</label>
  </div>
  <div>
    <input type="email" id="email_1" required>
  </div>
  <div>
    <label for="emailConfirm_1">メール確認用:</label>
  </div>
  <div>
    <input type="email" id="emailConfirm_1" required>
  </div>
  <p>
    <input type="submit" id="submit">
  </p>
</form>

<script language="JavaScript" type="text/javascript">
<!--
  function CheckEmail_1() {
    //IE対応の為変更
    //var mail = email_1.value; //メールフォームの値を取得
    //var mailConfirm = emailConfirm_1.value; //メール確認用フォームの値を取得
    var mail = document.getElementById("email_1").value; //メールフォームの値を取得
    var mailConfirm = document.getElementById("emailConfirm_1").value; //メール確認用フォームの値を取得
    // パスワードの一致確認
    if (mail != mailConfirm){
      alert("パスワードと確認用パスワードが一致しません"); // 一致していなかったら、エラーメッセージを表示する
      return false;
    }else{
      return true;
    }
  };
// -->
</script>

アラート表示-JavaScript入門

サンプル2

こちらはエラーメッセージをHTML5の入力チェック方式で表現したパターンです。 他の値もHTML5で入力チェックをしていた場合は、こちらの方がメッセージの形式に統一感があるので見栄えがいいです。

<form>
  <div>
    <label for="email_2">メール:</label>
  </div>
  <div>
    <input type="email" id="email_2" required />
  </div>
  <div>
    <label for="emailConfirm_2">メール確認用:</label>
  </div>
  <div>
    <input type="email" id="emailConfirm_2" required oninput="CheckEmail_2(this)" />
  </div>
  <p>
    <input type="submit" id="submit">
  </p>
</form>

<script language="JavaScript" type="text/javascript">
<!--
  function CheckEmail_2(input){
    //IE対応の為変更
    //var mail = email_2.value; //メールフォームの値を取得
    var mail = document.getElementById("email_2").value; //メールフォームの値を取得
    var mailConfirm = input.value; //メール確認用フォームの値を取得(引数input)

    // パスワードの一致確認
    if(mail != mailConfirm){
      input.setCustomValidity('メールアドレスが一致しません'); // エラーメッセージのセット
    }else{
      input.setCustomValidity(''); // エラーメッセージのクリア
    }
  }
// -->
</script>

制約 - フォーム - HTML要素 - HTML5 タグリファレンス - HTML5.JP

リードの取引開始時に取引先責任者でレコードタイプを引き継ぐ

リードオブジェクトのレコードタイプを、取引開始後の取引先責任者でも引き継ぎたくて下記の記事を参考にプロセスビルダーを触っていました。

www.systemforest.com

この記事の中で「18桁のレコードタイプIDを指定する」的なことが書いてあるんですけど、通常の画面からだとURLに記載されている15桁のレコードタイプIDしか参照できないのでそれでやってみました。 いちいちデータローダとか使うの面倒くさいし。

で、ちゃっちゃと真似てプロセスビルダーを作って、取引開始してみたんですけど、一向に指定したレコードタイプにならない。 何回やってもならない。

でちょっと面倒だけど18桁のレコードタイプIDを取得してみました。 レコードタイプを指定した適当なレコードを各オブジェクトに一つずつ作り、それを取り出します。

Lead[] lead = [SELECT Name, RecordTypeId FROM Lead WHERE name = 'xxx' LIMIT 1];

Contact[] contact = [SELECT Name, RecordTypeId FROM Contact WHERE name = 'xxx' LIMIT 1]

System.debug(lead);
System.debug(contact);

取得した18桁のレコードタイプIDを使ってプロセスビルダーを更新すると・・・

できた!

ちゃんと書いてあること守るべきでしたね。すいません。

同じところでハマってる人もいるかもなのでメモしときます。