生成AIを活用したSaaSサービス提供企業

  • Company
    • Company
    • 会社概要
    • グループ会社
  • Service
  • Work
  • News
  • Recruit
  • Blog
  • Contact

ブログBlog

  • ALL

  • お知らせ

  • 技術/デザイン/制作

  • ベトナム

  • ごはん

  • 日常/プライベート

  • 気遣いと誤解の間

    竹内です。こんにちは。

    昨日、近所のローソンへ荷物を受け取りに行ったのですが、そこで少しモヤモヤすることがありました。
    ローソンでの荷物の受け取りはLoppiで番号を入力して、出力されたレシートをレジへ持って行くというもので、入力に戸惑っても2分もかかりません。
    さっと発券して荷物を受け取ろうとしたのですが先客が。
    40代くらいの女性でした。

    その女性は機械に慣れていないらしく、あーでもないこーでもないとおどおどしながらLoppiを弄っている様子でした。
    僕自身はちょっとした買い物もあったので店内を一周したのですが、それでもまだ終わってませんでした。
    ここで僕は後ろに並ぼうか迷いました。
    しかしただでさえ慣れない操作をしているところの後ろに他人が並ぶのはすごいプレッシャーだろうと思い、少し離れたところから終わるのを待っていました。
    時間にしてそこから2~3分でしょうか。
    何もしない2~3分というのは長いものです。
    それでもどうやら終わったみたいだったので近づこうとしたところ、レジで会計をしていた男性(40代後半くらい?)がLoppiへ。
    どうやら店員に勧められたポンタカードの個人情報登録のようです。

    ちょっとがっくりしながらも、こんなことでイライラしても仕方がないし、誰も悪くないと思い、今度は後ろに並びました。
    しかしこの男性も機械に慣れていない様子でした・・・。
    漏れ聞こえた店員の説明を聞く限りでは、名前と住所を入力するだけなのですが、待てども待てども終わらない。
    そして店員にもヘルプを求めない。。。
    自分が並んでいることでプレッシャーはないのかなぁ?とか、一回取り消してお先にどうぞとかないのかなぁ?なんて事を考えていました。

    結局は見かねた店員が入力を代わりにして終わらせていました。
    その間、長くても10分はかかってないと思うのですが、とてもとても長く感じました。

    その後、無事に荷物を受け取ったものの、モヤモヤした想いが残りました。

    ・女性がまごまごしていても後ろに並ぶべきだったのかな。
    ・男性に声をかけて一緒に手伝ってあげればよかったのかな。
    ・「30秒で終わるので」とでも言って先にやらせて貰えばよかったのかな。
    ・Loppi以外の方法はあったのかな。

    などなど、とても自分勝手で器の小さい話なのですが、少し気遣いをした結果が自分にとってロスを生んだ場合の心のやりどころに困ったというお話でした。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2012/11/012012/11/12

    カテゴリー 日常 / プライベート
  • トリック・オア・トリート!

    こんにちは

    伊藤です。

    トリック・オア・トリート!
    ハロウィンですね!
    お菓子ください!

    この時期になるとよくアメリカ映画では
    それに合わせてホラー映画を公開しますよね。

    少し前だとソウシリーズがよくハロウィンの時期に合わせて公開されています。
    その次がパラノーマル・アクティビティシリーズですね。

    明日にはパラノーマル・アクティビティ4が公開されます。
    ローラがCMやっています。

    ちなみにホラー映画にはダイエット効果があるそうです。

    ある実験で、ホラー映画を見た後の心拍数、酸素摂取量、などを測定したところ、
    平均して通常時の3倍のカロリーを消費するそうで、アドレナリンによる活性化の影響で、
    座っているだけでチョコレートバー1本に相当する約200カロリー消費できるらしいです!

    最もカロリー消費したホラー映画が以下で
    シャイニング、ジョーズ、エクソシスト、エイリアン、ソウ・・・etc
    と名だたる名作が挙げられていました。

    5作見ただけで単純計算で1000カロリー痩せられますね!

    ぼくも最近ぽっちゃりしてきたので、
    ホラー映画で痩せようと思います!

    では!

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    伊藤 博孝投稿者 伊藤 博孝

    投稿日: 2012/10/312012/11/12

    カテゴリー 日常 / プライベート
  • 英単語の覚え方~妄想単語術~

    今日はみなさんがおそらく嫌いであろう「単語の覚え方」について書こうと思います!
    妄想が得意な方向けですよ!

    わたしは単語を覚えるときまずは単語を「分解」します(´・`ω・´)シャキーン! スパパッ
    分解ってどゆことー?と思った方もいるかと思います。
    “英単語の覚え方~妄想単語術~” の続きを読む

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2012/10/312012/11/12

    カテゴリー 日常 / プライベート
  • 白色ワセリン

    どうも小林です。
    ようやく最近冷え込んで来て冬らしくなってきましたが
    乾燥肌には厳しい季節になってきました。

    小林はかなりの乾燥肌なので保湿クリームは必需品です。
    保湿を怠るとシャワーでも痛く感じるくらい皮膚が乾燥してツライです。

    ちなみに小林が使ったクリームの中で一番保湿力が高かったのはママ&キッズの妊娠線予防クリーム。

    嫁の余ったやつを使ってたのですが凄い保湿力でした。

    ボディ用ですがもし機会があれば使用してみてください。これは本当に凄いです。

    顔とかハンドクリームは個人の趣味があるのでオススメというのは難しいですが
    ちょっとした保湿する場合は「白色ワセリン」がオススメ。

    こんなヤツ。

    添加物無し。

    小林家では一人一個所持するくらい利用してます。
    小林はささくれがよくできるので主に指先に使ってます。
    あとリップ替わりとか。

    薬局やドラッグストアで300円くらいで買えますのでお試しください。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2012/10/302012/11/12

    カテゴリー 日常 / プライベート
  • ドラフト会議2012

    お疲れさまです。横井です。
    海の向こうではジャイアンツがワールドチャンピオンとなり、日本シリーズもジャイアンツが2連勝と調子が良いので、今年のプロ野球はジャイアンツイヤーになりそうな感じです。

    先日の25日にドラフト会議が開かれました。
    最近はスポーツ新聞を買ってチェックをしておりますが、陰ながら応援しております、中日もピッチャーで良い選手が取れたようですので、来年も楽しみです。

    今年は日本ハムが大谷選手を強行指名したことで盛り上がっておりますが、去年も菅野選手も強行指名して、結局取れなかった経緯がありますので、せっかくの1位指名枠を無駄に使っているようで、非常にもったいない感じもします。
    アメリカですと、選手のトレードで解決していた気もしますので、日本もトレードなどで、両方の球団にメリットがある解決策があればなーと思います。

    ではでは。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    アバター投稿者 staff

    投稿日: 2012/10/302024/04/26

    カテゴリー 日常 / プライベート
  • WebSocketでチャットアプリを作る(with Redis&Node.js) ~続き~

    どうも。営業部の伊藤です。

    先日のブログの続きです。
    Redisの準備が終わりましたので、次はWebSocketを利用するための環境を用意します。

    WebSocketを利用するため、今回はサーバー側のテクノロジーとしてNode.jsを利用する事になしました。
    Jettyなど他にも選択肢はあったのですが、参考文献が多いという理由でnodeにしました。

    では、nodeをインストールします。
    インストールには、nodeを導入するためのシェルスクリプトでインストールを簡略化してくれる「nave」(複数のバージョン管理も可能)やgit上にも様々なオープンソースがありますが、今回は複数バージョンを管理する必要もないため、普通にソースをダウンロードしてコンパイルする事にしました。
    バージョンはインストール当時(2012年9月頃)のstableだった0.8.6にしました。

    # cd /usr/local/src
    # wget http://nodejs.org/dist/v0.8.6/node-v0.8.6.tar.gz
    # tar xf node-v0.8.6.tar.gz
    # cd node-v0.8.6
    # ./configure
    # make install

    次にnode向けのパッケージマネージャであるnpm(Node Package Manager)をインストールします。
    npmで管理されているライブラリは以下URLをご覧ください。
    https://npmjs.org/
    nodeコマンドが利用できるかを確認後、以下を実行します。

    # node -v
    v0.8.6
    # curl http://npmjs.org/install.sh | sh

    対話モードを”yes”と答えていくとインストール完了です。
    これでnodeが利用できる状態であれば、npmコマンドも利用できるようになります。
    早速バージョンだけ確認してみます。

    # npm -v
    1.1.48

    次にパッケージをダウンロードするのですが、その前にnodeの動きを一度確認しておきます。
    王道のHello Worldを表示するため、nodeコンソールを開き以下スクリプトを実行します。

    # node
    > var http = require(“http”);
    > http.createServer(function(req, res){
    > res.writeHead(200, {“Content-Type”: “text/plain”});
    > res.end(“Hello World”);
    > }).listen(3000, “127.0.0.1”);

    ブラウザで上記URL(http://127.0.0.1:3000/)にアクセスすると、画面上に「Hello World」が表示されます。
    単純にテキストを表示するだけなのに、ヘッダーステータスコード200?、listen?
    普段はTomcatやApache(+CGI)といったコンテナ上でサーブレットやPHPでアプリケーションを構築する事が多いと思いますが、nodeの場合はアプリケーションだけでなく、上記サンプルのようにnode自体がコンテナとなります。
    その為、nodeで例外が発生するとサーバ機能ごとプロセスが終了してしまいますので、サーバ機能まで共倒れしないよう例外処理には気を付ける必要があります。
    ※nodeコンソール上で実行していますが、上記スクリプトをファイルに保存し(例えばtest.js)、nodeコマンドのパラメータとして実行する事も可能です。

    ではwebsocketを利用するため、幾つかのパッケージをnpmを利用してインストールします。

    1. Express
    Expressはnode用のWebフレームワークです。
    上述したようにnodeの場合はnode自身がコンテナの役割を果たす必要があるため、静的なファイルの配信についてもnode内で対応しなければなりません。この手間をWebアプリケーションフレームワークであるExpressを利用することで容易に解決できます。
    以下コマンドでパッケージをグローバルインストールします。
    ※グローバルインストールにしないとパスが通らないケースがあるため、以下コマンドでインストールすることをお勧めします。

    $ npm install -g express

    インストールディレクトリにあるapp.jsを実行します。

    $ node app.js

    http://127.0.0.1:3000/ にアクセスして「Welcome to Express」と表示されていればインストール完了です。

    2. Socket.IO
    Socket.IOは今回利用するWebSocketをブラウザの互換性を考慮せずに利用できる抽象化ライブラリです。
    WebSocketを利用できないブラウザではAjaxのロングポーリングを利用するなど、ブラウザ間の互換性を気にせずに開発が可能になります。
    以下コマンドでパッケージをインストールします。

    $ npm install socket.io

    これで一通りの準備が終わりましたので、次はスクリプトを用意します。
    publicディレクトリ内に移動し、chat.htmlファイルを作成します。

    <head>
    <script src=”/socket.io/socket.io.js”></script>
    <script src=”/javascripts/chat.js”></script>
    </head>
    <body>
    <input type=”text” id=”comment” placeholder=”入力してください” value=”” size=20 ></input>
    <button onclick=javascript:send() >送信</button>
    <p id=”list”></p>
    </body>

    次に、javascriptディレクトリに以下ファイル(chat.js)を作成します。
    クライアントサイドのJavaScriptです。

    var postList;
    window.onload=function(){
    postList = document.getElementById(“list”);
    }var listleft = function(){
    postList.innerHTML+=”<div align=’left’><img src=’/images/left.gif’>”+arguments[0]+”</div>”;
    }var listright = function(){
    postList.innerHTML+=”<div align=’right’>”+arguments[0]+”<img src=’/images/right.gif’></div>”;
    }

    var socket = io.connect(“http://127.0.0.1”, {port:3000});
    socket.on(“connect”, function() {
    listleft(“接続開始”); //接続した当人にだけ表示
    socket.emit(“msg send”, “皆さん宜しくお願いします。”);

    // 自分のコメントを表示
    socket.on(“msg mycommnet”, function(commnet){
    listleft(commnet);
    });

    // 他人のコメントを表示
    socket.on(“msg elsecommnet”, function(commnet){
    listright(commnet);
    });

    socket.on(“disconnect”, function(){
    listleft(“接続が切れました。”);
    });
    });

    function send(){
    var comment = document.getElementById(“comment”).value;
    socket.emit(“commnet send”, comment);
    }

    自分が投稿した内容は左側に表示し、自分以外の投稿は右側に表示するようにします。
    最後に先ほど動作確認したapp.jsの下段にsocketインスタンス作成処理を追記します。

    var express = require(“express”);
    var app = module.exports = express.createServer();app.configure(function(){
    app.set(“views”, __dirname + “/views”);
    app.set(“view engine”, “ejs”);
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session({ secret: “your secret here” }));
    app.use(app.router);
    app.use(express.static(__dirname + “/public”));
    });app.configure(“development”, function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    });

    app.configure(“production”, function(){
    app.use(express.errorHandler());
    });

    app.get(“/”, function(req, res){
    res.render(“index”, {
    title: “Express”
    });
    });

    app.listen(3000);
    console.log(“Express server listening on port %d in %s mode”, app.address().port, app.settings.env);

    //socketインスタンスを作成
    var io = require(“socket.io”).listen(app);
    io.sockets.on(“connection”, function(socket){
    socket.on(“commnet send”, function (commnet) {
    socket.emit(“msg mycommnet””, commnet); //自分自身に通知
    socket.broadcast.emit(“msg elsecommnet”, commnet); //自分以外で同一ソケットとハンドシェイク中の人にキャスト
    });
    socket.on(“disconnect”, function() {
    log(接続が切れました。”);
    });
    });

    スクリプトの準備が整いましたので、再度サーバーを起動します。

    $ node app.js

    その後、publicディレクトリ内に新規作成したchat.htmlにアクセスします。
    http://127.0.0.1:3000/chat.html

    まず始めに、アイコンがダサ過ぎる点については無視してください。。。
    クライアント側からハンドシェイク要求を送信し、サーバー側からハンドシェイクの応答があれば自身のブラウザだけに「接続開始」というメッセージが表示されます。
    その後、既に同一ソケットにアクセス中のユーザーに接続が確立した旨を伝えるため、「皆さん宜しくお願いします。」とうメッセージを発信(emit)します。
    上記画像の場合、左側のブラウザが先にアクセスしたブラウザで、右側のブラウザが後にアクセスしたブラウザです。
    右側のブラウザで接続後にコメントを送信すると、リアルアイムに左側のブラウザに投稿内容が反映されました。いい感じ♪
    例外処理、DBを利用した機能(過去データ取得など)などは未実装の状態ですが、一旦これでチャットWebアプリの基盤はできました。
    次はRedisを利用した過去データ取得、Publish/Subscribe型(Pub/Sub型)とnodeを連携した冗長化を進めていきます。
    こちらについては進展があればまたブログに投稿させていただきます。

    それでは。

    このエントリーをはてなブックマークに追加
    Share on Tumblr
    Tweet

    伊藤 康平投稿者 伊藤 康平

    投稿日: 2012/10/292012/11/13

    カテゴリー 技術 / デザイン / 制作

投稿ナビゲーション

前のページ ページ 1 … ページ 362 ページ 363 ページ 364 … ページ 556 次のページ