Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

「ビジネスロジック」のビジネスの意味とは?

tl;dr

「ビジネスマン」とか「ビジネスモデル」のビジネスと同じ意味です。

ただし、「ビジネスロジック」はビジネスのみではなく、「そのサービスのロジック」くらいに拡大解釈されていることがほとんどです。

英語wikiを見てみる

英語wikiのBusiness logicによると

In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed.

とあります。簡単に訳すと「ビジネスロジックは現実世界のビジネスルールを符号化したプログラムの一部」と言った感じです。

ビジネスルールとは?

ではビジネスロジックを規定する「ビジネスルール」とは何でしょうか?英wikiBusiness ruleによると

A business rule is a rule that defines or constrains some aspect of business and always resolves to either true or false. Business rules are intended to assert business structure or to control or influence the behavior of the business.

とあります。簡単に訳すと「ビジネスルールとはあるビジネスの側面を定義したり強いたりするもので、ビジネス構造を示したり、ビジネスの振る舞いをコントロールしたりするもの」です。だいぶ意訳ですが。

要するに、ビジネスロジックとはビジネスルールをプログラムにしたもので、ビジネスルールとはビジネスのルールです。そしてここでいうビジネスとは「ビジネスマン」のビジネスと同じです。

ほかにbusinessが入った語

ビジネスオブジェクト、ビジネスメソッドなどがあります。いずれのビジネスも同じです。

LINE Payカードを入手したのでレポート

あまりプログラミングには関係ないですが、キャッシュレスに興味があったのでまとめてみました。

LINE Payカードとは?

LINE PayカードというのはJCBプリペイドカードの一種で、LINE Payの媒体となるカードです。

LINE Payにお金をチャージしておくとLINE Payカードでその金額が使えます。

実際にLINE Payでお会計してみる

近所のスーパーにて先程使ってみました。

  1. 店員さんに「JCBカードは使えますか?」と尋ねる
  2. JCBカードを提示する
  3. ポイントカードを一緒に出す(例えばAEONならWAONカード)
  4. 店員さんがカードを通す
  5. お会計完了!

クレジットカードのようにサインや暗証番号を入力する必要もなくとても便利です。また、LINE Payカード自体にもポイントが付与されるので二重でポイントがついて大変オトクです。

LINE Payカードのメリット

LINE Payカードでの支払いにはいくつかメリットがあります。

  1. ポイントがつく
  2. お釣りを計算して小銭を出す必要がない
  3. 硬貨に触れないので清潔
  4. オートチャージなので使い勝手がいい

やはりキャッシュレスで支払いができるのがいいですよね。クレジットカードはどうしてもサインや暗証番号が必要になったりと面倒です。また、アプリの方で設定しておくとオートチャージされるようになるので、Suicaのようにチャージする手間もかかりません。

補足: LINE Payでもらえるポイントについて

LINE Payで支払いをすると、ランクに応じてポイントがつきます。たとえば「ホワイトカラー」というランクの場合は0.5%ポイントが付きます。ランクが上がるほどポイント率も高くなります。

ランクは「利用金額」と「何人以上に送金」という条件があります。詳しくは他ブログを参照ください。

アルゴリズム勉強会 第三回 A*探索

久しぶりにこのシリーズ書きました。シリーズ一覧はこちらから

A*アルゴリズムとは?

「今までにかかったコスト + これから先の推定されるコスト」が最小になるノードを選びながら探索していくアルゴリズムです。

最短経路探索を考えると分かりやすいです。現在地からゴールまでの経路を考えます。

  1. まず隣接した都市を見ます
  2. 隣接都市のうちゴールまでの直線距離が短い(これが推定されるコスト)都市を選びます
  3. その都市を起点にさらに隣接都市を見ます
  4. これを繰り返してゴールまで探索します。

こうするとたとえ障害物が途中にあったとしても最短になります。

どういうときに使うのか

このアルゴリズムは「最短ルート探索」の他に「15パズルを解く」、「NLPで確率論的文法を使用したパース」などにも使えるそうです。後者は英語版wikiに書いてあったのですがサッパリわかりません。

h*関数を適切に設定すればおそらくルービックキューブも解けると思います。

実際のコード

実際にA*を使って最短経路を計算するプログラムを書いてみました。GitHubに置いたのでご覧ください。

GitHub - pandanoir/a-star: A* algorithm in JS