正午の調布を、

 

人力車を引き颯爽と走るタクヤの姿、

 

一瞬だけ、4時台にV流れました●~*

 

あっ、調布駅前、拓也でーーーす!

 

本日最終始まるな!

 

・・・・・

 

「お子さんが多いですね~」

 

言い方。

 

なーんか、アナウンサー過ぎるなぁーーー(アナウンサーかっ)

 

明日は、

 

関東圏晴れ!

 

カラッとして、洗濯日和でーーーす●~*

 

 

それでは、せーーーの!

 

木村拓也の・・・・(ー_ー)!!

 

皆さん、バラバラやん(/_;)

 

ちょこちょこ拓也の様子を知りたい方は~

 

是非こちらへ●~*

開拓-kai・taku-日記 (木村拓也)- フジテレビ

 

 ★木村拓也アナ上を向いて歩こう!最新記事は、ブログ内カテゴリータっクヤぁーー!上を向いて歩こう!」でご確認できます。お手数かけますm(_ _"m)

typescriptlogo.png

※ 『[TypeScript] ImageData によるピクセル単位の描画』の続き。

前回は、HTML5 の Canvas に ImageData を作成してランダムなピクセルを描画した。

今回も同様にピクセル単位の描画を行ってみよう。少しだけ応用してマンデルブロ集合を描画してみる。

マンデルブロ集合

マンデルブロ集合は、フラクタルとして有名な図形だ。

詳しくは、次の場所が参考になる:

  • マンデルブロ集合の不思議な世界

HTML5 の Canvas にマンデルブロ集合を描画する

HTML5 の Canvas にピクセル単位の描画を行う方法については、前回を参考にしてほしい。

今回は、TypeScript の特長である「クラス設計のやり易さ」を活かすこととし、前回よりもきちんとクラス分けを行ってみたい。

先ず、前回同様の mandelbrot.html という HTML ファイルを用意する。 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Mandelbrot Sample</title>
    <script src="graph.js"></script>
    <script src="mandelbrot.js"></script>
</head>
<body onload="MandelbrotSample.MainProgram.run()">
    <canvas width="800" height="800"></canvas>
</body>
</html>
<!--
Usage:
    mandelbrot.html		                  : position = (-2.8, 2.0), scale = 4.0
    mandelbrot.html?posy=1&scale=2        : position = (-2.8, 1.0), scale = 2.0
    mandelbrot.html?posx=0&posy=0&scale=1 : position = ( 0.0, 0.0), scale = 1.0

    - This HTML can work with mandelbrot.js and graph.js online or offline.
-->

この HTML ファイルでは、graph.js と mandelbrot.js という2つの JavaScript ファイルを組み込んでいる。 それぞれ graph.ts と mandelbrot.ts いう TypeScript ファイルから生成されることになる。

onload="MandelbrotSample.MainProgram.run()" という記述があるが、このメソッドは mandelbrot.ts 内に用意する。

graph.ts

graph.ts は、Canvas にピクセル単位の描画を行うモジュールだ。

今回は、Canvas もクラス化してみよう。ピクセル毎に描画を行う部分もクラス化する。

また、座標、大きさ、矩形、色などの基本的なクラスもここに置くことにする。

module Graph {
    // 色
    export class Color {
        constructor(public red: number = 0x00, public green: number = 0x00, public blue: number = 0x00, public alpha: number = 0xff) { }
    }

    // 二次元ベクトル
    export class Vector {
        constructor(public x: number = 0.0, public y: number = 0.0) {}

        add(vector: Vector): Vector {
            return new Vector(this.x + vector.x, this.y + vector.y);
        }

        multiply(vector: Vector): Vector {
            return new Vector(this.x * vector.x, this.y * vector.y);
        }

        multiplyBy(value: number): Vector {
            return new Vector(this.x * value, this.y * value);
        }
    }

    // 二次元の大きさ
    export class Size {
        constructor(public width: number, public height: number) {}
    }

    // 矩形
    export class Rectangle {
        constructor(public position: Vector, public size: Size) {}
    }

    // ImageData への描画用
    class ImageDataHelper {
        // ImageData の指定した座標の 1 ピクセルを指定した色にする
        static setPixel(imageData: ImageData, position: Vector, color: Color) {
            // ImageData のサイズ
            var imageDataSize         = new Size(imageData.width, imageData.height);
            // 指定したピクセルの座標が有効でなかったら
            if (!ImageDataHelper.isValid(imageDataSize, position))
                return;

            // 指定した座標のピクセルが ImageData の data のどの位置にあるかを計算
            var index                 = ImageDataHelper.toIndex(imageDataSize, position);
            // その位置から、赤、緑、青、アルファ値の順で1バイトずつ書き込むことで、ピクセルがその色になる
            imageData.data[index + 0] = color.red  ;
            imageData.data[index + 1] = color.green;
            imageData.data[index + 2] = color.blue ;
            imageData.data[index + 3] = color.alpha;
        }

        // 指定したピクセルの座標が有効かどうか
        private static isValid(imageDataSize: Size, position: Vector): boolean {
            return position.x >= 0.0 && position.x <= imageDataSize.width  &&
                   position.y >= 0.0 && position.y <= imageDataSize.height;
        }

        // 指定した座標のピクセルが ImageData の data のどの位置にあるかを計算
        private static toIndex(imageDataSize: Size, position: Vector): number {
            return (position.x + position.y * imageDataSize.width) * 4;
        }
    }

    // Canvas に ImageData を置きピクセル毎に描画を行う
    export class Sheet {
        private context_  : CanvasRenderingContext2D;
        private imageData_: ImageData;

        get context() {
            return this.context_;
        }

        constructor(context: CanvasRenderingContext2D, size: Size) {
            this.context_   = context;
            this.imageData_ = context.createImageData(size.width, size.height);
        }

        // ImageData の指定した座標の 1 ピクセルを指定した色にする
        setPixel(position: Vector, color: Color) {
            ImageDataHelper.setPixel(this.imageData_, position, color);
        }

        // 指定した位置に ImageData を描画
        draw(position: Vector = new Vector()) {
            this.context.putImageData(this.imageData_, position.x, position.y);
        }
    }

    // キャンバス
    export class Canvas {
        private canvas_ : HTMLCanvasElement;
        private context_: CanvasRenderingContext2D;

        constructor() {
            this.canvas_  = <HTMLCanvasElement>document.querySelector("canvas");
            this.context_ = this.canvas_.getContext("2d");
        }

        get size(): Graph.Size {
            return Canvas.getCanvasSize(this.canvas_);
        }

        get position(): Graph.Rectangle {
            return new Graph.Rectangle(new Graph.Vector(), this.size);
        }

        get context(): CanvasRenderingContext2D {
            return this.context_;
        }

        private static getCanvasSize(canvas: HTMLCanvasElement): Graph.Size {
            return new Graph.Size(canvas.width, canvas.height);
        }
    }
}

mandelbrot.ts

mandelbrot.ts は、Canvas にマンデルブロ集合を描画する行うモジュールだ。

メイン プログラム、マンデルブロ集合、マンデルブロ集合を描画するときのパラメーター、そしてパラメーターをクエリ文字列から取得するためのユーティリティの各クラスからなる。

/// <reference path="graph.ts"/>

module MandelbrotSample {
    class Utility {
        // クエリ文字列から数を取得
        static getNumberFromQueryString(key: string): number {
            var queryString = Utility.getQueryString(key);
            if (queryString != "") {
                try {
                    return parseInt(queryString);
                } catch (ex) {}
            }
            return null;
        }
        
        // クエリ文字列の取得
        static getQueryString(key: string, default_: string = null): string {
            if (default_ == null)
                default_ = "";
            key             = key.replace(/[/, "[").replace(/[]]/, "]");
            var regex       = new RegExp("[?&]" + key + "=([^&#]*)");
            var queryString = regex.exec(window.location.href);
            return queryString == null ? default_ : queryString[1];
        }
    }

    // パラメーター
    class Parameter {
        position      : Graph.Vector = new Graph.Vector(-2.8, 2.0);
        maximum       : number       = 32;
        private scale_: number       = 4.0;

        get ratio(): number {
            return this.scale_ / this.size.width;
        }

        constructor(public size: Graph.Size) {
            this.setPositionX();
            this.setPositionY();
            this.setScale    ();
            this.setMaximum  ();
        }

        private setPositionX() {
            var positionX = Utility.getNumberFromQueryString("posx");
            if (positionX != null)
                this.position.x = positionX;
        }

        private setPositionY() {
            var positionY = Utility.getNumberFromQueryString("posy");
            if (positionY != null)
                this.position.y = positionY;
        }

        private setScale() {
            var scale = Utility.getNumberFromQueryString("scale");
            if (scale != null)
                this.scale_ = scale;
        }

        private setMaximum() {
            var maximum = Utility.getNumberFromQueryString("max");
            if (maximum != null)
                this.maximum = maximum;
        }
    }

    class Mandelbrot {
        private position_ : Graph.Vector;
        private sheet_    : Graph.Sheet;
        private parameter_: Parameter;

        constructor(context: CanvasRenderingContext2D, position: Graph.Rectangle, size: Graph.Size) {
            this.position_  = position.position;
            this.sheet_     = new Graph.Sheet(context, size);
            this.parameter_ = new Parameter(size);
        }

        draw(palette: Graph.Color) {
            var point = new Graph.Vector();
            for (point.y = 0; point.y < this.parameter_.size.height; point.y++) {
                for (point.x = 0; point.x < this.parameter_.size.width; point.x++) {
                    var a = this.parameter_.position.add(new Graph.Vector(point.x, -point.y).multiplyBy(this.parameter_.ratio));
                    this.setPixel(point, this.getCount(a), palette);
                }
            }
            this.sheet_.draw(this.position_);
        }

        private getCount(a: Graph.Vector): number {
            var squareBorder = 25.0;
            var square       = new Graph.Vector();
            var point        = new Graph.Vector();
            var count        = 0;
            do {
                point  = new Graph.Vector(square.x - square.y + a.x, 2.0 * point.x * point.y + a.y);
                square = point.multiply(point);
                count++;
            } while (square.x + square.y < squareBorder && count <= this.parameter_.maximum);
            return count < this.parameter_.maximum ? count : 0;
        }

        private setPixel(point: Graph.Vector, count: number, palette: Graph.Color) {
            this.sheet_.setPixel(point, palette[Mandelbrot.toColorIndex(count, palette.length)]);
        }

        private static toColorIndex(colorNumber: number, paletteSize: number): number {
            var colorIndexNumber = paletteSize * 2 - 2;
            var colorIndex       = colorNumber % colorIndexNumber;
            if (colorIndex >= paletteSize)
                colorIndex = colorIndexNumber - colorIndex;
            return colorIndex;
        }
    }

    export class MainProgram {
        static run() {
            var canvas     = new Graph.Canvas();
            var mandelbrot = new Mandelbrot(canvas.context, canvas.position, canvas.size);
            mandelbrot.draw(MainProgram.getPalette());
        }

        // パレット (予め色を格納しておき、パレット番号で色を参照)
        private static getPalette(): Graph.Color {
            return [
                new Graph.Color(0x02, 0x08, 0x80),
                new Graph.Color(0x10, 0x10, 0x70),
                new Graph.Color(0x20, 0x18, 0x60),
                new Graph.Color(0x30, 0x20, 0x50),
                new Graph.Color(0x40, 0x28, 0x40),
                new Graph.Color(0x50, 0x30, 0x30),
                new Graph.Color(0x60, 0x38, 0x20),
                new Graph.Color(0x70, 0x40, 0x10),
                new Graph.Color(0x80, 0x48, 0x0e),
                new Graph.Color(0x90, 0x50, 0x0c),
                new Graph.Color(0xa0, 0x58, 0x0a),
                new Graph.Color(0xb0, 0x60, 0x08),
                new Graph.Color(0xc0, 0x68, 0x06),
                new Graph.Color(0xd0, 0x70, 0x04),
                new Graph.Color(0xe8, 0x78, 0x02),
                new Graph.Color(0xff, 0x80, 0x01)
            ];
        }
    }
}

クラス図

以上のクラス構成を、クラス図で見てみよう。次のようになる。

クラス図
クラス図

TypeScript を使っている為に、このようなクラス設計は比較的容易だ。

実行例

では、実行してみよう。

コンパイルすると、graph.js と mandelbrot.js が生成される。

mandelbrot.html を Internet Explorer 9 以降等の HTML5 対応の Web ブラウザーで表示してみると、次のようにマンデルブロ集合が描画される。

mandelbrot.html
mandelbrot.html

実際のサンプルを次の場所に用意した。

  • mandelbrot.html

マンデルブロ集合のどこを描画するかを指定するパラメーターがクエリ文字列で渡せるようになっているので、次のようにして描画位置を変えることができる。

  • mandelbrot.html?posy=1&scale=2
  • mandelbrot.html?posx=0&posy=0&scale=1

C# で作成した例

比較の為に、同様のものを C# (Windows ストア アプリ) で作成してみよう。

Visual Studio でメニュー「新規作成」 - 「プロジェクト」から「Visual C#」 - 「Windows ストア」 - 「新しいアプリケーション (XAML)」で Windows ストア アプリを新規作成する。

App.xaml と App.xaml.cs には特に変更を加えない。

MainPage.xaml と MainPage.xaml.cs

謂わば mandelbrot.html にあたる部分。 TypeScript の場合同様、こちらも Canvas にイメージのオブジェクトを置き、描画する。

<Page
    x:Class="MandelbrotSample.WindowsStore.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MandelbrotSample.WindowsStore"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" Loaded="Page_Loaded">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Canvas x:Name="canvas">
            <Image x:Name="image" />
        </Canvas>
        <ProgressRing x:Name="progress" Width="50" Height="50" Foreground="Blue" />
    </Grid>
</Page>
using MandelbrotSample.WindowsStore.Graph;
using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace MandelbrotSample.WindowsStore
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            InitializeComponent();
        }

        async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            await Run();
        }

        async Task Run()
        {
            var canvasPosition = new IntRectangle { Position = new IntVector(),
                                                    Size     = new IntSize { Width  = (int)canvas.ActualWidth ,
                                                                             Height = (int)canvas.ActualHeight } };

            progress.IsActive  = true ;
            await MainProgram.RunAsync(canvasPosition, image);
            progress.IsActive  = false;
        }
    }
}
Graph.cs

