目標達成するためのマンダラチャートの書き方

2022年も残り少なくなってきました。

僕自身今年をふり返ってみるとAWSのソリューションアーキテクトの資格を取得したり、家庭菜園を始めたり、はたまた突然無職になったり・・・いろいろなことがあった1年でした。

この1年をふりかえってみると、他にもやりたいことが頭の中にあって「これをやりたい!」と思っていたものの、忙殺される日々を過ごしているうちに忘れてしまっていて、あれ?なんて気がついた時にはもう年末。一体今年は何してたんだ?と思うことも当然あります。

来年こそ目標を達成する年にするため、年始にいきなりきめるとなるとなかなかすぐに浮かばないので今のうちからぼんやり考えるといいかもですね。

そんな時には「マンダラチャート」を使って可視化するのがオススメです。

マンダラチャートとその書き方

マンダラチャートとは9×9のマスで構成される表をさらに3×3で区切り、中心の3×3マスの中央に成し遂げたい目標、その中心周りの3×3マスには必要な要素を書き、その周りの3×3のマスにその目標を達成するためのアイデアや要素などを記入してゆく目標設定手法です。

文字で説明するとなんかわかりづらいですけど、実際の表を見てもらうとなんとなくわかっていただけるんじゃないかなと思います。

ステップ的には3つ

  1. 最中央に達成したい目標を書く
  2. 目標に必要な要素8つを書く
  3. その必要なことにさらに必要な要素を8つ書く

あと、8つも要素うめれないという人は全部埋めなくても全く問題ないです。

書ける範囲で無理せず書いてみると良いと思います。

思考の整理

自身の思考の整理になるところがこのチャートを書くメリットですね。

目標達成に必要な要素とその要素に必要な要素...と行動目標が細分化されているのでじゃあ取り組みするときに具体的に何をするのかということを考えやすいというのもあります。

人は目標を大きくしがちなので細分化して少しずつ達成してゆくというのを可視化できるのはメリットになりうる部分じゃないかなと思うところです。

2023年の僕のマンダラチャート

空欄が目立つ笑

とはいえ2023年も無理せずにいきましょうね

2~3日かけて書いてみたのですが、こうして書いてみると意外と書けないものです。 なるべく具体的に書いてみたものの(貯金をするなどはまだ具体的に決めていない)再考や追加が必要になりそうです。

もし年末、お時間が取れそうでしたらマンダラチャートぜひオススメです。

こちらのアプリが直接書き込みできて使いやすいのでぜひ使ってみてください

apps.apple.com

Go 定義編

Go 変数の宣言

初期値あり
    var i int = 1
    var f64 float64 = 1.2
    var s string = "test"
    var t bool = true
    var f bool = false
( )でまとめて定義することも可能
var (
    i    int     = 1
    f64  float64 = 1.2
    s    string  = "test"
    // ワンライナーで複数定義
    t, f bool    = true, false
)

期値なし

var i int
var f64 float64
var s string
var t bool
var f bool

Short variable declarations

  • varを省略可能
  • 関数内のみでしか宣言できない
  • 値から型を推測できるので省略可能
  • 明示的に型を宣言する場合はvarを使用して宣言する
  • 再代入可能だが再宣言は不可
func foo() {
    xi := 1
    xf64 := 1.2
    xs := "test"
    xt, xf := true, false
}

const

constの定義
const Pi = 3.14
( )でまとめて定義することも可能
const (
    Username = "test_user"
    Password = "test_pass"
)
オーバーフロー

型を定義した変数においてintで扱える最大数から計算をしようとするとオーバーフローする

var big int = 999999999999999999999 - 1
>>> untyped int constant 1000000000000000000000) as int value in variable declaration (overflows)

const定義の場合は明確に型を定義していないので 計算後に値をintとして出力することができるのでエラーにはならない

const big = 999999999999999999999 - 1
>>> 999999999999999999998

数値型

代表的な数値の型

uint8

int8

float32

complex64

var (
    u8  uint8     = 255
    i8  int8      = 127
    f32 float32   = 0.2
    c64 complex64 = -5 + 12i
  )
四則演算
fmt.Println("1 + 1 = ", 1+1)          >>> 1 + 1 =  2
fmt.Println("10 - 1 = ", 10-1)        >>> 10 - 1 =  9
fmt.Println("10 / 2 = ", 10/2)        >>> 10 / 2 =  5
fmt.Println("10 / 3 = ", 10/3)        >>> 10 / 3 =  3
fmt.Println("10.0 / 3 = ", 10.0/3)   >>> 10.0 / 3 =  3.3333333333333335
fmt.Println("10 / 3.0 = ", 10/3.0)   >>> 10 / 3.0 =  3.3333333333333335 
fmt.Println("10 % 2 = ", 10%2)         >>> 10 % 2 =  0
fmt.Println("10 % 3 = ", 10%3)   >>> 10 % 3 =  1
ビット演算子(シフト)
   x := 0
    fmt.Println(x)
    // x = x + 1
    x++
    fmt.Println(x)
    // x = x - 1
    x--
    fmt.Println(x)

文字列型

基本

fmt.Println("Hello World")
fmt.Println("Hello " + "World")
// ASCⅡ コード
fmt.Println("Hello World"[0]) 
>>> 72
fmt.Println(string("Hello World"[0])) 
>>> H
文字列の置換

*stringsパッケージをimportすること

下記例は変数stringをコピーして出力している(値渡し)

var s string = "Hello World"

fmt.Println(strings.Replace(s, "H", "X", 1))

>>> Xello World

// 参照渡しの場合
s = strings.Replace(s, "H", "X", 1)
文字を含むかの問合せ
fmt.Println(strings.Contains(s, "World"))
改行
fmt.Println("Test\n" + "Test")

