├── .github └── FUNDING.yml ├── vuets ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── img │ │ └── icons │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── mstile-150x150.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon-60x60.png │ │ │ ├── apple-touch-icon-76x76.png │ │ │ ├── apple-touch-icon-120x120.png │ │ │ ├── apple-touch-icon-152x152.png │ │ │ ├── apple-touch-icon-180x180.png │ │ │ └── msapplication-icon-144x144.png │ ├── manifest.json │ └── index.html ├── .browserslistrc ├── cypress.json ├── babel.config.js ├── postcss.config.js ├── src │ ├── shims-vue.d.ts │ ├── assets │ │ └── logo.png │ ├── views │ │ ├── About.vue │ │ └── Home.vue │ ├── store.ts │ ├── main.ts │ ├── shims-tsx.d.ts │ ├── App.vue │ ├── router.ts │ ├── registerServiceWorker.ts │ └── components │ │ └── HelloWorld.vue ├── tests │ ├── e2e │ │ ├── specs │ │ │ └── test.js │ │ ├── plugins │ │ │ └── index.js │ │ └── support │ │ │ ├── index.js │ │ │ └── commands.js │ └── unit │ │ └── example.spec.ts ├── .gitignore ├── tslint.json ├── README.md ├── tsconfig.json └── package.json ├── frontend ├── htmlcssjs │ ├── lesson │ │ ├── javascript │ │ │ ├── lesson_media │ │ │ │ ├── 1 │ │ │ │ │ ├── images │ │ │ │ │ │ ├── photo_a.jpg │ │ │ │ │ │ └── photo_b.jpg │ │ │ │ │ ├── main.js │ │ │ │ │ ├── style.css │ │ │ │ │ └── lesson.html │ │ │ │ ├── 2 │ │ │ │ │ ├── images │ │ │ │ │ │ ├── photo_a.jpg │ │ │ │ │ │ ├── photo_b.jpg │ │ │ │ │ │ └── loading.svg │ │ │ │ │ ├── style.css │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ ├── 3 │ │ │ │ │ ├── images │ │ │ │ │ │ ├── photo-0.jpg │ │ │ │ │ │ ├── photo-1.jpg │ │ │ │ │ │ ├── photo-2.jpg │ │ │ │ │ │ ├── photo-3.jpg │ │ │ │ │ │ ├── photo-4.jpg │ │ │ │ │ │ ├── photo-5.jpg │ │ │ │ │ │ ├── photo-6.jpg │ │ │ │ │ │ ├── photo-7.jpg │ │ │ │ │ │ ├── photo-8.jpg │ │ │ │ │ │ ├── photo-9.jpg │ │ │ │ │ │ ├── photo-10.jpg │ │ │ │ │ │ └── photo-11.jpg │ │ │ │ │ ├── style.css │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ ├── 4 │ │ │ │ │ ├── main.js │ │ │ │ │ ├── style.css │ │ │ │ │ ├── music.mp3 │ │ │ │ │ └── lesson.html │ │ │ │ ├── 5 │ │ │ │ │ ├── main.js │ │ │ │ │ ├── style.css │ │ │ │ │ └── lesson.html │ │ │ │ ├── 6 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── lesson.html │ │ │ │ │ └── main.js │ │ │ │ ├── 7 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── lesson.html │ │ │ │ │ └── main.js │ │ │ │ ├── 8 │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ └── 9 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── sample.jpg │ │ │ │ │ ├── lesson.html │ │ │ │ │ └── main.js │ │ │ ├── task │ │ │ │ ├── 1 │ │ │ │ │ ├── main.js │ │ │ │ │ └── index.html │ │ │ │ ├── 2 │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.js │ │ │ │ ├── 3 │ │ │ │ │ ├── main.js │ │ │ │ │ └── index.html │ │ │ │ ├── 4 │ │ │ │ │ ├── main.js │ │ │ │ │ └── index.html │ │ │ │ ├── 5 │ │ │ │ │ ├── main.js │ │ │ │ │ └── index.html │ │ │ │ ├── 6 │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.js │ │ │ │ ├── 7 │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.js │ │ │ │ ├── 8 │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.js │ │ │ │ ├── 9 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.js │ │ │ │ ├── 10 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.js │ │ │ │ └── common │ │ │ │ │ └── style.css │ │ │ ├── lesson_normal │ │ │ │ ├── 1 │ │ │ │ │ ├── image │ │ │ │ │ │ ├── shohei.jpg │ │ │ │ │ │ └── loading.svg │ │ │ │ │ └── next_page.html │ │ │ │ ├── 2 │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ ├── 3 │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ ├── 4 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ ├── 5 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ │ └── 6 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── main.js │ │ │ │ │ └── lesson.html │ │ │ ├── lesson_animation │ │ │ │ ├── 1 │ │ │ │ │ ├── image │ │ │ │ │ │ ├── shohei.jpg │ │ │ │ │ │ └── loading.svg │ │ │ │ │ ├── style.css │ │ │ │ │ ├── lesson.html │ │ │ │ │ └── main.js │ │ │ │ ├── 2 │ │ │ │ │ ├── main.js │ │ │ │ │ ├── style.css │ │ │ │ │ └── lesson.html │ │ │ │ └── 3 │ │ │ │ │ ├── style.css │ │ │ │ │ ├── lesson.html │ │ │ │ │ └── main.js │ │ │ └── confirm │ │ │ │ └── confirm.html │ │ ├── htmlcss │ │ │ ├── image │ │ │ │ ├── bg.jpg │ │ │ │ ├── logo.jpg │ │ │ │ ├── shohei.jpg │ │ │ │ ├── bg-about.jpg │ │ │ │ ├── photograph-01.jpg │ │ │ │ ├── photograph-02.jpg │ │ │ │ ├── photograph-03.jpg │ │ │ │ ├── photograph-04.jpg │ │ │ │ ├── photograph-05.jpg │ │ │ │ ├── photograph-06.jpg │ │ │ │ ├── portfolio-photo.jpeg │ │ │ │ └── portfolio-video.jpeg │ │ │ └── lesson │ │ │ │ ├── common.html │ │ │ │ ├── index.html │ │ │ │ ├── video.html │ │ │ │ ├── about.html │ │ │ │ ├── portfolio.html │ │ │ │ ├── photograph.html │ │ │ │ └── contact.html │ │ └── jquery │ │ │ ├── image │ │ │ └── shohei.jpg │ │ │ ├── vender │ │ │ ├── jquery-ui-1.12.1.custom │ │ │ │ ├── images │ │ │ │ │ ├── ui-icons_444444_256x240.png │ │ │ │ │ ├── ui-icons_555555_256x240.png │ │ │ │ │ ├── ui-icons_777620_256x240.png │ │ │ │ │ ├── ui-icons_777777_256x240.png │ │ │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ │ │ └── ui-icons_ffffff_256x240.png │ │ │ │ ├── LICENSE.txt │ │ │ │ └── package.json │ │ │ └── liscroll │ │ │ │ ├── li-scroller.css │ │ │ │ └── jquery.li-scroller.1.0.js │ │ │ ├── next_page.html │ │ │ ├── css │ │ │ └── style.css │ │ │ ├── js │ │ │ └── main.js │ │ │ └── lesson.html │ └── README.md ├── vue-library-training │ ├── .browserslistrc │ ├── postcss.config.js │ ├── src │ │ ├── shims-vue.d.ts │ │ ├── assets │ │ │ ├── logo.png │ │ │ └── main.styl │ │ ├── views │ │ │ ├── vuerouter │ │ │ │ ├── VueRouterTopPage.vue │ │ │ │ ├── NotFoundPage.vue │ │ │ │ ├── VueRouterFirstPage.vue │ │ │ │ ├── VueRouterSecondPage.vue │ │ │ │ └── VueRouterAgendaPage.vue │ │ │ ├── TopPage.vue │ │ │ ├── vuetify │ │ │ │ ├── VuetifyChildPage1.vue │ │ │ │ └── VuetifyTopPage.vue │ │ │ └── dotenv │ │ │ │ └── DotenvLesson.vue │ │ ├── shims-tsx.d.ts │ │ ├── App.vue │ │ ├── main.ts │ │ ├── store.ts │ │ └── router.ts │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── vue.config.js │ ├── .gitignore │ ├── dotenvsample │ ├── tslint.json │ ├── tsconfig.json │ └── package.json ├── frontendkadai2 │ ├── babel.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── assets │ │ │ └── logo.png │ │ ├── main.js │ │ ├── App.vue │ │ └── components │ │ │ ├── InputForm.vue │ │ │ └── ToDoForm.vue │ ├── .gitignore │ ├── README.md │ └── package.json └── spa │ └── README.md ├── .gitattributes ├── backend └── firebase-training │ ├── .browserslistrc │ ├── .firebaserc │ ├── postcss.config.js │ ├── src │ ├── shims-vue.d.ts │ ├── assets │ │ ├── logo.png │ │ └── main.styl │ ├── ts │ │ ├── firebase │ │ │ ├── model │ │ │ │ ├── StorageFile.ts │ │ │ │ ├── StorageDetailFile.ts │ │ │ │ ├── Base.ts │ │ │ │ └── User.ts │ │ │ └── origin_model │ │ │ │ └── ShopItem.ts │ │ └── interface │ │ │ └── FileInfo.ts │ ├── store.ts │ ├── repository │ │ └── firebaseConfigSample.ts │ ├── shims-tsx.d.ts │ ├── App.vue │ ├── main.ts │ ├── views │ │ └── authentication │ │ │ └── AnonymouslyPage.vue │ └── router.ts │ ├── public │ ├── favicon.ico │ └── index.html │ ├── functions │ ├── src │ │ ├── Result.ts │ │ ├── router.ts │ │ ├── auth_router.ts │ │ ├── index.ts │ │ └── controller │ │ │ └── UserController.ts │ ├── .gitignore │ ├── tsconfig.json │ └── package.json │ ├── cors-json-file.json │ ├── README.md │ ├── .gitignore │ ├── firestore.indexes.json │ ├── firebase.json │ ├── tslint.json │ ├── tsconfig.json │ ├── package.json │ ├── storage.rules │ └── firestore.rules ├── index.html └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: 2 | - hukusuke1007 3 | -------------------------------------------------------------------------------- /vuets/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/4/main.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/4/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/5/main.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/5/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vuets/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /vuets/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginsFile": "tests/e2e/plugins/index.js" 3 | } 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /backend/firebase-training/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/10/style.css: -------------------------------------------------------------------------------- 1 | #result { 2 | font-size: 3.0em; 3 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/9/style.css: -------------------------------------------------------------------------------- 1 | #result { 2 | font-size: 3.0em; 3 | } -------------------------------------------------------------------------------- /frontend/vue-library-training/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /vuets/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /vuets/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /frontend/frontendkadai2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /backend/firebase-training/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "fir-training-ae8b1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /vuets/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | export default Vue; 4 | } 5 | -------------------------------------------------------------------------------- /backend/firebase-training/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /vuets/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/favicon.ico -------------------------------------------------------------------------------- /vuets/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/src/assets/logo.png -------------------------------------------------------------------------------- /frontend/vue-library-training/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/1/main.js: -------------------------------------------------------------------------------- 1 | const result = document.querySelector('#result'); 2 | result.innerHTML = 'こんにちは'; -------------------------------------------------------------------------------- /frontend/vue-library-training/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | export default Vue; 4 | } -------------------------------------------------------------------------------- /backend/firebase-training/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | export default Vue; 4 | } 5 | -------------------------------------------------------------------------------- /vuets/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /vuets/public/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /vuets/public/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /frontend/frontendkadai2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/frontendkadai2/public/favicon.ico -------------------------------------------------------------------------------- /vuets/public/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /backend/firebase-training/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/backend/firebase-training/public/favicon.ico -------------------------------------------------------------------------------- /backend/firebase-training/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/backend/firebase-training/src/assets/logo.png -------------------------------------------------------------------------------- /frontend/frontendkadai2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/frontendkadai2/src/assets/logo.png -------------------------------------------------------------------------------- /vuets/public/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /backend/firebase-training/functions/src/Result.ts: -------------------------------------------------------------------------------- 1 | export default interface Result { 2 | code: number, 3 | message: string, 4 | data?: any, 5 | error?: any 6 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/bg.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/logo.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/shohei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/shohei.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/image/shohei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/image/shohei.jpg -------------------------------------------------------------------------------- /frontend/vue-library-training/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/vue-library-training/public/favicon.ico -------------------------------------------------------------------------------- /frontend/vue-library-training/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/vue-library-training/src/assets/logo.png -------------------------------------------------------------------------------- /vuets/public/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /vuets/public/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /vuets/public/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /vuets/public/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/bg-about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/bg-about.jpg -------------------------------------------------------------------------------- /frontend/vue-library-training/vue.config.js: -------------------------------------------------------------------------------- 1 | const Dotenv = require('dotenv-webpack') 2 | module.exports = { 3 | configureWebpack: { 4 | plugins: [new Dotenv()] 5 | } 6 | } -------------------------------------------------------------------------------- /vuets/public/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /vuets/public/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /vuets/public/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/3/main.js: -------------------------------------------------------------------------------- 1 | let msg = '' 2 | for(let i = 0; i <= 100; i++) { 3 | msg += `${i} ` 4 | } 5 | document.querySelector('#result').innerHTML = msg; -------------------------------------------------------------------------------- /vuets/public/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/vuets/public/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/photograph-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/photograph-01.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/photograph-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/photograph-02.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/photograph-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/photograph-03.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/photograph-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/photograph-04.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/photograph-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/photograph-05.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/photograph-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/photograph-06.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/7/style.css: -------------------------------------------------------------------------------- 1 | button { 2 | background-color: rgba(0, 0, 0, 0.1); 3 | padding: 10px; 4 | color: #fff; 5 | cursor: pointer; 6 | } 7 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/4/style.css: -------------------------------------------------------------------------------- 1 | button { 2 | background-color: rgba(0, 0, 0, 0.1); 3 | padding: 10px; 4 | color: #fff; 5 | cursor: pointer; 6 | } 7 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/5/style.css: -------------------------------------------------------------------------------- 1 | button { 2 | background-color: rgba(0, 0, 0, 0.1); 3 | padding: 10px; 4 | color: #fff; 5 | cursor: pointer; 6 | } 7 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/6/style.css: -------------------------------------------------------------------------------- 1 | button { 2 | background-color: rgba(0, 0, 0, 0.1); 3 | padding: 10px; 4 | color: #fff; 5 | cursor: pointer; 6 | } 7 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/portfolio-photo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/portfolio-photo.jpeg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/image/portfolio-video.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/htmlcss/image/portfolio-video.jpeg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/9/style.css: -------------------------------------------------------------------------------- 1 | 2 | button { 3 | background-color: rgba(0, 0, 0, 0.1); 4 | padding: 10px; 5 | color: #fff; 6 | cursor: pointer; 7 | } 8 | -------------------------------------------------------------------------------- /backend/firebase-training/src/ts/firebase/model/StorageFile.ts: -------------------------------------------------------------------------------- 1 | export default interface StorageFile { 2 | name: string | null, 3 | url: string | null, 4 | fileType: string | null, 5 | } 6 | -------------------------------------------------------------------------------- /backend/firebase-training/src/ts/interface/FileInfo.ts: -------------------------------------------------------------------------------- 1 | export interface FileInfo { 2 | data: any | null, 3 | file: File | null, 4 | url: string | null, 5 | isDownloaded: boolean 6 | } 7 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/4/music.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/4/music.mp3 -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/9/sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/9/sample.jpg -------------------------------------------------------------------------------- /frontend/frontendkadai2/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | 4 | Vue.config.productionTip = false 5 | 6 | new Vue({ 7 | render: h => h(App) 8 | }).$mount('#app') 9 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/1/images/photo_a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/1/images/photo_a.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/1/images/photo_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/1/images/photo_b.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/2/images/photo_a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/2/images/photo_a.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/2/images/photo_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/2/images/photo_b.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-0.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-1.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-2.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-3.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-4.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-5.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-6.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-7.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-8.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-9.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/1/image/shohei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_normal/1/image/shohei.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/1/image/shohei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_animation/1/image/shohei.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-10.jpg -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/javascript/lesson_media/3/images/photo-11.jpg -------------------------------------------------------------------------------- /backend/firebase-training/functions/.gitignore: -------------------------------------------------------------------------------- 1 | ## Compiled JavaScript files 2 | **/*.js 3 | **/*.js.map 4 | 5 | # Typescript v1 declaration files 6 | typings/ 7 | 8 | node_modules/ 9 | 10 | 11 | firebase-debug* -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/2/main.js: -------------------------------------------------------------------------------- 1 | 2 | var time = 0 3 | const element = document.querySelector('#countDown'); 4 | setInterval(() => { 5 | time += 1 6 | element.innerHTML = time 7 | }, 1000); -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/1/main.js: -------------------------------------------------------------------------------- 1 | const imgA = document.querySelector('#myImageA'); 2 | imgA.src = 'images/photo_a.jpg' 3 | 4 | const imgb = document.querySelector('#myImageB'); 5 | imgb.src = 'images/photo_b.jpg' -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/2/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | img.loading { 3 | background-color: black; 4 | background-image: url("images/loading.gif"); 5 | background-position: center; 6 | background-repeat: no-repeat; 7 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/4/main.js: -------------------------------------------------------------------------------- 1 | let msg = '' 2 | for(let i = 0; i <= 100; i++) { 3 | msg += `${i} ` 4 | if (i % 5 === 0 && i !== 0) { 5 | msg += '
' 6 | } 7 | } 8 | document.querySelector('#result').innerHTML = msg; -------------------------------------------------------------------------------- /vuets/src/store.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | 9 | }, 10 | mutations: { 11 | 12 | }, 13 | actions: { 14 | 15 | }, 16 | }); 17 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | .container { 3 | display: flex; 4 | flex-wrap: wrap; 5 | justify-content: space-between; 6 | } 7 | 8 | .container img { 9 | width: 250px; 10 | height: 180px; 11 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Programmable-school/Frontend-Training/HEAD/frontend/htmlcssjs/lesson/jquery/vender/jquery-ui-1.12.1.custom/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /backend/firebase-training/cors-json-file.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "origin": ["http://localhost:8080", "https://fir-training-ae8b1.firebaseapp.com"], 4 | "responseHeader": ["Content-Type"], 5 | "method": ["GET", "HEAD", "DELETE"], 6 | "maxAgeSeconds": 3600 7 | } 8 | ] -------------------------------------------------------------------------------- /backend/firebase-training/src/store.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | 9 | }, 10 | mutations: { 11 | 12 | }, 13 | actions: { 14 | 15 | }, 16 | }); 17 | -------------------------------------------------------------------------------- /vuets/tests/e2e/specs/test.js: -------------------------------------------------------------------------------- 1 | // https://docs.cypress.io/api/introduction/api.html 2 | 3 | describe('My First Test', () => { 4 | it('Visits the app root url', () => { 5 | cy.visit('/') 6 | cy.contains('h1', 'Welcome to Your Vue.js + TypeScript App') 7 | }) 8 | }) 9 | -------------------------------------------------------------------------------- /backend/firebase-training/src/repository/firebaseConfigSample.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Firebaseコンソールからプロジェクトの情報を取得する。 3 | */ 4 | export const firebaseConfig = { 5 | apiKey: '', 6 | authDomain: '', 7 | databaseURL: '', 8 | projectId: '', 9 | storageBucket: '', 10 | messagingSenderId: '', 11 | } 12 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/6/style.css: -------------------------------------------------------------------------------- 1 | button { 2 | margin-bottom: 10px; 3 | background-color: rgba(0, 0, 0, 0.1); 4 | padding: 10px; 5 | color: #fff; 6 | cursor: pointer; 7 | } 8 | 9 | #log { 10 | font-size: 48px; 11 | } 12 | 13 | #myVideo { 14 | filter: grayscale(100); 15 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/next_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ネクストページ 6 | 7 | 8 | 9 |
10 |

画面遷移完了!

11 |
12 | 13 | -------------------------------------------------------------------------------- /vuets/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | import './registerServiceWorker'; 6 | 7 | Vue.config.productionTip = false; 8 | 9 | new Vue({ 10 | router, 11 | store, 12 | render: (h) => h(App), 13 | }).$mount('#app'); 14 | -------------------------------------------------------------------------------- /backend/firebase-training/src/assets/main.styl: -------------------------------------------------------------------------------- 1 | white = #ffffff 2 | white-cloud = #F8F9FB 3 | gray-clear = #D6DFE3 4 | gray = #79838C 5 | blue = #5982EE 6 | sky = #A2DCED 7 | sea = #698FF0 8 | black-flat = #202223 9 | twitter = #00aced 10 | facebook = #305097 11 | line = #5ae628 12 | gold = #FFD700 13 | goldenrod = #DAA520 14 | red = #F26964 -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/1/next_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ネクストページ 6 | 7 | 8 | 9 |
10 |

画面遷移完了!

11 |
12 | 13 | -------------------------------------------------------------------------------- /frontend/frontendkadai2/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /backend/firebase-training/README.md: -------------------------------------------------------------------------------- 1 | # Firebase 入門 2 | 3 | > Firebaseを用いた開発の基礎と実務スキルを身につけるためのカリキュラム 4 | 5 | ## 目次 6 | - [はじめに](./README_1.md#環境構築) 7 | - [Cloud Firestore](./README_1.md) 8 | - [Firebase Authantication](./README_2.md) 9 | - [Cloud Storage](./README_3.md) 10 | - [Cloud Functions](./README_4.md) 11 | - [Firebase Hosting](./README_5.md) -------------------------------------------------------------------------------- /frontend/vue-library-training/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw* 23 | -------------------------------------------------------------------------------- /frontend/frontendkadai2/README.md: -------------------------------------------------------------------------------- 1 | # frontendkadai2 2 | 3 | ## Project setup 4 | ``` 5 | yarn install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | yarn run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | yarn run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | yarn run lint 21 | ``` 22 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/main.js: -------------------------------------------------------------------------------- 1 | 2 | const container = document.querySelector('.container'); 3 | for (let i = 0; i < 10; i++) { 4 | const img = document.createElement('img'); // imageオブジェクトを作る 5 | img.src = `images/photo-${i}.jpg`; // src属性のphotoの画像pathを設定 6 | container.appendChild(img); // containerの要素へimgを追加する 7 | } -------------------------------------------------------------------------------- /backend/firebase-training/functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitReturns": true, 5 | "noUnusedLocals": true, 6 | "outDir": "lib", 7 | "sourceMap": true, 8 | "strict": true, 9 | "target": "es2017" 10 | }, 11 | "compileOnSave": true, 12 | "include": [ 13 | "src" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /frontend/vue-library-training/dotenvsample: -------------------------------------------------------------------------------- 1 | # 環境変数として設定したい変数はここで定義する 2 | # 3 | # 【環境変数にするポイント】 4 | # アプリの設定値でアプリ全体で利用することがあるAPIやKeyを設定する 5 | # 6 | # 【注意】 7 | # APIのSecretKeyはフロントエンド側のdotenvで定義しないこと。 8 | # ここで設定される変数は全てユーザーに見られてしまうため、見られても良いものを定義すること。 9 | APP_TITLE = "DotenvLesson" 10 | APP_VERSION = "1.0.0" 11 | ADMIN_EMAIL = "xxxx@xxxx.com" 12 | BASE_API_URL = "https://qiita.com/api/v2" -------------------------------------------------------------------------------- /vuets/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | /tests/e2e/videos/ 6 | /tests/e2e/screenshots/ 7 | 8 | # local env files 9 | .env.local 10 | .env.*.local 11 | 12 | # Log files 13 | npm-debug.log* 14 | yarn-debug.log* 15 | yarn-error.log* 16 | 17 | # Editor directories and files 18 | .idea 19 | .vscode 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw* 25 | -------------------------------------------------------------------------------- /vuets/src/shims-tsx.d.ts: -------------------------------------------------------------------------------- 1 | import Vue, { VNode } from 'vue'; 2 | 3 | declare global { 4 | namespace JSX { 5 | // tslint:disable no-empty-interface 6 | interface Element extends VNode {} 7 | // tslint:disable no-empty-interface 8 | interface ElementClass extends Vue {} 9 | interface IntrinsicElements { 10 | [elem: string]: any; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 |

12 |
13 | 14 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/3/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 |

12 |
13 | 14 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/4/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 |

12 |
13 | 14 | -------------------------------------------------------------------------------- /frontend/vue-library-training/src/assets/main.styl: -------------------------------------------------------------------------------- 1 | @import '~vuetify/src/stylus/main' 2 | 3 | white = #ffffff 4 | white-cloud = #F8F9FB 5 | gray-clear = #D6DFE3 6 | gray = #79838C 7 | blue = #5982EE 8 | sky = #A2DCED 9 | sea = #698FF0 10 | black-flat = #202223 11 | twitter = #00aced 12 | facebook = #305097 13 | line = #5ae628 14 | gold = #FFD700 15 | goldenrod = #DAA520 16 | red = #F26964 -------------------------------------------------------------------------------- /frontend/vue-library-training/src/views/vuerouter/VueRouterTopPage.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /backend/firebase-training/src/shims-tsx.d.ts: -------------------------------------------------------------------------------- 1 | import Vue, { VNode } from 'vue'; 2 | 3 | declare global { 4 | namespace JSX { 5 | // tslint:disable no-empty-interface 6 | interface Element extends VNode {} 7 | // tslint:disable no-empty-interface 8 | interface ElementClass extends Vue {} 9 | interface IntrinsicElements { 10 | [elem: string]: any; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /frontend/vue-library-training/src/shims-tsx.d.ts: -------------------------------------------------------------------------------- 1 | import Vue, { VNode } from 'vue'; 2 | 3 | declare global { 4 | namespace JSX { 5 | // tslint:disable no-empty-interface 6 | interface Element extends VNode {} 7 | // tslint:disable no-empty-interface 8 | interface ElementClass extends Vue {} 9 | interface IntrinsicElements { 10 | [elem: string]: any; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /backend/firebase-training/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | 23 | # config 24 | src/repository/firebaseConfig.ts 25 | 26 | .firebase -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 |

12 | 13 |
14 | 15 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/5/main.js: -------------------------------------------------------------------------------- 1 | function func1() { 2 | const text1 = document.getElementById('text1'); 3 | const text2 = document.getElementById('text2'); 4 | const text3 = document.getElementById('text3'); 5 | document.querySelector('#result').innerHTML = text1.value + text2.value + text3.value; 6 | } 7 | 8 | const btn1 = document.querySelector('#btn1'); 9 | btn1.addEventListener('click', func1) 10 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/css/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | /** 3 | * common 4 | **/ 5 | body { 6 | margin: 10px; 7 | display: block; 8 | overflow: scroll; 9 | } 10 | 11 | .container { 12 | margin: 20px; 13 | } 14 | 15 | .container__content { 16 | margin: 10px; 17 | } 18 | 19 | .ul.newsticker { 20 | list-style-type: none; 21 | margin: 0; 22 | padding: 0; 23 | position: relative; 24 | left: 100%; 25 | } 26 | -------------------------------------------------------------------------------- /backend/firebase-training/src/ts/firebase/model/StorageDetailFile.ts: -------------------------------------------------------------------------------- 1 | import StorageFile from './StorageFile' 2 | 3 | export default abstract class StorageDetailFile implements StorageFile { 4 | name: string | null 5 | url: string | null 6 | fileType: string | null 7 | size: number 8 | 9 | constructor() { 10 | this.name = null 11 | this.url = null 12 | this.fileType = null 13 | this.size = 0 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /backend/firebase-training/src/ts/firebase/origin_model/ShopItem.ts: -------------------------------------------------------------------------------- 1 | import { FirebaseBase, property } from './FirestoreBase' 2 | 3 | /** 4 | * FirebaseBaseを継承して利用する。 5 | * @propertyを修飾子とするパラメータをフィールド対象とする。 6 | */ 7 | class ShopItem extends FirebaseBase { 8 | @property uid?: string 9 | @property name: string = '' 10 | @property price: number = 50 11 | @property remainCount: number = 10 12 | } 13 | 14 | export { ShopItem } 15 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/2/main.js: -------------------------------------------------------------------------------- 1 | const element = document.querySelector('.rect'); 2 | element.animate( 3 | { 4 | transform: [ 5 | 'translateX(0px) rotate(0deg)', 6 | 'translateX(800px) rotate(360deg)' 7 | ] 8 | }, 9 | { 10 | duration: 3000, // ミリ秒指定 11 | iterations: Infinity, // 繰り返し回数 12 | direction: 'normal', // 繰り返し挙動 13 | easing: 'ease' // 加減速種類 14 | } 15 | ); -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/3/main.js: -------------------------------------------------------------------------------- 1 | 2 | const btn = document.querySelector('button'); 3 | btn.addEventListener('click', () => { 4 | async function load() { 5 | const url = 'https://blockchain.info/ticker?cors=true' 6 | const data = await fetch(url); 7 | const obj = await data.json(); 8 | console.log(obj); 9 | document.querySelector('#log').innerHTML = JSON.stringify(obj, null, ' '); 10 | } 11 | load(); 12 | }); -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | トップページ 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 | 17 | 18 | -------------------------------------------------------------------------------- /vuets/tests/unit/example.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | import { shallowMount } from '@vue/test-utils'; 3 | import HelloWorld from '@/components/HelloWorld.vue'; 4 | 5 | describe('HelloWorld.vue', () => { 6 | it('renders props.msg when passed', () => { 7 | const msg = 'new message'; 8 | const wrapper = shallowMount(HelloWorld, { 9 | propsData: { msg }, 10 | }); 11 | expect(wrapper.text()).to.include(msg); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /frontend/vue-library-training/src/views/vuerouter/NotFoundPage.vue: -------------------------------------------------------------------------------- 1 | 6 | 18 | 19 | -------------------------------------------------------------------------------- /vuets/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "warning", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "linterOptions": { 7 | "exclude": [ 8 | "node_modules/**" 9 | ] 10 | }, 11 | "rules": { 12 | "quotemark": [true, "single"], 13 | "indent": [true, "spaces", 2], 14 | "interface-name": false, 15 | "ordered-imports": false, 16 | "object-literal-sort-keys": false, 17 | "no-consecutive-blank-lines": false 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /vuets/README.md: -------------------------------------------------------------------------------- 1 | # vuets 2 | 3 | ## Project setup 4 | ``` 5 | yarn install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | yarn run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | yarn run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | yarn run lint 21 | ``` 22 | 23 | ### Run your unit tests 24 | ``` 25 | yarn run test:unit 26 | ``` 27 | 28 | ### Run your end-to-end tests 29 | ``` 30 | yarn run test:e2e 31 | ``` 32 | -------------------------------------------------------------------------------- /backend/firebase-training/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 22 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/2/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | display: flex; 6 | justify-content: center; 7 | overflow: hidden; 8 | } 9 | 10 | .container { 11 | position: relative; 12 | width: 940px; 13 | height: 520px; 14 | 15 | background: rgba(0, 0, 0, 0.5); 16 | } 17 | 18 | .rect { 19 | width: 100px; 20 | height: 100px; 21 | display: block; 22 | position: absolute; 23 | background: white; 24 | top: 200px; 25 | } 26 | -------------------------------------------------------------------------------- /frontend/vue-library-training/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 22 | -------------------------------------------------------------------------------- /vuets/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /vuets/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vuets", 3 | "short_name": "vuets", 4 | "icons": [ 5 | { 6 | "src": "/img/icons/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/img/icons/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "/index.html", 17 | "display": "standalone", 18 | "background_color": "#000000", 19 | "theme_color": "#4DBA87" 20 | } 21 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/4/main.js: -------------------------------------------------------------------------------- 1 | const btn = document.querySelector('button'); 2 | btn.addEventListener('click', notify); 3 | 4 | // 通知を試みる 5 | // http/https でなければ通知はとばない 6 | function notify() { 7 | switch(Notification.permission) { 8 | case 'default': 9 | Notification.requestPermission(); 10 | break; 11 | case 'granted': 12 | new Notification('こんにちは'); 13 | break; 14 | case "denied": 15 | alert('通知が拒否されています'); 16 | break; 17 | } 18 | console.log(Notification.permission); 19 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/5/main.js: -------------------------------------------------------------------------------- 1 | const btn = document.querySelector('button'); 2 | btn.addEventListener('click', notify); 3 | 4 | // 通知を試みる 5 | // http/https でなければ通知はとばない 6 | function notify() { 7 | switch(Notification.permission) { 8 | case 'default': 9 | Notification.requestPermission(); 10 | break; 11 | case 'granted': 12 | new Notification('こんにちは'); 13 | break; 14 | case "denied": 15 | alert('通知が拒否されています'); 16 | break; 17 | } 18 | console.log(Notification.permission); 19 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/7/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 | 13 |
14 | 15 |
16 |
17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /frontend/frontendkadai2/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | 27 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/6/main.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const a = 10; 3 | const b = 20; 4 | const sum = a + b; 5 | console.log('func1', sum); 6 | }()); 7 | 8 | (function() { 9 | const a = 100; 10 | const b = 200; 11 | const sum = a + b; 12 | console.log('func2', sum); 13 | }()); 14 | 15 | 16 | /** lesson1 */ 17 | (function() { 18 | const a = 100; 19 | const b = 200; 20 | const sum = a + b; 21 | console.log('func2', sum); 22 | }()); 23 | 24 | /** lesson2 */ 25 | (function() { 26 | console.log('func2', sum); 27 | }()); 28 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/7/main.js: -------------------------------------------------------------------------------- 1 | function create() { 2 | const text = document.getElementById('text'); 3 | if (text.value !== '') { 4 | // ul取得 5 | const ul = document.getElementById('result'); 6 | 7 | // 要素を作成 8 | const li = document.createElement('li'); 9 | const p = document.createElement('p'); 10 | p.innerHTML = text.value; 11 | li.appendChild(p); 12 | ul.appendChild(li); 13 | } else { 14 | console.log('textareaは空です。'); 15 | } 16 | } 17 | 18 | document.querySelector('#btn1').addEventListener('click', create); -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/2/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |

0

16 |
17 | 18 | -------------------------------------------------------------------------------- /backend/firebase-training/firestore.indexes.json: -------------------------------------------------------------------------------- 1 | { 2 | "indexes": [ 3 | { 4 | "collectionId": "users", 5 | "state": "READY", 6 | "fields": [ 7 | { 8 | "fieldPath": "age", 9 | "mode": "ASCENDING" 10 | }, 11 | { 12 | "fieldPath": "isPublished", 13 | "mode": "ASCENDING" 14 | }, 15 | { 16 | "fieldPath": "sex", 17 | "mode": "ASCENDING" 18 | }, 19 | { 20 | "fieldPath": "createdAt", 21 | "mode": "DESCENDING" 22 | } 23 | ] 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/8/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 |
15 |
16 | 17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /frontend/vue-library-training/src/views/vuerouter/VueRouterFirstPage.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/9/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 | 11 |
12 |

13 |
14 | 15 | 16 | 17 |
18 |
19 | 20 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/10/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 | 11 |
12 |

13 |
14 | 15 | 16 | 17 |
18 |
19 | 20 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/2/main.js: -------------------------------------------------------------------------------- 1 | const srcMap = new Map(); 2 | // DOMContentLoaded: DOMの構築が完了したら発火するイベント 3 | window.addEventListener('DOMContentLoaded', () => { 4 | const imgs = document.querySelectorAll('img'); 5 | imgs.forEach((img) => { 6 | srcMap.set(img, img.dataset.src); 7 | img.removeAttribute('src'); 8 | }); 9 | }); 10 | 11 | const btn = document.querySelector('.btn'); 12 | btn.addEventListener('click', () => { 13 | const imgs = document.querySelectorAll('img'); 14 | imgs.forEach((img) => { 15 | const source = srcMap.get(img); 16 | img.src = source; 17 | }); 18 | }); -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/8/main.js: -------------------------------------------------------------------------------- 1 | // fill 2 | function fill() { 3 | const canvas = document.querySelector('#my-canvas-fill'); 4 | // 2Dコンテキストを取得 5 | const context = canvas.getContext('2d'); 6 | context.fillStyle = 'red'; 7 | context.fillRect(0, 0, 100, 200); 8 | } 9 | 10 | // stroke 11 | function stroke() { 12 | const canvas = document.querySelector('#my-canvas-stroke'); 13 | // 2Dコンテキストを取得 14 | const context = canvas.getContext('2d'); 15 | context.lineWidth = 3; 16 | context.strokeStyle = 'red'; 17 | context.strokeRect(0, 0, 100, 100); 18 | } 19 | 20 | 21 | fill(); 22 | stroke(); -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/2/main.js: -------------------------------------------------------------------------------- 1 | 2 | function func1() { 3 | const date = new Date(); 4 | const hours = date.getHours(); 5 | let msg = ''; 6 | if (5 <= hours && hours < 12) { 7 | msg = 'おはようございます'; 8 | } else if (12 <= hours && hours < 19) { 9 | msg = 'こんにちは'; 10 | } else if (19 <= hours && hours < 24) { 11 | msg = 'こんばんは'; 12 | } else { 13 | msg = '夜更かしさん'; 14 | } 15 | const result = document.querySelector('#result'); 16 | result.innerHTML = msg; 17 | } 18 | 19 | const btn1 = document.querySelector('#btn1'); 20 | btn1.addEventListener('click', func1) 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /vuets/src/App.vue: -------------------------------------------------------------------------------- 1 | 10 | 26 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/2/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/3/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | display: flex; 6 | justify-content: center; 7 | overflow: hidden; 8 | } 9 | 10 | .container { 11 | position: relative; 12 | width: 940px; 13 | height: 520px; 14 | 15 | background: rgba(0, 0, 0, 0.5); 16 | } 17 | 18 | .rect { 19 | width: 50px; 20 | height: 50px; 21 | display: block; 22 | position: absolute; 23 | background: white; 24 | top: 150px; 25 | } 26 | 27 | .centering { 28 | position: relative; 29 | } 30 | 31 | .ui { 32 | position: absolute; 33 | bottom: 100px; 34 | } 35 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/6/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /vuets/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | vuets 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/1/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | .rect { 3 | display: block; 4 | position: absolute; 5 | background-size: contain; 6 | top: 150px; 7 | 8 | width: 100px; 9 | height: 100px; 10 | background: url('./image/loading.svg'); 11 | } 12 | 13 | .rect.state-show { 14 | animation: infinite 1s rotate linear; 15 | } 16 | 17 | @keyframes rotate { 18 | 0% { 19 | transform: rotate(0deg); 20 | } 21 | 100% { 22 | transform: rotate(360deg); 23 | } 24 | } 25 | 26 | .centering { 27 | position: relative; 28 | } 29 | 30 | .ui { 31 | position: absolute; 32 | bottom: 100px; 33 | } 34 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/3/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/1/style.css: -------------------------------------------------------------------------------- 1 | /* CSS */ 2 | .rect { 3 | display: block; 4 | position: absolute; 5 | background-size: contain; 6 | top: 150px; 7 | 8 | width: 100px; 9 | height: 100px; 10 | background: url('./image/loading.svg'); 11 | } 12 | 13 | .rect.state-show { 14 | animation: infinite 1s rotate linear; 15 | } 16 | 17 | @keyframes rotate { 18 | 0% { 19 | transform: rotate(0deg); 20 | } 21 | 100% { 22 | transform: rotate(360deg); 23 | } 24 | } 25 | 26 | .centering { 27 | position: relative; 28 | } 29 | 30 | .ui { 31 | position: absolute; 32 | bottom: 100px; 33 | } 34 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/3/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 |       (ここに読み込んだデータが表示されます)
18 |     
19 |
20 | 21 | -------------------------------------------------------------------------------- /frontend/frontendkadai2/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | frontendkadai2 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/5/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 |

12 |
13 | 14 | 15 | 16 |
17 |
18 | 19 |
20 |
21 | 22 | -------------------------------------------------------------------------------- /frontend/vue-library-training/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "warning", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "linterOptions": { 7 | "exclude": [ 8 | "node_modules/**" 9 | ] 10 | }, 11 | "rules": { 12 | "max-line-length": [ 13 | false, 14 | 120 15 | ], 16 | "member-access": false, 17 | "no-console": false, 18 | "quotemark": [true, "single"], 19 | "semicolon": [false, "always"], 20 | "indent": [true, "spaces", 2], 21 | "interface-name": false, 22 | "ordered-imports": false, 23 | "object-literal-sort-keys": false, 24 | "no-consecutive-blank-lines": false 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/5/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 |
18 | 19 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/1/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |

17 | 18 | 19 |

20 |
21 | 22 | -------------------------------------------------------------------------------- /vuets/src/router.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Router from 'vue-router'; 3 | import Home from './views/Home.vue'; 4 | 5 | Vue.use(Router); 6 | 7 | export default new Router({ 8 | mode: 'history', 9 | base: process.env.BASE_URL, 10 | routes: [ 11 | { 12 | path: '/', 13 | name: 'home', 14 | component: Home, 15 | }, 16 | { 17 | path: '/about', 18 | name: 'about', 19 | // route level code-splitting 20 | // this generates a separate chunk (about.[hash].js) for this route 21 | // which is lazy-loaded when the route is visited. 22 | component: () => import(/* webpackChunkName: "about" */ './views/About.vue'), 23 | }, 24 | ], 25 | }); 26 | -------------------------------------------------------------------------------- /vuets/tests/e2e/plugins/index.js: -------------------------------------------------------------------------------- 1 | // https://docs.cypress.io/guides/guides/plugins-guide.html 2 | /* eslint-disable import/no-extraneous-dependencies global-require */ 3 | const webpack = require('@cypress/webpack-preprocessor') 4 | 5 | module.exports = (on, config) => { 6 | on('file:preprocessor', webpack({ 7 | webpackOptions: require('@vue/cli-service/webpack.config'), 8 | watchOptions: {} 9 | })) 10 | 11 | return Object.assign({}, config, { 12 | fixturesFolder: 'tests/e2e/fixtures', 13 | integrationFolder: 'tests/e2e/specs', 14 | screenshotsFolder: 'tests/e2e/screenshots', 15 | videosFolder: 'tests/e2e/videos', 16 | supportFile: 'tests/e2e/support/index.js' 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /backend/firebase-training/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "firestore": { 3 | "rules": "firestore.rules", 4 | "indexes": "firestore.indexes.json" 5 | }, 6 | "storage": { 7 | "rules": "storage.rules" 8 | }, 9 | "functions": { 10 | "predeploy": [ 11 | "npm --prefix \"$RESOURCE_DIR\" run lint", 12 | "npm --prefix \"$RESOURCE_DIR\" run build" 13 | ], 14 | "source": "functions" 15 | }, 16 | "hosting": { 17 | "public": "dist", 18 | "ignore": [ 19 | "firebase.json", 20 | "**/.*", 21 | "**/node_modules/**" 22 | ], 23 | "rewrites": [ 24 | { 25 | "source": "**", 26 | "destination": "/index.html" 27 | } 28 | ] 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/8/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 | 17 | 18 |
19 |
20 | 21 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/6/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 課題 6 | 7 | 8 | 9 | 10 |
11 |

12 |
13 | 14 | 15 |
16 |
17 | 18 | 19 | 20 | 21 |
22 |
23 | 24 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/4/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 |
20 |
21 | 22 | 23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_normal/5/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 19 |
20 |
21 | 22 | 23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/6/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 |
20 | 21 | -------------------------------------------------------------------------------- /vuets/tests/e2e/support/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands' 18 | 19 | // Alternatively you can use CommonJS syntax: 20 | // require('./commands') 21 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/3/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/7/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 |
20 | 21 |
22 | 23 | -------------------------------------------------------------------------------- /backend/firebase-training/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "warning", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "linterOptions": { 7 | "exclude": [ 8 | "node_modules/**" 9 | ] 10 | }, 11 | "rules": { 12 | "variable-name": [ 13 | true, 14 | "ban-keywords", 15 | "check-format", 16 | "allow-leading-underscore" 17 | ], 18 | "max-line-length": [ 19 | false, 20 | 120 21 | ], 22 | "member-access": false, 23 | "no-console": false, 24 | "quotemark": [true, "single"], 25 | "semicolon": [false, "always"], 26 | "indent": [true, "spaces", 2], 27 | "interface-name": false, 28 | "ordered-imports": false, 29 | "object-literal-sort-keys": false, 30 | "no-consecutive-blank-lines": false 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/1/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |
18 | 22 |
ログ表示エリア
23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/6/main.js: -------------------------------------------------------------------------------- 1 | let stream; 2 | 3 | async function loadAndPlay() { 4 | const video = document.getElementById('myVideo'); 5 | stream = await getDeviceStream({ 6 | video: { width: 640, height: 320 }, 7 | auto: false 8 | }); 9 | video.srcObject = stream; 10 | } 11 | 12 | function stop() { 13 | const video = document.getElementById('myVideo'); 14 | const tracks = stream.getTracks(); 15 | tracks.forEach((track) => { 16 | track.stop(); 17 | }); 18 | video.srcObject = null; 19 | } 20 | 21 | function getDeviceStream(option) { 22 | if ('getUserMedia' in navigator.mediaDevices) { 23 | return navigator.mediaDevices.getUserMedia(option); 24 | } else { 25 | return new Promise(function(resolve, reject) { 26 | navigator.getUserMedia(option, resolve, reject); 27 | }); 28 | } 29 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/4/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

コントロールあり

18 | 19 |

プリロードなし

20 | 21 |

ループ再生

22 | 23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /vuets/src/registerServiceWorker.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-console */ 2 | 3 | import { register } from 'register-service-worker'; 4 | 5 | if (process.env.NODE_ENV === 'production') { 6 | register(`${process.env.BASE_URL}service-worker.js`, { 7 | ready() { 8 | console.log( 9 | 'App is being served from cache by a service worker.\n' + 10 | 'For more details, visit https://goo.gl/AFskqB', 11 | ); 12 | }, 13 | cached() { 14 | console.log('Content has been cached for offline use.'); 15 | }, 16 | updated() { 17 | console.log('New content is available; please refresh.'); 18 | }, 19 | offline() { 20 | console.log('No internet connection found. App is running in offline mode.'); 21 | }, 22 | error(error) { 23 | console.error('Error during service worker registration:', error); 24 | }, 25 | }); 26 | } 27 | -------------------------------------------------------------------------------- /backend/firebase-training/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "strict": true, 6 | "jsx": "preserve", 7 | "importHelpers": true, 8 | "moduleResolution": "node", 9 | "experimentalDecorators": true, 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "sourceMap": true, 13 | "baseUrl": ".", 14 | "types": [ 15 | "webpack-env" 16 | ], 17 | "paths": { 18 | "@/*": [ 19 | "src/*" 20 | ] 21 | }, 22 | "lib": [ 23 | "esnext", 24 | "dom", 25 | "dom.iterable", 26 | "scripthost" 27 | ] 28 | }, 29 | "include": [ 30 | "src/**/*.ts", 31 | "src/**/*.tsx", 32 | "src/**/*.vue", 33 | "tests/**/*.ts", 34 | "tests/**/*.tsx" 35 | ], 36 | "exclude": [ 37 | "node_modules" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /frontend/vue-library-training/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import Vuetify from 'vuetify' 6 | import colors from 'vuetify/es5/util/colors' 7 | import 'vuetify/dist/vuetify.min.css' 8 | 9 | // themeはお好みでどうぞ。 10 | /** 11 | * バグ?なぜか色が効かない。 12 | */ 13 | Vue.use(Vuetify, { 14 | theme: { 15 | original: colors.purple.base, 16 | theme: '#5982EE', 17 | background: '#ffffff', 18 | twitter: '#00aced', 19 | facebook: '#305097', 20 | line: '#5ae628', 21 | red: '#F26964', 22 | error: '#F26964', 23 | succcess: '#698FF0', 24 | }, 25 | options: { 26 | themeVariations: ['original', 'secondary'], 27 | }, 28 | }) 29 | 30 | Vue.config.productionTip = false 31 | 32 | new Vue({ 33 | router, 34 | store, 35 | render: (h) => h(App), 36 | }).$mount('#app') 37 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/3/main.js: -------------------------------------------------------------------------------- 1 | document.querySelector('#checkbox').addEventListener('change', (event) => { 2 | const element = document.querySelector('.rect'); 3 | if (event.target.checked === true) { 4 | element.animate( 5 | { 6 | transform: [ 7 | 'scale(1)', // 開始値 8 | 'scale(5)' // 終了値 9 | ] 10 | }, 11 | { 12 | duration: 500, // ミリ秒指定 13 | fill: 'forwards', // 終了時にプロパティーを保つ 14 | easing: 'ease' // 加減速種類 15 | } 16 | ); 17 | } else { 18 | element.animate( 19 | { 20 | transform: [ 21 | 'scale(5)', // 開始値 22 | 'scale(1)' // 終了値 23 | ] 24 | }, 25 | { 26 | duration: 500, // ミリ秒指定 27 | fill: 'forwards', // 終了時にプロパティーを保つ 28 | easing: 'ease' // 加減速種類 29 | } 30 | ); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /frontend/vue-library-training/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "strict": true, 6 | "jsx": "preserve", 7 | "importHelpers": true, 8 | "moduleResolution": "node", 9 | "experimentalDecorators": true, 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "sourceMap": true, 13 | "baseUrl": ".", 14 | "types": [ 15 | "webpack-env" 16 | ], 17 | "paths": { 18 | "@/*": [ 19 | "src/*" 20 | ] 21 | }, 22 | "lib": [ 23 | "esnext", 24 | "dom", 25 | "dom.iterable", 26 | "scripthost" 27 | ] 28 | }, 29 | "include": [ 30 | "src/**/*.ts", 31 | "src/**/*.tsx", 32 | "src/**/*.vue", 33 | "tests/**/*.ts", 34 | "tests/**/*.tsx" 35 | ], 36 | "exclude": [ 37 | "node_modules" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /vuets/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "strict": true, 6 | "jsx": "preserve", 7 | "importHelpers": true, 8 | "moduleResolution": "node", 9 | "experimentalDecorators": true, 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "sourceMap": true, 13 | "baseUrl": ".", 14 | "types": [ 15 | "webpack-env", 16 | "mocha", 17 | "chai" 18 | ], 19 | "paths": { 20 | "@/*": [ 21 | "src/*" 22 | ] 23 | }, 24 | "lib": [ 25 | "esnext", 26 | "dom", 27 | "dom.iterable", 28 | "scripthost" 29 | ] 30 | }, 31 | "include": [ 32 | "src/**/*.ts", 33 | "src/**/*.tsx", 34 | "src/**/*.vue", 35 | "tests/**/*.ts", 36 | "tests/**/*.tsx" 37 | ], 38 | "exclude": [ 39 | "node_modules" 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /backend/firebase-training/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | firebase-training 11 | 12 | 13 | 16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /frontend/vue-library-training/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-library-training", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "axios": "^0.18.0", 12 | "date-fns": "^1.30.1", 13 | "dotenv-webpack": "^1.7.0", 14 | "localforage": "^1.7.3", 15 | "vue": "^2.5.22", 16 | "vue-class-component": "^6.0.0", 17 | "vue-property-decorator": "^7.0.0", 18 | "vue-router": "^3.0.1", 19 | "vuetify": "^1.4.4", 20 | "vuex": "^3.0.1" 21 | }, 22 | "devDependencies": { 23 | "@vue/cli-plugin-typescript": "^3.4.0", 24 | "@vue/cli-service": "^3.4.0", 25 | "stylus": "^0.54.5", 26 | "stylus-loader": "^3.0.2", 27 | "typescript": "^3.0.0", 28 | "vue-template-compiler": "^2.5.21" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /frontend/vue-library-training/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | vue-library-training 11 | 12 | 13 | 16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /backend/firebase-training/functions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "functions", 3 | "scripts": { 4 | "lint": "tslint --project tsconfig.json", 5 | "build": "tsc", 6 | "serve": "npm run build && firebase serve --only functions", 7 | "shell": "npm run build && firebase functions:shell", 8 | "start": "npm run shell", 9 | "deploy": "firebase deploy --only functions", 10 | "logs": "firebase functions:log" 11 | }, 12 | "engines": { 13 | "node": "10" 14 | }, 15 | "main": "lib/index.js", 16 | "dependencies": { 17 | "cors": "^2.8.5", 18 | "express": "^4.16.4", 19 | "firebase-admin": "~7.0.0", 20 | "firebase-functions": "^2.3.0" 21 | }, 22 | "devDependencies": { 23 | "@types/cors": "^2.8.5", 24 | "@types/express": "^4.16.1", 25 | "firebase-functions-test": "^0.1.6", 26 | "tslint": "^5.12.0", 27 | "typescript": "^3.2.2" 28 | }, 29 | "private": true 30 | } 31 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/9/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 | 18 |
▲ 元の画像
19 |
20 |
21 | 22 |
▲変換後の画像
23 |
24 | 25 |
27 | 28 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/js/main.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $("#ticker01").liScroll(); 3 | $("#ticker01").off("mouseenter mouseleave"); 4 | }); 5 | 6 | const $link = $("#link__continue--middle, #link__continue--lower"); 7 | $link.attr("href", "https://github.com/hukusuke1007"); 8 | 9 | $(function () { 10 | const sokujiMessage = '即時関数だよ jQuery'; 11 | console.log(sokujiMessage); 12 | }); 13 | 14 | (function () { 15 | const sokujiMessage = '即時関数だよ JavaScript'; 16 | console.log(sokujiMessage); 17 | }()); 18 | // console.log(sokujiMessage); // sokujiMessage is not defined 19 | 20 | 21 | // $.func.call("", true, 'input[type="search"]') 22 | (function ($) { 23 | var call = function (value, selector) { 24 | console.log("call", value, selector); 25 | if (value === true) { 26 | $(selector).focus(); 27 | } else { 28 | $(selector).blur(); 29 | } 30 | } 31 | call(true, 'input[type="search"]'); 32 | $.func = call; 33 | })(jQuery); -------------------------------------------------------------------------------- /vuets/tests/e2e/support/commands.js: -------------------------------------------------------------------------------- 1 | // *********************************************** 2 | // This example commands.js shows you how to 3 | // create various custom commands and overwrite 4 | // existing commands. 5 | // 6 | // For more comprehensive examples of custom 7 | // commands please read more here: 8 | // https://on.cypress.io/custom-commands 9 | // *********************************************** 10 | // 11 | // 12 | // -- This is a parent command -- 13 | // Cypress.Commands.add("login", (email, password) => { ... }) 14 | // 15 | // 16 | // -- This is a child command -- 17 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) 18 | // 19 | // 20 | // -- This is a dual command -- 21 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) 22 | // 23 | // 24 | // -- This is will overwrite an existing command -- 25 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) 26 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/7/main.js: -------------------------------------------------------------------------------- 1 | // 保存するの選択したときの処理 2 | document.querySelector('#btnSave').addEventListener('click', saveFile); 3 | 4 | function saveFile() { 5 | const fileName = 'mySvg.svg'; 6 | const content = document.querySelector('#mySvg').outerHTML; 7 | 8 | // 画像データ 9 | const dataUrl = 'data:image/svg+xml\n' + encodeURIComponent(content); 10 | 11 | // 文字化け対策 12 | const bom = new Uint8Array([0xef, 0xbb, 0xbf]); 13 | const blob = new Blob([bom, content], {type: 'text/plain'}); 14 | 15 | if (window.navigator.msSaveBlob) { 16 | window.navigator.msSaveBlob(blob, fileName); 17 | } else if (window.URL && window.URL.createObjectURL) { 18 | const a = document.createElement('a'); 19 | a.download = fileName; 20 | a.href = window.URL.createObjectURL(blob); 21 | document.body.appendChild(a); 22 | a.click(); 23 | document.body.removeChild(a); 24 | } else { 25 | window.open(dataUrl, '_blank'); 26 | } 27 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_media/2/lesson.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript レッスン 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |

17 | 21 | 24 | 27 |

28 | 29 |
30 | 31 | -------------------------------------------------------------------------------- /backend/firebase-training/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "firebase-training", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint", 9 | "firestore-rules": "firebase deploy --only firestore:rules", 10 | "deploy": "firebase deploy --only hosting" 11 | }, 12 | "dependencies": { 13 | "axios": "^0.18.0", 14 | "date-fns": "^1.30.1", 15 | "firebase": "^5.8.1", 16 | "reflect-metadata": "^0.1.13", 17 | "vue": "^2.5.21", 18 | "vue-class-component": "^6.0.0", 19 | "vue-property-decorator": "^7.0.0", 20 | "vue-router": "^3.0.1", 21 | "vuetify": "^1.4.4", 22 | "vuex": "^3.0.1" 23 | }, 24 | "devDependencies": { 25 | "@vue/cli-plugin-typescript": "^3.1.1", 26 | "@vue/cli-service": "^3.1.1", 27 | "stylus": "^0.54.5", 28 | "stylus-loader": "^3.0.2", 29 | "typescript": "^3.0.0", 30 | "vue-template-compiler": "^2.5.21" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /frontend/frontendkadai2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontendkadai2", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "vue": "^2.5.17" 12 | }, 13 | "devDependencies": { 14 | "@vue/cli-plugin-babel": "^3.0.1", 15 | "@vue/cli-plugin-eslint": "^3.0.1", 16 | "@vue/cli-service": "^3.0.1", 17 | "vue-template-compiler": "^2.5.17" 18 | }, 19 | "eslintConfig": { 20 | "root": true, 21 | "env": { 22 | "node": true 23 | }, 24 | "extends": [ 25 | "plugin:vue/essential", 26 | "eslint:recommended" 27 | ], 28 | "rules": {}, 29 | "parserOptions": { 30 | "parser": "babel-eslint" 31 | } 32 | }, 33 | "postcss": { 34 | "plugins": { 35 | "autoprefixer": {} 36 | } 37 | }, 38 | "browserslist": [ 39 | "> 1%", 40 | "last 2 versions", 41 | "not ie <= 8" 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/6/main.js: -------------------------------------------------------------------------------- 1 | function func1(type) { 2 | const text1 = document.getElementById('text1'); 3 | const text2 = document.getElementById('text2'); 4 | const value1 = Number(text1.value); 5 | const value2 = Number(text2.value); 6 | let result = 0 7 | switch (type) { 8 | case 0: 9 | result = value1 + value2; 10 | break; 11 | case 1: 12 | result = value1 - value2; 13 | break; 14 | case 2: 15 | result = value1 * value2; 16 | break; 17 | case 3: 18 | result = value1 / value2; 19 | break; 20 | } 21 | document.querySelector('#result').innerHTML = result; 22 | } 23 | 24 | document.querySelector('#btn1').addEventListener('click', () => { 25 | func1(0); 26 | }); 27 | document.querySelector('#btn2').addEventListener('click', () => { 28 | func1(1); 29 | }); 30 | document.querySelector('#btn3').addEventListener('click', () => { 31 | func1(2); 32 | }); 33 | document.querySelector('#btn4').addEventListener('click', () => { 34 | func1(3); 35 | }); 36 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/jquery/vender/liscroll/li-scroller.css: -------------------------------------------------------------------------------- 1 | /* liScroll styles */ 2 | 3 | .tickercontainer { /* the outer div with the black border */ 4 | border: 1px solid #000; 5 | background: #fff; 6 | width: 738px; 7 | height: 27px; 8 | margin: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | } 12 | .tickercontainer .mask { /* that serves as a mask. so you get a sort of padding both left and right */ 13 | position: relative; 14 | left: 10px; 15 | top: 8px; 16 | width: 718px; 17 | overflow: hidden; 18 | } 19 | ul.newsticker { /* that's your list */ 20 | position: relative; 21 | left: 750px; 22 | font: bold 10px Verdana; 23 | list-style-type: none; 24 | margin: 0; 25 | padding: 0; 26 | 27 | } 28 | ul.newsticker li { 29 | float: left; /* important: display inline gives incorrect results when you check for elem's width */ 30 | margin: 0; 31 | padding: 0; 32 | background: #fff; 33 | } 34 | ul.newsticker a { 35 | white-space: nowrap; 36 | padding: 0; 37 | color: #ff0000; 38 | font: bold 10px Verdana; 39 | margin: 0 50px 0 0; 40 | } 41 | ul.newsticker span { 42 | margin: 0 10px 0 0; 43 | } -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/lesson_animation/1/main.js: -------------------------------------------------------------------------------- 1 | document.querySelector('#checkbox').addEventListener('change', (event) => { 2 | const element = document.querySelector('.rect'); 3 | if (element.classList.contains('state-show') === true) { 4 | element.classList.remove('state-show'); 5 | } else { 6 | element.classList.add('state-show'); 7 | } 8 | }); 9 | 10 | const targetEl = document.querySelector('.rect'); 11 | targetEl.addEventListener('animationstart', (event) => { 12 | // アニメーションが開始したときのイベント 13 | document.querySelector('.log').innerHTML = 'animationstart 発生 : ' + new Date().toLocaleTimeString(); 14 | }); 15 | 16 | targetEl.addEventListener('animationiteration', (event) => { 17 | // アニメーションで繰り返しが発生した時のイベント 18 | // (繰り返しが未指定の場合は発生しない) 19 | document.querySelector('.log').innerHTML = 'animationiteration 発生 : ' + new Date().toLocaleTimeString(); 20 | }); 21 | 22 | targetEl.addEventListener('animationend', (event) => { 23 | // アニメーションが完了したときのイベント 24 | // (繰り返しを指定した場合は発生しない) 25 | document.querySelector('.log').innerHTML = 'animationend 発生 : ' + new Date().toLocaleTimeString(); 26 | }); -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/common/style.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | width: 100%; 4 | height: 100%; 5 | } 6 | 7 | body { 8 | display: flex; 9 | justify-content: center; 10 | align-items: center; 11 | flex-direction: row; 12 | background: #000; 13 | } 14 | 15 | body:before { 16 | width: 100%; 17 | height: 100%; 18 | content: ''; 19 | display: block; 20 | position: absolute; 21 | left: 0; 22 | top: 0; 23 | background-size: cover; 24 | z-index: 0; 25 | } 26 | 27 | body > * { 28 | position: relative; 29 | z-index: 1; 30 | } 31 | 32 | main { 33 | background-color: rgba(0, 0, 0, 0.58); 34 | border-radius: 10px; 35 | width: 100%; 36 | max-width: 900px; 37 | height: 480px; 38 | padding: 20px; 39 | box-sizing: border-box; 40 | } 41 | 42 | main.centering { 43 | display: flex; 44 | justify-content: center; 45 | align-items: center; 46 | flex-direction: column; 47 | } 48 | 49 | p { 50 | color: #fff; 51 | } 52 | 53 | button { 54 | background-color: rgba(0, 0, 0, 0.1); 55 | padding: 10px; 56 | color: #fff; 57 | cursor: pointer; 58 | } 59 | 60 | li { 61 | color: #fff; 62 | } -------------------------------------------------------------------------------- /frontend/vue-library-training/src/views/vuerouter/VueRouterSecondPage.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 44 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/confirm/confirm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JavaScript 確認用 6 | 17 | 18 | 19 |
20 |
21 |
22 | 23 | 40 | -------------------------------------------------------------------------------- /vuets/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vuets", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint", 9 | "test:unit": "vue-cli-service test:unit", 10 | "test:e2e": "vue-cli-service test:e2e" 11 | }, 12 | "dependencies": { 13 | "register-service-worker": "^1.0.0", 14 | "vue": "^2.5.17", 15 | "vue-class-component": "^6.0.0", 16 | "vue-property-decorator": "^7.0.0", 17 | "vue-router": "^3.0.1", 18 | "vuex": "^3.0.1" 19 | }, 20 | "devDependencies": { 21 | "@cypress/webpack-preprocessor": "^3.0.0", 22 | "@types/chai": "^4.1.0", 23 | "@types/mocha": "^5.2.4", 24 | "@vue/cli-plugin-babel": "^3.0.1", 25 | "@vue/cli-plugin-e2e-cypress": "^3.0.1", 26 | "@vue/cli-plugin-pwa": "^3.0.1", 27 | "@vue/cli-plugin-typescript": "^3.0.1", 28 | "@vue/cli-plugin-unit-mocha": "^3.0.1", 29 | "@vue/cli-service": "^3.0.1", 30 | "@vue/test-utils": "^1.0.0-beta.20", 31 | "chai": "^4.1.2", 32 | "stylus": "^0.54.5", 33 | "stylus-loader": "^3.0.2", 34 | "typescript": "^3.0.0", 35 | "vue-template-compiler": "^2.5.17" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/htmlcss/lesson/common.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | XXXX(HTML/CSS レッスン) 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 20 | 27 |
28 | 29 | 30 |
31 |
32 | 33 |
34 |
35 | 36 | 37 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /backend/firebase-training/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | 6 | // Firebase 7 | import { firebaseConfig } from '@/repository/firebaseConfig' 8 | import firebase from 'firebase/app' 9 | import 'firebase/firestore' 10 | 11 | // Vuetify 12 | import Vuetify from 'vuetify' 13 | import colors from 'vuetify/es5/util/colors' 14 | import 'vuetify/dist/vuetify.min.css' 15 | 16 | // Firebase 17 | firebase.initializeApp(firebaseConfig) 18 | firebase.firestore.FieldValue.serverTimestamp() 19 | 20 | // Vuetify 21 | Vue.use(Vuetify, { 22 | theme: { 23 | original: colors.purple.base, 24 | theme: '#5982EE', 25 | background: '#ffffff', 26 | whiteCloud: '#F8F9FB', 27 | grayTheme: '#79838C', 28 | blueTheme: '#5982EE', 29 | sky: '#A2DCED', 30 | sea: '#698FF0', 31 | blackFlat: '#202223', 32 | twitter: '#00aced', 33 | facebook: '#305097', 34 | line: '#5ae628', 35 | gold: '#FFD700', 36 | goldenrod: '#DAA520', 37 | red: '#F26964', 38 | error: '#F26964', 39 | succcess: '#698FF0', 40 | }, 41 | options: { 42 | themeVariations: ['original', 'secondary'], 43 | }, 44 | }) 45 | 46 | Vue.config.productionTip = false 47 | 48 | new Vue({ 49 | router, 50 | store, 51 | render: (h) => h(App), 52 | }).$mount('#app') 53 | -------------------------------------------------------------------------------- /backend/firebase-training/storage.rules: -------------------------------------------------------------------------------- 1 | service firebase.storage { 2 | match /b/{bucket}/o { 3 | match /version/{versionId} { 4 | function isAuthenticated() { 5 | return request.auth != null; 6 | } 7 | function isUserAuthenticated(id) { 8 | return request.auth.uid == id; 9 | } 10 | function limitSize() { 11 | // ファイルサイズが3Mbyte以下であること 12 | return request.resource.size <= 3 * 1024 * 1024; 13 | } 14 | function isImageType() { 15 | // contentTypeがimageである 16 | return request.resource.contentType.matches('image/.*'); 17 | } 18 | match /user/{userId} { 19 | // 認証有り、規定のファイルサイズとファイル形式で操作可 20 | match /{fileId} { 21 | allow read, delete: if isAuthenticated() && isUserAuthenticated(userId); 22 | allow create, update: if isAuthenticated() && isUserAuthenticated(userId) && limitSize() && isImageType(); 23 | } 24 | } 25 | match /folder/{fileId} { 26 | // 認証無しで操作可 27 | allow read, write: if true; 28 | } 29 | match /userpractice/{userpracticeId} { 30 | // 認証無しで操作可 31 | match /{fileId} { 32 | allow read, write: if true; 33 | } 34 | } 35 | match /userstorage/{userstorageId} { 36 | match /{fileId} { 37 | allow read, write: if true; 38 | } 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /frontend/spa/README.md: -------------------------------------------------------------------------------- 1 | # SPAの作成 2 | 3 | ## 概要 4 | Vue.jsでここまで学んだ技術を用いてSPA(シングルページアプリケーション)を作成しましょう。
5 |
6 | SPAとは単一のWebページで構成されるWebアプリケーションです。
7 | 本レッスンではフロントエンドはVue.jsで開発を行い、外部公開されているWebAPIを用いてオリジナルのアプリケーションを作りGithub Pagesにデプロイして公開しましょう。
8 | 9 | ### SPAの例 10 | Vue.jsとNEM APIを用いて作ったNEMウォレットです。
11 | [ブロックチェーンNEMウォレット](https://hukusuke1007.github.io/nem-wallet/)
12 |
13 | 作り方は[こちら](https://qiita.com/hukusuke1007/items/132a4d3d3736c98125e8) 14 | 15 | ### SPAのアイデア案 16 | 17 | - Qiita記事検索アプリ 18 | - GitHubリポジトリ検索アプリ 19 | - ブロックチェーンウォレットアプリ 20 | - 動画検索アプリ 21 | など 22 | 23 | ### 利用できる外部API 24 | 25 | | サービス名 | ドキュメント | 備考 | 26 | | :------- | :--- | :-- | 27 | | Qiita | [公式ドキュメント](https://qiita.com/api/v2/docs) | | 28 | | GitHub | [公式ドキュメント](https://developer.github.com/v3/) | | 29 | | Twitter | [公式ドキュメント](https://developer.twitter.com/en/docs.html)
[日本語訳(※古い可能性がある)](http://westplain.sakuraweb.com/translate/twitter/Documentation/REST-APIs/Public-API/REST-APIs.cgi) | Developer登録が必要
[Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ](https://qiita.com/kngsym2018/items/2524d21455aac111cdee) | 30 | | Facebook | [公式ドキュメント](https://developers.facebook.com/docs/apis-and-sdks?locale=ja_JP) | Developer登録が必要 | 31 | | NEMブロックチェーン | [公式ドキュメント](https://nemproject.github.io/)
[日本語訳](http://i-yusuke.com/entry/nem-nis-api-document-japanese/)| | 32 | | Avgle | [公式ドキュメント](https://avgle.github.io/doc/) | 18禁 | 33 | 34 |
35 | 他にも利用できるAPIはありますので探してみてください。 -------------------------------------------------------------------------------- /frontend/htmlcssjs/lesson/javascript/task/8/main.js: -------------------------------------------------------------------------------- 1 | let number = 0; 2 | 3 | /** 追加 */ 4 | function create() { 5 | const text = document.getElementById('text'); 6 | if (text.value !== '') { 7 | // ul取得 8 | const ul = document.getElementById('result'); 9 | 10 | // 要素を作成 11 | const li = document.createElement('li'); 12 | li.setAttribute('id', number); 13 | 14 | const input = document.createElement('input'); 15 | input.setAttribute('type', 'checkbox'); 16 | input.setAttribute('name', 'item'); 17 | li.appendChild(input); 18 | 19 | const span = document.createElement('span'); 20 | span.innerHTML = text.value; 21 | li.appendChild(span); 22 | ul.appendChild(li); 23 | 24 | number += 1; 25 | } else { 26 | console.log('textareaは空です。'); 27 | } 28 | } 29 | 30 | /** 削除 */ 31 | function remove() { 32 | const items = document.getElementsByName('item'); 33 | 34 | // 削除するelementを配列へ入れる 35 | const deleteItems = [] 36 | for (let i = 0; i < items.length; i++){ 37 | if (items[i].checked) { 38 | let id = items[i].parentNode.id; 39 | let element = document.getElementById(id); 40 | deleteItems.push(element) 41 | } 42 | } 43 | 44 | // 削除. 45 | for (let i = 0; i < deleteItems.length; i++){ 46 | deleteItems[i].parentNode.removeChild(deleteItems[i]); 47 | } 48 | } 49 | 50 | document.querySelector('#btn1').addEventListener('click', create); 51 | document.querySelector('#btn2').addEventListener('click', remove); -------------------------------------------------------------------------------- /frontend/frontendkadai2/src/components/InputForm.vue: -------------------------------------------------------------------------------- 1 |