graph.ts にあたる部分は次のような感じ。

こちらでは、Palette はクラスにした。

また、TypeScript では number という型だったものは、int と double に分けた。

using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.UI;
using Windows.UI.Xaml.Media.Imaging;

namespace MandelbrotSample.WindowsStore.Graph
{
    public class Palette
    {
        readonly Color colors;

        public int Size
        {
            get { return colors.Length; }
        }

        public Palette(int size)
        { colors = new Color[size]; }

        public Color this[int index]
        {
            get
            {
                return index >= 0 && index < Size ? colors[index] : new Color();
            }
            set
            {
                if (index >= 0 && index < Size)
                    colors[index] = value;
            }
        }
    }

    public class Vector
    {
        public double X { get; set; }
        public double Y { get; set; }

        public static Vector operator +(Vector vector1, Vector vector2)
        {
            return new Vector { X = vector1.X + vector2.X, Y = vector1.Y + vector2.Y };
        }

        public static Vector operator -(Vector vector1, Vector vector2)
        {
            return new Vector { X = vector1.X - vector2.X, Y = vector1.Y - vector2.Y };
        }

        public static Vector operator *(Vector vector1, Vector vector2)
        {
            return new Vector { X = vector1.X * vector2.X, Y = vector1.Y * vector2.Y };
        }