// ``で囲う
fmt.Println(`Test2
 Test2
    Test2`)
"(ダブルクォーテーション)の出力
fmt.Println("\"")

fmt.Println(`"`)

論理値型

//var t, f bool = true, false
t, f := true, false
fmt.Printf("%T %v %t\n", t, t, t)
fmt.Printf("%T %v %t\n", f, f, t)
分離演算子
fmt.Println(true && true)   // true
fmt.Println(true && false)  // false
fmt.Println(false && false) // false

fmt.Println(true || true)   // true
fmt.Println(true || false)  // true
fmt.Println(false || false) // false

fmt.Println(!true)  // false
fmt.Println(!false) // true
# 型変換
##### int, floatの型変換
var x int = 1
xx := float64(x)
fmt.Printf("%T %v %f\n", xx, xx, xx) // float64 1 1.000000

    var y float64 = 1.2
    yy := int(y)
    // %dでintは表示できる
    fmt.Printf("%T %v %d\n", yy, yy, yy) // int 1 1

配列

package main

import "fmt"

func main(){
    //[2]intの部分が型となるので変更が効かない
    // 配列を宣言
    var a [2]int
    a[0] = 100
    a[1] = 200
    fmt.Println(a)
    
    // 初期値として値を入れる場合
    var b [2]int = [2]int{100, 200}
    fmt.Println(b)
    
    // var b [3]int = [3]int{100, 200}
    // b = append(b, 300) // errorになる
    
    var c []int = []int{100, 200}
    c = append(c, 300)
    fmt.Println(c)
}

Python用標準入力チートシート

はじめに

python用の標準入力でよく使うものを集めたチートシートです。 便利そうなものがあれば随時更新してゆきます。

標準入力のコーディングに必要な関数

input()

入力で与えられるフォーマットを文字列で取得

# 以下入力pを与えられるとすると
p

# pを取得してsに値を入れる
s = input()

# 出力
print(s) 
>>> p (str)

input関数で取得した時点ではstr(文字列)なので、計算などで使用する場合は型を変えてあげる必要がある。

# 入力
3

i = int(input()) # 3を取得してint(整数)に変更してiに値を挿入

print(s) # 出力: 3 (int)

split()

文字列を分割する関数

# 以下入力 a と b をスペースを挟んで与えられるとすると
a b

# a と b を取得して s にlist形式で入れる
s = input().split()

# 出力
print(s)
>>> ['a', 'b']

splitする数に合わせて変数を用意して直接変数に入れる方法もある。

# 以下入力 a と b をスペースを挟んで与えられるとすると
a b

# a と b を取得して x と y にそれぞれ値を入れる
x, y = input().split()

# 出力
print(x)
>>> a

print(y)
>>> b

map()

第一引数に適用する関数、第二引数にリストなどのイテラブルオブジェクトを指定

イテラブルオブジェクトとはfor文などで要素を1つずつ取り出して処理できるようなオブジェクトのことを指す。(listやdictなど)

# 以下入力 1 と 2 をスペースを挟んで与えられるとすると
1 2

# 1 と 2 を取得して x と y にそれぞれ値を入れ、それぞれint型にする
x, y = map(int, input().split())

# 出力
print(x)
>>> a (int)

print(y)
>>> b (int)

range()

0から連番を作成

for i in range(3):
    print(i)

>>> 1
>>> 2
>>> 3

リストを生成することも可能

li = list(range(3))

print(li)
>>> [0,1,2]

よくでる標準入力

よくでる標準入力をここにまとめる。

1行に1つの入力を整数で取得

# 以下入力 1を1行与えられるとすると
1

a = int(input())
print(a)
>>> a (int)

1行に複数ある入力を整数で取得

# 以下入力 1 と 2をスペースを挟んで1行で与えられるとする
1 2


# それぞれ変数に格納
a, b = int(input().split())
print(a)
>>> 1 (int)

print(b)
>>> 2 (int)


# リストで取得したい場合
li = int(input().split())
print(li)
>>> [1, 2]

複数行にわたって1行に1つの入力を整数でlist取得

行数が指定されている場合

# 以下入力 1~3を3行で与えられるとすると
1
2
3

# for文で3回入力を取得して整数に変換後、listにする
li = [int(input) for i in range(3)]

# print(li)
>>> [1, 2, 3]

行数が指定されていない(不明な)場合

# 以下入力 1~NをN行で与えられるとすると
1
2
3
...
N

while True:
    try:
        i = map(int, input())
        input_lines += i
    except EOFError:
        break

# print(li)
>>> [1, 2, 3]

:::note warn 補足 map()を使わずに i = int(input())としてもよさそうですが、繰り返しに使えないオブジェクト(ここでは整数)を繰り返し処理(ここでは +=)で使うことになり、TypeError: 'int' object is not iterable が発生するので必ず map() を使用する。 :::

複数行にわたって1行に複数の入力を整数でlist取得

行数が指定されている場合

# 以下入力 1~6を3行で2つずつスペースを挟んで与えられるとすると
1 2
3 4
5 6


r = []

# for文で3回入力を取得して整数に変換後、listにし二次元配列で格納する
li = [r.append(list(map(int, input().split()))) for i in range(3)]

# print(r)
>>> [[1, 2], [3, 4], [5, 5]]

行数が指定されていない(不明な)場合

# 以下入力 1~NをN行で与えられるとすると
1 2
3 4
5 6
...
N N

while True:
    try:
        r.append(list(map(int, input().split())))
    except EOFError:
        break

# print(r)
>>> [[1, 2], [3, 4], [5, 6]... [N, N]]

最後に

もし他にも便利な取得方法などがあれば教えていただれば幸いです。