        public static Vector operator *(Vector vector, double value)
        {
            return new Vector { X = vector.X * value, Y = vector.Y * value };
        }

        public static Vector operator /(Vector vector, double value)
        {
            return new Vector { X = vector.X / value, Y = vector.Y / value };
        }
    }

    public class IntVector
    {
        public int X { get; set; }
        public int Y { get; set; }

        public static IntVector operator -(IntVector vector, IntSize size)
        {
            return new IntVector { X = vector.X - size.Width, Y = vector.Y - size.Height };
        }
    }
    
    public class IntSize
    {
        public int Width  { get; set; }
        public int Height { get; set; }

        public static IntSize operator +(IntSize size1, IntSize size2)
        {
            return new IntSize { Width = size1.Width + size2.Width, Height = size1.Height + size2.Height };
        }

        public static IntSize operator *(IntSize size, IntVector vector)
        {
            return new IntSize { Width = size.Width * vector.X, Height = size.Height * vector.Y };
        }
    }

    public class IntRectangle
    {
        public IntVector Position { get; set; }
        public IntSize   Size     { get; set; }
    }

    public static class WriteableBitmapExtension
    {
        public static void Clear(this WriteableBitmap bitmap, Color color)
        {
            var arraySize = bitmap.PixelBuffer.Capacity;
            var array     = new byte[arraySize];
            for (var index = 0; index < arraySize; index += 4) {
                array[index    ] = color.B;
                array[index + 1] = color.G;
                array[index + 2] = color.R;
                array[index + 3] = color.A;
            }
            using (var pixelStream = bitmap.PixelBuffer.AsStream()) {
                pixelStream.Seek(0, SeekOrigin.Begin);
                pixelStream.Write(array, 0, array.Length);
            }
        }

        public static void SetPixel(this WriteableBitmap bitmap, int x, int y, Color color)
        {
            var bitmapWidth  = bitmap.PixelWidth;
            var bitmapHeight = bitmap.PixelHeight;
            if (!IsValid(bitmapWidth, bitmapHeight, x, y))
                return;
            var index = ToIndex(bitmapWidth, x, y);
            Debug.Assert(index >= 0 && index < bitmap.PixelBuffer.Capacity);

            using (var pixelStream = bitmap.PixelBuffer.AsStream()) {
                var array = new byte { color.B, color.G, color.R, color.A };
                pixelStream.Seek(index, SeekOrigin.Begin);
                pixelStream.Write(array, 0, array.Length);
            }
        }

        static int ToIndex(int bitmapWidth, int x, int y)
        {
            return (x + y * bitmapWidth) * 4;
        }

        static bool IsValid(int width, int height, int x, int y)
        {
            return x >= 0 && x < width  &&
                   y >= 0 && y < height;
        }
    }

    public class Sheet
    {
        public WriteableBitmap Bitmap { get; set; }

        public Sheet(IntSize size, Color backgroundColor = new Color())
        {
            Bitmap = new WriteableBitmap(size.Width, size.Height);
            Bitmap.Clear(backgroundColor);
        }

        public void SetPixel(IntVector position, Color color)
        { Bitmap.SetPixel(position.X, position.Y, color); }
    }
}
Mandelbrot.cs

mandelbrot.ts にあたる部分は次のような感じ。

TypeScript の run メソッドは、非同期の RunAsync とした。

using MandelbrotSample.WindowsStore.Graph;
using System;
using System.Threading.Tasks;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Imaging;

namespace MandelbrotSample.WindowsStore
{
    public class Mandelbrot
    {
        public class Parameter {
            public Vector    Position { get; private set; }
            public int       Maximum  { get; private set; }
            public IntSize   Size     { get; private set; }
            public double    Ratio    { get; private set; }

            public Parameter(IntSize size) : this(position: new Vector { X = -2.8, Y = 1.5 }, scale: 5.0, maximum: 32, size: size)
            {}

            public Parameter(Vector position, double scale, int maximum, IntSize size)
            {
                Position = position;
                Maximum  = maximum;
                Size     = size;
                Ratio    = scale / size.Width;
            }
        }

        const double       squareBorder = 25.0;

        readonly Sheet     sheet;
        readonly Parameter parameter;

        public WriteableBitmap Bitmap
        {
            get { return sheet.Bitmap; }
        }

        public Mandelbrot(IntRectangle position, Color backgroundColor = new Color())
        {
            sheet          = new Sheet(position.Size, backgroundColor);
            this.parameter = new Parameter(size: position.Size);
        }

        public Mandelbrot(IntRectangle position, Parameter parameter, Color backgroundColor = new Color())
        {
            sheet          = new Sheet(position.Size, backgroundColor);
            this.parameter = parameter;
        }

        public void Draw(Palette palette)
        {
            var point = new Graph.IntVector();
            for (point.Y = 0; point.Y < parameter.Size.Height; point.Y++) {
                for (point.X = 0; point.X < this.parameter.Size.Width; point.X++) {
                    var a = parameter.Position + new Vector { X = point.X, Y = -point.Y } * parameter.Ratio;
                    SetPixel(point, GetCount(a), palette);
                }
            }
        }

        int GetCount(Vector a)
        {
            var square = new Vector();
            var point  = new Vector();
            var count  = 0;
            do {
                point  = new Vector { X = square.X - square.Y + a.X, Y = 2.0 * point.X * point.Y + a.Y };
                square = point * point;
                count++;
            } while (square.X + square.Y < squareBorder && count <= parameter.Maximum);
            return count < parameter.Maximum ? count : 0;
        }

        void SetPixel(IntVector point, int count, Palette palette)
        {
            sheet.SetPixel(point, palette[ToColorIndex(count, palette.Size)]);
        }

        static int ToColorIndex(int colorNumber,  int paletteSize)
        {
            var colorIndexNumber = paletteSize * 2 - 2;
            var colorIndex       = colorNumber % colorIndexNumber;
            if (colorIndex >= paletteSize)
                colorIndex = colorIndexNumber - colorIndex;
            return colorIndex;
        }
    }

    class MainProgram
    {
        public static async Task RunAsync(IntRectangle canvasPosition, Image image)
        {
            await Window.Current.Dispatcher.RunIdleAsync(e => image.Source = DrawMandelbrot(canvasPosition));
        }

        static Palette GetPalette()
        {
            var palette = new Graph.Palette(16);
            palette[ 0] = new Color { R = 0x02, G = 0x08, B = 0x80 };
            palette[ 1] = new Color { R = 0x10, G = 0x10, B = 0x70 };
            palette[ 2] = new Color { R = 0x20, G = 0x18, B = 0x60 };
            palette[ 3] = new Color { R = 0x30, G = 0x20, B = 0x50 };
            palette[ 4] = new Color { R = 0x40, G = 0x28, B = 0x40 };
            palette[ 5] = new Color { R = 0x50, G = 0x30, B = 0x30 };
            palette[ 6] = new Color { R = 0x60, G = 0x38, B = 0x20 };
            palette[ 7] = new Color { R = 0x70, G = 0x40, B = 0x10 };
            palette[ 8] = new Color { R = 0x80, G = 0x48, B = 0x0e };
            palette[ 9] = new Color { R = 0x90, G = 0x50, B = 0x0c };
            palette[10] = new Color { R = 0xa0, G = 0x58, B = 0x0a };
            palette[11] = new Color { R = 0xb0, G = 0x60, B = 0x08 };
            palette[12] = new Color { R = 0xc0, G = 0x68, B = 0x06 };
            palette[13] = new Color { R = 0xd0, G = 0x70, B = 0x04 };
            palette[14] = new Color { R = 0xe8, G = 0x78, B = 0x02 };
            palette[15] = new Color { R = 0xff, G = 0x80, B = 0x01 };
            return palette;
        }

        static WriteableBitmap DrawMandelbrot(IntRectangle canvasPosition)
        {
            var mandelbrot = new Mandelbrot(position: canvasPosition, backgroundColor: Colors.MidnightBlue);
            mandelbrot.Draw(GetPalette());
            return mandelbrot.Bitmap;
        }
    }
}

実行結果もほぼ変わらない。

MandelbrotSample.WindowsStore
MandelbrotSample.WindowsStore

 


SP水曜劇場・SPナイトシアターで一週間にわたって放送させて頂いた小松利昌ソロコントライブ「コマツマツリ2006」のナイトシアター版のOP&ENDムービーをYou tubeにUP致しました!
放送をご覧になった方もご覧になってない方も是非御覧くださいませ。
この舞台映像はナイトシアターでは初めての自分の撮影編集の舞台映像だったので解説書きながら撮影当時のこととか色々思い出しました。
当時の舞台の熱気が少しでも伝われば幸いです♪

Tweet

⇒今だけ初回限定40%オフ!送料無料も話題の酵母ダイエットくわしくはこちらから!

シリーズ累計1億食突破!<日本初>W酵母配合【新・ダイエットサポート酵母サプ リ!】プレミアム酵母

酵母決定版「プレミアム酵母」

新・ダイエットサポート酵母サプリ

スーパー痩せ菌で話題の菌活ダイエット!

【シリーズ累計1億食突破!!】

 公式サイトにリンクしています。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 


おいしいものを食べながら痩せたい人に!!
酵母ダイエットの決定版「プレミアム酵母」!

日本初のW酵母が糖質を発酵分解&満腹感をサポート。
2つの酵母の働きで肥満のもと炭水化物を分解し
自然と腹八分目のスリムな食習慣をサポート。
毎日サッと飲むだけで、どなたでも簡単に
炭水化物太りにさよならできます!

ムリせず痩せたい方にこそオススメしたい
新・ダイエットサポート酵母サプリです!

・炭水化物が大好き
・ついつい食べ過ぎてしまう
・間食がやめられない
・外食や飲み会が多い
・食事を我慢したくない
・激しい運動やツライ食事制限はしたくない

■1日2包を2回に分けてお飲みすることをオススメしています。

糖質分解をしてくれる生きてる酵母と
食べたい気持ちを抑えてくれる酵母ペプチドDNF-10を配合しています。

さらにグルコマンナンを配合し、スッキリキレイへ導きます。

生きてる酵母には、アミノ酸・ビタミン・ミネラル・食物繊維・核酸・β?グルカンなど
ダイエットをサポートする栄養素が含まれています。

ダイエットだけではなく、腸内環境の改善や美肌も期待できます。


【初回限定!40%OFFの定期トライアル販売中】
 
通常販売価格6400円のところ
 特別価格 40%OFF 3800円にて販売中!(お一人様1個・初回のみ)

⇒今だけ初回限定40%オフ!送料無料も話題の酵母ダイエットくわしくはこちらから!

 公式サイトにリンクしています。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 


 
しっかりと実感していただきたいので定期コースの販売となっております。
 
購入回数ごとに割引率がアップして3回目以降からは毎回20%割引に。
※定期コースはいつでも変更解約OK!

1億食販売した酵母サプリがパワーアップして新登場!
継続してお飲みいただくことで、より実感して頂ける商品です。

“健康的に美しく”を目指す皆さまのために。

★「糖質分解酵母」が発酵分解! 砂糖水のカロリーが「0」に!※映像および数値は、ビーカーによる実験結果で、体内の様子ではありません酵母は糖質が大好物!糖質を食べて、水、炭酸ガス、酢酸などに分解し、余分な糖質をカットしてくれます。
砂糖水の入ったビーカーに、生きている「糖質分解酵母」をいれると、約2時間で、砂糖水(20kcal)のカロリーが0になります。これが酵母の力です。

★「満腹感キープ酵母」が“お腹いっぱい!”をサポート。満腹感キープ酵母のひとつ、新ダイエットサポート成分「酵母ペプチドDNF-10」が、食べたい気持ちにアプローチ。食べ過ぎない食生活をサポート。
さらに満腹感キープ酵母に含まれるグルコマンナンがお腹の中で最大約200倍にふくれ、食べる量をセーブ。
ついつい食べてしまう間食も抑えます。
満腹感が続くから、「食べたい」という気持ちからすっきり解放!気づけば腹八分目が習慣に!

★生きて腸まで届いた酵母が、スッキリキレイをサポート。
さらに食物繊維が体を内側からキレイにスッキリ快腸へ導きます。
酵母は体の中に入ると、様々な働きともに美容のコンディションを高めます。
夕方までイキイキが続く!若々しくハリのある毎日にも注目してみてください。

⇒今だけ初回限定40%オフ!送料無料も話題の酵母ダイエットくわしくはこちらから!

 公式サイトにリンクしています。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 


◆◇シリーズ累計一億食突破!W酵母でダイエットサポート◇◆ 

おいしいものを食べながら痩せたい!!
そこのあなた!まずはお試しを!
『プレミアム酵母』は今流行の満腹感キープ酵母です!

●3ヶ月で体重-11kg 、ウエスト-14cm達成!
★H.Rさん 東京都 51歳食べることが大好きな私でも腹八分目で満足に♪ 2ヶ月で「まるで別人」!酵母を飲むだけなので、ストレスも手間もなく、とてもダイエットしやすいアイテムと思います。
今までは、ついつい食べ過ぎたり間食をしてたり、過度な食事制限でリバウンドしたりと失敗続き...
プレミアム酵母は、すごくお腹が空いている時に飲むと、空腹感がおさまって、腹八分目ですむのでとっても助かっています!
朝と晩の1日2回、毎日飲み続けたら、目標だった-10kg以上痩せられて大満足です!
娘には「痩せるとキレイに見えるね!」と褒められて上機嫌です。
まだまだこれから!オシャレを楽しみたいと思います!


●炭水化物(糖質)は体内でブドウ糖に分解され、血液に取り込まれます。血液中のブドウ糖が増えすぎると、インスリンというホルモンが分泌され、インスリンが増えると、ブドウ糖は血管の外へ追い出され、細胞に取り込まれます。その取り込まれた一部は脂肪に姿を変え、皮下脂肪として蓄積され、太っていくのです。

食事誘導性体熱産生という、消化するのにかかるエネルギーがたんぱく質に比べ炭水化物は1/3程度。肉類は、食べながらにしてカロリーを消費するのに対し、炭水化物は食べた分がほとんどそのままカロリーに。
さらに満腹になりづらい性質があり、ついつい食べ過ぎてしまう人も多いのではないでしょうか。

★W酵母が「糖質分解」と「満腹感キープ」をサポート!
今まで通りの食生活でも自然とスリムへ導きます。

●食べ物で酵素を摂ることはできますが、必要な量を摂るのは大変。なぜなら、酵素は熱に弱く、消化器官で分解されてしまうのです。
また、酵素はそれぞれ1つの仕事しかすることができません。デンプン質やたんぱく室を分解する「アミラーゼ」は、脂質を分解することはできません。3000種類もある酵素を摂ることはほとんど不可能に近いでしょう。
「酵素」の母である「酵母」なら、体の中でいくつもの「酵素」をうみ出してくれるのです。

●抹茶特殊コーティングで酵母が
休眠。生きて腸まで届く!
実は、コーティングは抹茶。熱や胃酸に負けないように、生きてる酵母をコーティング。眠っているだけだから、一定の条件で元気に活動開始!

目覚めた生きてる酵母が
大活躍!
目覚めた酵母が発酵分解に大活躍。
生きているからこその実力を実感!

目覚めた酵母はオリジナルの
活きた酵素を生み出し中!
酵素の母と言われる酵母は、酵素を効果的に生み出します。酵素の力でなりたい自分を後押し!

⇒今だけ初回限定40%オフ!送料無料も話題の酵母ダイエットくわしくはこちらから!

 公式サイトにリンクしています。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

●プレミアム酵母口コミ効果評判評価レビュー

★最初はちょっと飲みにくいかなと思いましたが、すぐに飲み込んでしまえば気にならない程度でした。
飲み始めてから、便秘がちだったのが毎日出るようになってスッキリした気がします!
そのおかげもあってか、ウエストが6.5cmも細く!体重より見た目が変わってくれたので、友人からも羨ましがられています!

★炭水化物や甘いものetc食べるのが大好き?なワタシにとって、このサプリは救世主のような存在!!
食事の前に飲むだけで、食べ過ぎるのを防いでくれます。
食べるのをガマンしなくていいので長く続けられそう(^^)
体重計に乗るのが楽しみになっています!

★40代になって、急に体重が減らなくなって…
流行の酵素とか、糖質カットとか、もちろん色々試したけれど、結局食べ過ぎちゃってリバウンド。 もうダメかなと思っていたときに、「日本初のW酵素」ダイエットと聞いてチャレンジしました。
飲むと必ず便通があり、毎日飲んでいます。
いつも通りの生活、食事なのに、飲むだけで体重も少し減って来たので、
これからもずっと飲み続けいていこうと思います!

★今までは、お腹が空くのが耐えられなくて、食べ過ぎては後悔の繰り返し。
30歳を過ぎてからは、今までのダイエットも効果なしで、ずーっと太ったままかなーと思っていました。
ところが、このサプリを飲んだら空腹が辛くない!!1ヶ月で5kg、2ヶ月で6.4kgほどのダイエットに成功しました。頑固なお腹も調子がよくなり、お肌の調子も良くなって嬉しい♪
もう少し体重を落としたいので、酵母を飲んで頑張ります!

★体重-5.7 ウエスト-4 ヒップ-1.5

飲み始めて1ヵ月が経過しました。普段よりお通じの回数が増え、飲んだら満腹感も出るので体がスッキリした感じ。
周りの人らかも「やせた?」と聞かれます。
ウエストが緩くなったのもうれしいですが、ブーツまで緩くなったのには驚き!美脚、めざします(笑)
糖質カットもできて、満腹感が続くダイエットって、今までになかったですよね!
携帯しやすいサイズなので飲み忘れ防止にも一役買ってくれるのもうれしいですね!

★体重-2.2 ウエスト0 ヒップ-2.7

飲み始めて1ヵ月…(・ω・`)酵母のおかげか、あまり食べなくなりましたー!!ちょっと食べ過ぎたかなと思った日も体重はそのまま…!!
増えていないのがすごいふしぎ(゜д゚)!!!
確かに、お腹いっぱいだと食べ過ぎないし、スリムの近道ですよね?
これからも飲み続けて、内からの変化も楽しみにしながら、マイペースにダイエットがんばります?

★体重-1.2 ウエスト2 ヒップ0

今までいろんなダイエットにチャレンジしてきましたが、このサプリを飲んでから腰回りのお肉が落ちてスッキリ!!
お肌の調子も良くて快腸です。
40代でもまだまだキレイになれるっ。諦めないでよかった!酵母って苦くておいしくなーいっと思っていましたが、飲んでみると身体がポカポカして、身体の中からキレイになっていくような気がしています。安心減量で長く続けていきたいです。

★体重-3 ウエスト-6.5 ヒップ-5

会社から家が遠いので、ガマンできずついつい間食をしてしまいがちでしたが、ガマンできるようになりました!会社を出る前にプレミアム酵母を飲んで、コンビニに立ち寄ると、不思議!ムダな買い物をしなくなりました!今まではカップラーメンとか、プリンとか、夜に向けて買い込んでしまっていたけど、今はほとんど買いません。
ストレス無く、食べたい気持ちから解放されるって清々しいですね(笑)他にも出たり出なかったりのお腹でしたが、だんだんと調子が整い始めました。

★体重-2.4 ウエスト-4 ヒップ-1

お昼の少し前に飲んでから、いつもと同じように食事をしました。
普段なら夕方に口さみしくなってお菓子などを食べたくなるのが、すっかり忘れるほど、腹持ちがいい感じです。それに、いつもと同じ食事だとお腹いっぱい感があるので、少し減らせそうです。
食べてしまった分も酵母パワーが働くから、安心感もありますね。お守り的にのみ続けたいです。

★体重-2 ウエスト-4 ヒップ-2

最初は少し飲み慣れない感じがありましたが、慣れれば気にならなくなりました。
多めの水分を摂るとお腹が膨れる感覚があり、食べる量が少し減りました!
水分多めがポイントかな?お通じもよくなりました。

●酵母の健康パワーと美容パワーに注目し研究をつづけ、2006年に酵母サプリを発売。累計1億食以上も販売させていただき、酵母の良さを多くの方々に体感していただくことができました。しかし、多くの方々から喜びのお声をいただく一方で「もっと早く結果を出したい!」とのお声を頂くこともありました。私自身も食べることが大好きで大の酒好き。〆のラーメンは大盛り派といった状況で、気付いたら10kg以上も太ってしまいました。当然、中性脂肪や悪玉コレステロール値の数値も基準値を大きく上回り、健康診断の度、再検査に伺う始末でした。心配した家内から「子供がまだ小さいのに、健康食品を販売する人間が不健康で倒れてどうするのよ。」とキツイ言葉を度々かけられ、このままではご愛顧頂いているお客様への顔向けができないと一念発起、開発に取り掛かったのです。そんな家内も二人目を出産後の産後太りが戻らず「痩せたい!」といつも言っていました。

●そんな自分たちや、ダイエットに成功できないお客様と、とことんお話をさせていただくうちに「ダイエットができない人の共通点」を発見したのです。それは「無意識のうちに、ついつい食べ過ぎてしまう」「空腹感が我慢できない」ということです。
従来の酵母サプリの特徴は「糖質分解」のみでした。つまり、酵母の働き以上に食べ過ぎてしまえば、当然ダイエットは成功しません。
それでは、一体どうしたらいいのか?そこで着目したのが、
まず「空腹感を減らし、満足感を持続させる」ことだったのです。

●8年間の酵母研究の上に立ち、「空腹感を減らし、満足感を持続させる」を目的に誕生したのが「満腹感キープ酵母」でした。食べたい気持ちをセーブし、食べ過ぎない生活へ導いてくれる「酵母ペプチドDNF-10」に、お腹の中で膨らむ「グルコマンナン」をプラスした「満腹感キープ酵母」を摂取すると満足感が続くことが分かりました。
それにより自然と「腹八分目」に抑えられ満腹感が持続する、ダイエット成功のために欲しかった実感が生まれたのです。
さらに「糖質分解酵母」が発酵分解に活躍。2つの酵母がダイエットを成功に導く、日本初のW酵母サプリメント「プレミアム酵母」がついに誕生したのです。

●家内にキツイ一言を頂いた私ですが、実際に「プレミアム酵母」を試してみて、我ながら驚きました。自然と食べる量が減っていったのです。食後に飲むとお腹いっぱいが続くので間食をしなくなったんです。飲んだ後のラーメンもほとんど食べる気がなくなり、1週間くらいで体重に変化が!体が軽くなり、軽い運動も楽しくできるようになりました。
一緒に飲み始めた家内も順調にダイエットに成功し、-5kgの減量に成功。以前の体重にもどってママ友と明るく楽しんでいます(笑)
家内曰く「我慢していないから、ストレスがない」「飲むだけで簡単だから忙しくても続けられる」ことが、成功の秘訣だったようです。
さらに喜んでいたのが、便秘気味だったお腹がスッキリし、そのおかげかお肌の調子もよくなったとのこと。これには私も驚きました。
私自身も半年で-10kgのダイエットに成功し、各数値も基準値内におさまるようになりました。家内から「結婚当初に戻ったみたい(笑)」とほめられました。

⇒今だけ初回限定40%オフ!送料無料も話題の酵母ダイエットくわしくはこちらから!

 公式サイトにリンクしています。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

■よくある質問

プレミアム酵母は何にいいのですか?
糖質分解酵母の発酵分解と食べたい気持ちをカットする満腹感キープ酵母で、
健康と美容にオススメな腹八分目の食生活をしっかりサポート。お客様のスリムライフをお手伝いします。
Q プレミアム酵母には何が入っているのですか?
乾燥酵母、グルコマンナン、乳糖、抹茶、酵母ペプチド、オリゴ糖、じゃがいも抽出物、ビフィズス菌、炭酸カルシウムが入っています。
※原材料の一部に乳成分を含みます。
Q どんな栄養成分が入っているのですか?
酵母菌は酵素の産みの母と言われるほど、たくさんの酵素を作りだしてくれます。また、良質なタンパク質や、ビタミンB群、ミネラル類、アミノ酸、核酸、ビフィズス菌、食物繊維などが含まれます。
Q いつ飲めばいいのですか?
食品ですので特に決まりはありません。食前・食後など、毎日決まったタイミングでお飲みいただくことをオススメします。
Q どうやって飲むのがいいのですか?
1包につきコップ1杯(200cc目安)くらいのお水で、そのままお飲みください。
※熱い飲み物(60℃以上)はお避けください。酵母が活動できなくなってしまいます。
Q 1日にどのくらい飲めばいいのですか?
食品ですので特に決まりはありません。1日 1~ 3包をお客様のライフスタイルに合わせてお飲みください。
Q 飲み過ぎによる害はありますか?
食品ですので害はありませんが、一度に大量に摂るとお腹が張ってしまったり、ゆるくなる場合があります。 その際は飲む量を減らして調節してみてください。
Q 味やにおいは?
口の中で溶けた時や、温かいものに混ぜた際に酵母独特のにおいがあります。
酵素食品・酵素飲料と似ています。これは酵母が生きている証拠なので、安心してお召し上がりください。
Q どのくらいで効果が出ますか?
お客様のライフスタイルや食事内容などによって体感時期が違います。
継続することにより結果を得ている方が多いです。
Q 子どもやお年寄りでも大丈夫ですか?
食品ですので、安心してお召し上がりください。ただし、乳幼児の摂取はお控えください。
Q お腹が緩くなりました。
グルコマンナンと酵母の働きによるものです。飲む量を減らして調節してみてください。
Q ゲップが出るのですが…/お腹が張るのですが…
酵母が発酵分解する時に発生する炭酸ガスによるものです。
気になるようでしたら飲む量やタイミング、回数を調整してください。
Q お薬と併用しても大丈夫ですか?
食品ですので特に問題はございません。
ご心配でしたら、医師や薬剤師の方にご相談のうえ、お召し上がりください。
Q 妊娠中や授乳中に飲んでも大丈夫ですか?
食品ですので特に問題はございません。
ご心配でしたら、医師や薬剤師の方にご相談のうえ、お召し上がりください。

■商品名:プレミアム酵母
容量:81g(2.7g×30包)
原材料:乾燥酵母、グルコマンナン、乳糖、抹茶、酵母ペプチド、オリゴ糖、じゃがいも抽出物、ビフィズス菌、炭酸カルシウム、(原材料の一部に乳成分を含む)
●「プレミアム酵母」を初めてご購入のお客様ご本人様1回限りになります(同一住所は1回限り)。
● お試しコースとは1ヶ月毎にお届けする定期便のお試しコースです。
定期便はいつでも(お届け予定日の7日前まで) 変更・停止OKですのでご安心してご利用ください。
2回目からはお客様のペースにあわせてお届け間隔も自由に変更できます。
● 次回からは通常価格よりお届け回数に応じた割引率[1回目(次回)10%割引・2回目15%割引・3回目20%割引]にて
1ヶ月毎にお届けします。
●「プレミアム酵母」をお求めいただいた方には、お得な情報をメール等でご案内いたします。

 公式サイトにリンクしています。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

 ⇒今だけ初回限定40%オフ!送料無料も話題の酵母ダイエットくわしくはこちらから!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


プレミアム酵母 口コミ
プレミアム酵母 効果
プレミアム酵母 アットコスメ
プレミアム酵母 アフィリエイト
プレミアム酵母 痩せない
プレミアム酵母 解約
プレミアム酵母 ログイン
プレミアム酵母 副作用
プレミアム酵母
プレミアム酵母口コミ
プレミアム酵母 飲み方
プレミアム酵母 楽天
プレミアム酵母 ブログ
プレミアム酵母 痩せた
酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解酵母 プレミアム ダイエット 酵素 効果 kg 糖質 楽天 http www 口コミ com お試し 購入 食事 サプリ 満腹感 サイト 分解

f:id:basarara:20170701093835j:plain

こんにちは佐藤です。

 

毎日の中でお昼ごはんを食べた後、午後からの授業や仕事で寝てしまいそうになることってありませんか?

 

私は午後からミーティングだったり講演会だったりすると、確実に寝むたくなってしまうのです

 

机を挟んで向かいの人が私より先にコックリ、コックリしてくれると、ハッと目がさめることもありますが・・・

 

話を聴くだけの講演会などだと、すごく大切な話をしてくれているのはわかってるのに眠気に勝てなくなる時がありますね。

 

お昼ご飯をいっぱい食べると、消化のために脳にいく血液が減ってしまうからとばかり思っていましたがそれだけではなく、人間は午前の2~4時の間と午後の2~4時の間に眠たくなるようにできているようです。

 

知人の勧めで仮眠をとるようにしてみてるのですが、お昼やすみの最後に軽く15分仮眠をとるだけでも、午後からの集中力が全然変わります。

 

仮眠をとる時はできるだけ、音と光を遮断できるようします。

 

とてもいいのは車です。止めてある車の中は意外と音が遮断されて、仮眠をとるにはいい環境です。

 

光の遮断にはアイマスクを用意して、つけるようにします。アラームのセットを忘れずに!

 

とは言っても、営業マンなどで移動に車を使われてたりすると、可能かもしれませんが

事務所で仕事をされてる場合は難しいですよね。

 

そんな時は目を瞑るだけでもかなりの効果があります。

 

目が開いてると何も考えているつもりはなくても、脳は危険などを察知するために

常に働いています。目を瞑ることで脳の休息になるのです。

 

仮眠をとる時に心配なのは起きれるかどうか?ですよね。

 

体は密着してる部分が多ければ多いほど緊張が解けて、眠ってしまいます。

仮眠の時は15分で起きれなくてはいけませんから

 

ソファの横にはならず、椅子に座ってとか

ベットには寝ないで床に転がるなど気をつけないといけません

 

横になったらぐっすりねちゃうけど、立ったまま寝たらハッと目が覚めますよね。

 

重要なのは目をつぶって、15分脳を休ませるということです。

 

毎日色々な環境に置かれることと思いますが、仮眠をとることは午後からの集中力

にとても影響してきます。

 

できたら14~16時の間に仮眠が取れると良いですが、仕事などで時間が取れない時は

先取りでお昼休みの最後にちょっと仮眠を入れてみて下さい。

 

今日も最後まで読んでいただいてありがとうございました。

 

 

 

 

 

 

 

 

 

 

 

 

 

www.reddit.com

ドクターイエローはご存知ですか?

新幹線の線路や架線を検査する、

メンテナンス用車両です。

 

これ、JR東海を走ってるんですかね?

 

新幹線の線路を走りながら検査を行うというすぐれもの。

 

みんな知りたい! ドクターイエローのひみつ (世の中への扉)

 

見た目が黄色っていうのが主な特徴です。

 

今のドクターイエローは、700系がベースになっているそうで

昔は0系タイプのもあったみたいです。

 

S-12 ライト付922形 ドクターイエローT3編成

 

さて、この非常に目立つ「ドクターイエロー」ですが

これってなぜ黄色なんでしょうか。。

 

 

★ドクターイエローが黄色の理由 その1

 

1つは、このドクターイエローも普通の新幹線同様に

線路を走って検査をするわけですから、当然駅にも入ってきます。

 

そこで問題になるのが、駅で待っている人が間違えて乗ろうとすること。

まあ・・ドアが開かない・・もしくは一部の扉しか開かないとは思いますけど(笑)

 

走ってくる時点で「あ、これは違うんだ」とわかるように

普通の新幹線の「青・白」とは違う色を塗ったんだとか。

 

まあ黄色なら目立ちますから

すぐにわかりますよね。

 

 

★ドクターイエローが黄色の理由 その2

 

では、普通の新幹線とは違う色を塗るときに

なぜ「黄色」だったのか

ということですが、

 

保守に使われる車両というのは基本的に黄色にカラーリングされているそうです。

その理由はもちろん目立つから。

 

夜間の作業も頻繁にあり、目立たせることで少しでも危険を回避するためと

思われます。

 

またそもそも黄色には「警戒せよ」という意味が国際的にも使われている色ですので

黄色を保守の車両に使うのは当たり前かなと思います。

 

 

★JR東日本

 

ちなみにJR東日本ではメンテナンス用は「イーストアイ」という車両で

黄色ではありませんね。

 

プラレール S-09 ライト付イーストアイ

 

 

白に赤のライン。

 

え〜と、通常の新幹線と違う・・

のかもしれませんが、秋田新幹線こまちが似た色ですよねぇ。

 

サウンドトレイン 新幹線E6系スーパーこまち

 

 

あと、似たような話で、

「目立たせたくない」ようなときには、紫色が使用されるとか。

 

「試作車」なんかが紫にされることが多いらしいです。

へぇ〜〜

The Physics of Living Systems

de Rating : 3.8 of 5 stars from 375 Reviewers

The Physics of Living Systems pdf - The Physics of Living Systems a été écrit par Author : Fabrizio Cleri qui connu comme un auteur et ont écrit beaucoup de livres intéressants avec une grande narration. The Physics of Living Systems a été l'un des livres de populer sur 2016. Il contient 659 pages et disponible sur format E-book, Hardcover. Ce livre a été très surpris en raison de sa note rating et a obtenu environ 375 avis des utilisateurs. Donc, après avoir terminé la lecture de ce livre, je recommande aux lecteurs de ne pas sous-estimer ce grand livre. Vous devez prendre The Physics of Living Systems que votre liste de lecture ou vous serez regretter parce que vous ne l'avez pas lu encore dans votre vie.

Télécharger The Physics of Living Systems de Fabrizio Cleri PDF. Voici les informations de détail sur The Physics of Living Systems comme votre référence.
Titre original:The Physics of Living Systems
Auteur:Fabrizio Cleri
Languange:Anglais
ISBN:3319306456
Format Type:E-book, Hardcover
Nombre de pages:659 pages
Catégories:Molecular Biology

いまや泣く子も黙る「週刊文春」。週刊文春の読書欄「文春図書館」で1頁分を受け持つ坪内正三さんのコラム「文庫本を狙え」が文庫本になってお目見えしました。

f:id:tanazashi:20161011165327j:plain

 

「文庫本を狙え!」坪内正三 著(筑摩書房)

「週刊文春」誌上で20年に及ぶ長期連載をつづける坪内祐三「文庫本を狙え!」。本書はその原型ともいうべきスタートから171回分を収録。古典的名作からサブカル・雑本など、毎月次々と刊行される文庫本のヤマのなかから、おすすめの1冊を毎週選び出す。かつては新刊書評であったものが、20年たつことで絶好の古本案内としても読むことができる。

週刊文春「文春図書館」の名物コーナー(現在909回)を他社が書籍化するのはなぜ?という疑問はさておいて、20年間にわたり毎週一冊の文庫本を取り上げ解説するエネルギーはハンパなものではありません。今年話題になった「こち亀」が40年ですから、もう半分まで来ています。著者の坪内さんは58歳ですからファンの読者はまだまだ楽しめそうです。

f:id:tanazashi:20161011172215j:plain

書評というと、一冊の本を読み通すのも時間と手間がかかりますが、坪内書評の特徴は膨大な引用にあります。引用する本まで目を通していることを考えると気が遠くなります。インターネット上で私たちが目にする情報は爆発的にふくれあがっています。そのためどの本を選んだらいいか迷う読者も増えていると聞きます。そこで頼りになるのがキュレーター*1だと言われています。坪内さんの書評の特徴は、いわば「タグ付け*2」です。記事に興味を持った人に対して、参照先を指し示すという構造が貫かれているところに、利便性を感じる読者がつくのではないかと思います。

しかし、これだけの情報量をいつどこでどのようにして仕込んだのでしょうか気になります? 

1990年の秋まで「東京人」という雑誌の編集者を約3年間やるんだけど、その前後はニート。大学院を出た直後と、30代前半です。そのときに、それこそ時間つぶしに、毎日、早稲田大学の図書館に入り浸って、明治、大正、昭和のいままで書かれていない面白い出来事や人物を、古い雑誌などから探していた。

早稲田の図書館は、関東大震災でも空襲でも焼けてないから、震災以前の資料が残っているんです。東大の図書館は関東大震災で燃え尽きちゃったわけだけど。

そもそも明治、大正に興味を持ったのは僕の師匠である山口昌男先生の影響です。先生が当時、明治、大正の文化史の読み直しをされていた。世に出ている史実は、時代の主流ばかりで、そこから外れたインディペンデントでしかも面白い仕事をした人の話って、その人が死んじゃうと消えちゃうんですね。

評論家・作家 坪内祐三さん | プレジデントオンライン | PRESIDENT Online

長期連載の背景には長距離走者にも似た基礎トレーニングがあったことを知りました。 

*1:図書館、公文書館のような資料蓄積型文化施設において、施設の収集する資料に関する鑑定や研究を行い、学術的専門知識をもって業務の管理監督を行う専門職、管理職を指す

*2:ファイルや情報にタグ(tag)と呼ばれる短い単語やフレーズを付けて整理する手法

Outback Bowl 2016  live stream free