diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..39fb081
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+*.iml
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+.externalNativeBuild
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..7ac24c7
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5489fee
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..de72507
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..7f68460
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..c795b05
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+build
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..c70e914
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,91 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'realm-android'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 25
+ buildToolsVersion "25.0.3"
+ defaultConfig {
+ applicationId "ntlab.org.leftoverrecipe"
+ minSdkVersion 21
+ targetSdkVersion 25
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+ packagingOptions {
+ exclude 'META-INF/rxjava.properties'
+ exclude 'META-INF/DEPENDENCIES.txt'
+ exclude 'META-INF/LICENSE.txt'
+ exclude 'META-INF/LICENSE.md'
+ exclude 'META-INF/NOTICE.txt'
+ exclude 'META-INF/NOTICE'
+ exclude 'META-INF/LICENSE'
+ exclude 'META-INF/DEPENDENCIES'
+ exclude 'META-INF/notice.txt'
+ exclude 'META-INF/license.txt'
+ exclude 'META-INF/dependencies.txt'
+ exclude 'META-INF/LGPL2.1'
+ exclude 'META-INF/ASL2.0'
+ exclude 'META-INF/CONTRIBUTORS.md'
+ }
+ dataBinding {
+ enabled = true
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
+ exclude group: 'com.android.support', module: 'support-annotations'
+ })
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
+ implementation 'com.android.support:appcompat-v7:25.4.0'
+ testImplementation 'junit:junit:4.12'
+ implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+
+ // Android Desigh
+ compile 'com.android.support:design:25.4.0'
+
+ // CardView
+ compile "com.android.support:cardview-v7:25.4.0"
+
+ // Android BootStrap
+ compile 'com.beardedhen:androidbootstrap:2.3.1'
+
+ // OkHttp
+ compile 'com.squareup.okhttp3:okhttp:3.7.0'
+
+ // rxJava, rxAndroid
+ compile 'io.reactivex.rxjava2:rxjava:2.0.0-RC3'
+ compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1'
+
+ // retrofit2
+ compile 'com.squareup.retrofit2:converter-gson:2.1.0'
+ compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
+ compile 'com.squareup.retrofit2:retrofit:2.1.0'
+
+ // jackson
+ compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.11'
+
+ // Glide
+ compile 'com.github.bumptech.glide:glide:3.8.0'
+
+ // Kotlin DataBinding
+ kapt "com.android.databinding:compiler:2.5.0-alpha-preview-02"
+
+ // Kuromoji
+ compile "com.atilika.kuromoji:kuromoji-ipadic:0.9.0"
+}
+
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..45bcd7b
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /Users/matsumoto_k/Library/Android/sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/app/src/androidTest/java/org/ntlab/leftoverrecipe/ExampleInstrumentedTest.kt b/app/src/androidTest/java/org/ntlab/leftoverrecipe/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..175fe62
--- /dev/null
+++ b/app/src/androidTest/java/org/ntlab/leftoverrecipe/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package org.ntlab.leftoverrecipe
+
+import android.support.test.InstrumentationRegistry
+import android.support.test.runner.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getTargetContext()
+ assertEquals("org.ntlab.leftoverrecipe", appContext.packageName)
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..ec00738
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/App.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/App.kt
new file mode 100644
index 0000000..4caf114
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/App.kt
@@ -0,0 +1,14 @@
+package org.ntlab.leftoverrecipe
+
+import android.app.Application
+import com.beardedhen.androidbootstrap.TypefaceProvider
+
+/**
+ * Created by matsumoto_k on 2017/05/20
+ */
+class App : Application() {
+ override fun onCreate() {
+ super.onCreate()
+ TypefaceProvider.registerDefaultIconSets()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt
new file mode 100644
index 0000000..05abda1
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/DetailRecipeActivity.kt
@@ -0,0 +1,29 @@
+package org.ntlab.leftoverrecipe.activity
+
+import android.databinding.DataBindingUtil
+import android.os.Bundle
+import android.support.v4.app.FragmentActivity
+import com.bumptech.glide.Glide
+import kotlinx.android.synthetic.main.activity_detail_recipe.*
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.databinding.ActivityDetailRecipeBinding
+import org.ntlab.leftoverrecipe.viewmodel.DetailRecipeViewModel
+
+class DetailRecipeActivity : FragmentActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_detail_recipe)
+
+ val hoge = intent
+ val recipeData: RecipeApiResponse.RecipeData = hoge.getSerializableExtra("recipeData") as RecipeApiResponse.RecipeData
+
+ val binding = DataBindingUtil.setContentView(this@DetailRecipeActivity, R.layout.activity_detail_recipe)
+ val viewModel = DetailRecipeViewModel(this, recipeData)
+ binding.viewModel = viewModel
+
+
+ Glide.with(this).load("").into(hogeImage)
+ }
+}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt
new file mode 100644
index 0000000..d090827
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/activity/SearchActivity.kt
@@ -0,0 +1,47 @@
+package org.ntlab.leftoverrecipe.activity
+
+import android.app.Activity
+import android.content.Intent
+import android.databinding.DataBindingUtil
+import android.os.Bundle
+import android.support.v7.widget.LinearLayoutManager
+import kotlinx.android.synthetic.main.activity_search.*
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.adapter.SearchListAdapter
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.contract.SearchListViewContract
+import org.ntlab.leftoverrecipe.databinding.ActivitySearchBinding
+import org.ntlab.leftoverrecipe.viewmodel.SearchViewModel
+
+class SearchActivity : Activity(), SearchListViewContract {
+
+ var adapter: SearchListAdapter? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_search)
+
+ val binding = DataBindingUtil.setContentView(this, R.layout.activity_search)
+ val viewModel = SearchViewModel(this, this as SearchListViewContract)
+ binding.viewModel = viewModel
+
+ setupViews()
+ }
+
+ fun setupViews() {
+ searchListView.layoutManager = LinearLayoutManager(this)
+ adapter = SearchListAdapter(this, this as SearchListViewContract)
+ searchListView.adapter = adapter
+ }
+
+ override fun showRecipe(response: RecipeApiResponse) {
+ adapter?.setItemAndRefresh(response.result!!)
+ }
+
+
+ override fun startDetailActivity(recipeData: RecipeApiResponse.RecipeData) {
+ val intent = Intent(this@SearchActivity, DetailRecipeActivity::class.java)
+ intent.putExtra("recipeData", recipeData)
+ startActivity(intent)
+ }
+}
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt
new file mode 100644
index 0000000..78c5414
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/adapter/SearchListAdapter.kt
@@ -0,0 +1,63 @@
+package org.ntlab.leftoverrecipe.adapter
+
+import android.content.Context
+import android.databinding.DataBindingUtil
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import kotlinx.android.synthetic.main.search_list_item.view.*
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.contract.SearchListViewContract
+import org.ntlab.leftoverrecipe.databinding.SearchListItemBinding
+import org.ntlab.leftoverrecipe.viewmodel.ListItemViewModel
+
+/**
+ * Created by matsumoto_k on 2017/05/20
+ */
+class SearchListAdapter(var context: Context, var view: SearchListViewContract) : RecyclerView.Adapter() {
+
+ var items: ArrayList? = null
+
+ inner class ViewHolder(itemView: View, viewModel: ListItemViewModel) : RecyclerView.ViewHolder(itemView) {
+ var viewModel: ListItemViewModel? = null
+ var imageVieww = itemView?.rootView?.listImageView
+
+ init {
+ this.viewModel = viewModel
+ }
+
+ fun loadItem(item: RecipeApiResponse.RecipeData) {
+ viewModel?.loadItem(item)
+ }
+ }
+
+ fun setItemAndRefresh(items: ArrayList) {
+ println("きたよ")
+ this.items = items
+ notifyDataSetChanged()
+ }
+
+ fun getItemAt(position: Int): RecipeApiResponse.RecipeData? {
+ return items?.get(position)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
+ val item = getItemAt(position)
+ holder?.loadItem(item!!)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
+ val binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.search_list_item, parent, false)
+ binding.viewModel = ListItemViewModel(view)
+ return ViewHolder(binding.root, binding.viewModel!!)
+ }
+
+ override fun getItemCount(): Int {
+ if (items == null) {
+ return 0
+ }
+ return items?.size!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/Api.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/Api.kt
new file mode 100644
index 0000000..1082e15
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/Api.kt
@@ -0,0 +1,21 @@
+package org.ntlab.leftoverrecipe.api
+
+import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+/**
+ * Created by matsumoto_k on 2017/05/20
+ */
+abstract class Api {
+ abstract var endPoint: String
+
+ fun getClient(): Retrofit {
+ val retrofit = Retrofit.Builder()
+ .baseUrl(endPoint)
+ .addConverterFactory(GsonConverterFactory.create())
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .build()
+ return retrofit
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApi.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApi.kt
new file mode 100644
index 0000000..bcf2aab
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApi.kt
@@ -0,0 +1,11 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import org.ntlab.leftoverrecipe.api.Api
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+class DetailApi : Api() {
+ //http://nitta-lab-www2.is.konan-u.ac.jp:8080/ScrapeRecipe/Scrape?recipeUrl=https://recipe.rakuten.co.jp/recipe/1920015991/
+ override var endPoint: String = "http://nitta-lab-www2.is.konan-u.ac.jp:8080/"
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApiClient.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApiClient.kt
new file mode 100644
index 0000000..055a2f4
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApiClient.kt
@@ -0,0 +1,53 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import org.ntlab.leftoverrecipe.api.Api
+import org.ntlab.leftoverrecipe.model.RxBus
+import org.ntlab.leftoverrecipe.viewmodel.SearchViewModel
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+object DetailApiClient : Api() {
+ override var endPoint: String = "http://nitta-lab-www2.is.konan-u.ac.jp:8080/"
+ var connection = false
+
+ fun getRecipeData(recipeUrl: String) {
+ if (connection)
+ return
+ val recipeService = getClient().create(DetailService::class.java).getRecipe(recipeUrl = recipeUrl)
+ RxBus.send(SearchViewModel.StartRecipeApi)
+ connection = true
+ recipeService.subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(
+ object : Observer {
+ override fun onComplete() {
+ println("onComplete")
+ connection = false
+ }
+
+ override fun onSubscribe(d: Disposable) {
+ println("onSubscribe")
+ }
+
+ override fun onNext(response: DetailApiResponse) {
+ println("onNext")
+ println("Success")
+ if (response != null) {
+ RxBus.send(response)
+ }
+ }
+
+ override fun onError(e: Throwable) {
+ println("onError")
+ connection = false
+ println(e.message)
+ RxBus.send(SearchViewModel.ErrorRecipeApi)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApiResponse.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApiResponse.kt
new file mode 100644
index 0000000..02ebb63
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailApiResponse.kt
@@ -0,0 +1,19 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+open class DetailApiResponse() {
+ var anyone: String = ""
+ var howto: ArrayList = ArrayList()
+ var material: ArrayList = ArrayList()
+
+ inner class Howto {
+ var step: String = ""
+ }
+
+ inner class Material {
+ var amount: String = ""
+ var material: String = ""
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailService.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailService.kt
new file mode 100644
index 0000000..ce119ba
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/detailrecipe/DetailService.kt
@@ -0,0 +1,15 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import io.reactivex.Observable
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+interface DetailService {
+
+ @GET("ScrapeRecipe/Scrape")
+ fun getRecipe(@Query("recipeUrl") recipeUrl: String): Observable
+
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeApi.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeApi.kt
new file mode 100644
index 0000000..a9c349c
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeApi.kt
@@ -0,0 +1,10 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import org.ntlab.leftoverrecipe.api.Api
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+class RecipeApi : Api() {
+ override var endPoint: String = "https://app.rakuten.co.jp/"
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeApiResponse.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeApiResponse.kt
new file mode 100644
index 0000000..f875a5f
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeApiResponse.kt
@@ -0,0 +1,28 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import java.io.Serializable
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+open class RecipeApiResponse() {
+ var result: ArrayList? = null
+
+ class RecipeData : Serializable {
+ val recipeTitle: String? = null
+ val foodImageUrl: String? = null
+ val recipeDescription: String? = null
+ val recipeMaterial: List? = null
+ val recipeIndication: String? = null
+ val recipeCost: String? = null
+ val mediumImageUrl: String? = null
+ val smallImageUrl: String? = null
+ val pickup: Int = 0
+ val shop: Int = 0
+ val nickname: String? = null
+ val recipePublishday: String? = null
+ val rank: String? = null
+ val recipeId: Int = 0
+ val recipeUrl: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeClient.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeClient.kt
new file mode 100644
index 0000000..194a198
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeClient.kt
@@ -0,0 +1,54 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import org.ntlab.leftoverrecipe.api.Api
+import org.ntlab.leftoverrecipe.model.RxBus
+import org.ntlab.leftoverrecipe.viewmodel.SearchViewModel
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+object RecipeClient : Api() {
+ override var endPoint: String = "https://app.rakuten.co.jp/"
+ var connection = false
+
+ fun getRecipeData(categoryId: String) {
+ if (connection)
+ return
+ val recipeService = getClient().create(RecipeService::class.java).getRecipe(categoryId = categoryId)
+ RxBus.send(SearchViewModel.StartRecipeApi)
+ connection = true
+ recipeService.subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(
+ object : Observer {
+ override fun onComplete() {
+ println("onComplete")
+ RxBus.send(SearchViewModel.EndRecipeApi)
+ connection = false
+ }
+
+ override fun onSubscribe(d: Disposable) {
+ println("onSubscribe")
+ }
+
+ override fun onNext(response: RecipeApiResponse) {
+ println("onNext")
+ RxBus.send(SearchViewModel.EndRecipeApi)
+ if (response != null) {
+ RxBus.send(response)
+ }
+ }
+
+ override fun onError(e: Throwable) {
+ println("onError")
+ connection = false
+ println(e.message)
+ RxBus.send(SearchViewModel.ErrorRecipeApi)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeService.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeService.kt
new file mode 100644
index 0000000..32acb10
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/api/recipe/RecipeService.kt
@@ -0,0 +1,15 @@
+package org.ntlab.leftoverrecipe.api.recipe
+
+import io.reactivex.Observable
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+interface RecipeService {
+
+ @GET("services/api/Recipe/CategoryRanking/20121121")
+ fun getRecipe(@Query("format") format: String = "json", @Query("categoryId") categoryId: String, @Query("applicationId") applicationId: String = "1006988116707470264"): Observable
+
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/RegistDialogViewContract.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/RegistDialogViewContract.kt
new file mode 100644
index 0000000..d33544c
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/RegistDialogViewContract.kt
@@ -0,0 +1,11 @@
+package org.ntlab.leftoverrecipe.contract
+
+import android.graphics.Bitmap
+
+/**
+ * Created by matsumoto_k on 2017/07/06.
+ */
+interface RegistDialogViewContract {
+ fun startCamera()
+ fun getData(): Bitmap
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/SearchListViewContract.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/SearchListViewContract.kt
new file mode 100644
index 0000000..643e227
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/contract/SearchListViewContract.kt
@@ -0,0 +1,11 @@
+package org.ntlab.leftoverrecipe.contract
+
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+interface SearchListViewContract {
+ fun showRecipe(response: RecipeApiResponse)
+ fun startDetailActivity(recipeData: RecipeApiResponse.RecipeData)
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt
new file mode 100644
index 0000000..965f673
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/fragment/RegistDialogFragment.kt
@@ -0,0 +1,67 @@
+package org.ntlab.leftoverrecipe.fragment
+
+import android.app.Dialog
+import android.app.DialogFragment
+import android.content.Intent
+import android.databinding.DataBindingUtil
+import android.graphics.Bitmap
+import android.os.Bundle
+import android.provider.MediaStore
+import android.view.LayoutInflater
+import android.view.View
+import android.view.WindowManager
+import android.widget.ImageView
+import org.ntlab.leftoverrecipe.R
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.contract.RegistDialogViewContract
+import org.ntlab.leftoverrecipe.databinding.FragmentRegistDialogBinding
+import org.ntlab.leftoverrecipe.viewmodel.RegistDialogViewModel
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+class RegistDialogFragment(var recipeData: RecipeApiResponse.RecipeData) : DialogFragment(), RegistDialogViewContract {
+
+ var bitmap: Bitmap? = null
+
+ companion object {
+ val RESULT_CAMERA = 1
+ }
+
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+
+ val dialog = Dialog(activity)
+ val binding = DataBindingUtil.inflate(LayoutInflater.from(dialog.context), R.layout.fragment_regist_dialog, null, false)
+ dialog.setContentView(binding.root)
+ dialog.window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
+ val viewModel = RegistDialogViewModel(activity, dialog, recipeData, this as RegistDialogViewContract)
+ binding.viewModel = viewModel
+ return dialog
+ }
+
+ override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
+ }
+
+ override fun startCamera() {
+ val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
+ startActivityForResult(intent, RESULT_CAMERA)
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ when (requestCode) {
+ RESULT_CAMERA -> {
+ val bitmap = data?.extras?.get("data") as Bitmap
+ dialog.window.findViewById(R.id.dialogCaptureButton).visibility = View.GONE
+ val imageView = dialog.window.findViewById(R.id.dialogImageView) as ImageView
+ imageView.setImageBitmap(bitmap)
+ imageView.visibility = View.VISIBLE
+
+ this.bitmap = bitmap
+ }
+ }
+ }
+
+ override fun getData(): Bitmap {
+ return bitmap!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/RxBus.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/RxBus.kt
new file mode 100644
index 0000000..faa21e9
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/RxBus.kt
@@ -0,0 +1,48 @@
+package org.ntlab.leftoverrecipe.model
+
+import io.reactivex.Observable
+import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.disposables.Disposable
+import io.reactivex.subjects.PublishSubject
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+object RxBus {
+
+ private val subscriptionsMap: HashMap by lazy {
+ HashMap()
+ }
+
+ val bus = (PublishSubject.create()).toSerialized()
+
+ fun send(event: Any) {
+ bus.onNext(event)
+ }
+
+ inline fun observe(): Observable {
+ return bus.ofType(eventType::class.java)
+ }
+
+ fun unregister(subscriber: Any) {
+ val compositeSubscription = subscriptionsMap[subscriber]
+ if (compositeSubscription == null) {
+ } else {
+ compositeSubscription.clear()
+ subscriptionsMap.remove(subscriber)
+ }
+ }
+
+ internal fun register(subscriber: Any, subscription: Disposable) {
+ var compositeDisposable = subscriptionsMap[subscriber]
+ if (compositeDisposable == null) {
+ compositeDisposable = CompositeDisposable()
+ }
+ compositeDisposable.add(subscription)
+ subscriptionsMap[subscriber] = compositeDisposable
+ }
+}
+
+fun Disposable.registerInBus(subscriber: Any) {
+ RxBus.register(subscriber, this)
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RealmBase.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RealmBase.kt
new file mode 100644
index 0000000..bab241b
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RealmBase.kt
@@ -0,0 +1,20 @@
+package org.ntlab.leftoverrecipe.model.db
+
+import io.realm.DynamicRealm
+import io.realm.RealmConfiguration
+import io.realm.RealmMigration
+
+/**
+ * Created by matsumoto_k on 2017/07/06.
+ */
+open class RealmBase {
+ val config = RealmConfiguration.Builder()
+ .name("recipe.realm")
+ .schemaVersion(1)
+ .migration(object : RealmMigration {
+ override fun migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long) {
+ val schema = realm?.schema
+ }
+ })
+ .build()
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt
new file mode 100644
index 0000000..6388082
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeData.kt
@@ -0,0 +1,14 @@
+package org.ntlab.leftoverrecipe.model.db
+
+import io.realm.RealmObject
+import java.util.*
+
+/**
+ * Created by matsumoto_k on 2017/07/06.
+ */
+open class RecipeData(
+ //open var date: Date = Date(),
+ open var recipeName: String = "",
+ open var makeTimeZone: String = "",
+ open var comment: String = ""
+) : RealmObject()
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt
new file mode 100644
index 0000000..bfb7c4f
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/model/db/RecipeDataRealm.kt
@@ -0,0 +1,20 @@
+package org.ntlab.leftoverrecipe.model.db
+
+import io.realm.Realm
+
+/**
+ * Created by matsumoto_k on 2017/07/06.
+ */
+object RecipeDataRealm : RealmBase() {
+ var mRealm: Realm? = null
+
+ fun insert(recipeData: RecipeData) {
+ mRealm = Realm.getInstance(config)
+ mRealm.use {
+ realm ->
+ realm?.executeTransaction {
+ realm?.copyToRealmOrUpdate(recipeData)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/util/Category.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/util/Category.kt
new file mode 100644
index 0000000..be010a0
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/util/Category.kt
@@ -0,0 +1,25 @@
+package org.ntlab.leftoverrecipe.util
+
+import android.content.Context
+import org.codehaus.jackson.map.ObjectMapper
+import org.ntlab.leftoverrecipe.R
+
+/**
+ * Created by matsumoto_k on 2017/05/20
+ */
+class Category {
+ companion object {
+ fun getCategoryId(context: Context, material: String): String {
+ var mapper = ObjectMapper()
+ val res = context.getResources()
+ val inputStream = res.openRawResource(R.raw.category)
+ val root = mapper.readTree(inputStream)
+ val categoryId =
+ if (root.get(material) != null)
+ root.get(material).asText()
+ else
+ "30"
+ return categoryId
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt
new file mode 100644
index 0000000..3f55fdc
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/DetailRecipeViewModel.kt
@@ -0,0 +1,71 @@
+package org.ntlab.leftoverrecipe.viewmodel
+
+import android.app.Activity
+import android.databinding.BaseObservable
+import android.databinding.BindingAdapter
+import android.databinding.ObservableField
+import android.view.View
+import android.widget.ImageView
+import com.bumptech.glide.Glide
+import org.ntlab.leftoverrecipe.api.recipe.DetailApiClient
+import org.ntlab.leftoverrecipe.api.recipe.DetailApiResponse
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.fragment.RegistDialogFragment
+import org.ntlab.leftoverrecipe.model.RxBus
+import org.ntlab.leftoverrecipe.model.registerInBus
+
+/**
+ * Created by matsumoto_k on 2017/05/20
+ */
+class DetailRecipeViewModel(var context: Activity, var recipeData: RecipeApiResponse.RecipeData) : BaseObservable() {
+ val recipeTitle = ObservableField()
+ val detailTextView = ObservableField()
+ val imageUrl = ObservableField()
+ val stepText = ObservableField()
+ val anyone = ObservableField()
+ val material = ObservableField()
+
+ companion object {
+ @JvmStatic @BindingAdapter("imageUrl")
+ fun imageUrl(imageView: ImageView, url: String) {
+ println(url)
+ Glide.with(imageView.context).load(url).into(imageView)
+ }
+ }
+
+ init {
+ println(recipeData.recipeTitle)
+ recipeTitle.set(recipeData.recipeTitle)
+ imageUrl.set(recipeData.foodImageUrl)
+
+ load(recipeData.recipeUrl!!)
+
+ RxBus.observe().subscribe {
+ var stepText = ""
+ var material = ""
+ var count = 1
+ for (data in it.howto) {
+ stepText += "${count}.${data.step}\n"
+ count++
+ }
+ for (data in it.material){
+ material+= "${data.amount}\n${data.material}\n\n"
+ }
+ println(stepText)
+ this.stepText.set(stepText)
+ this.anyone.set(it.anyone)
+ this.material.set(material)
+ println("DetailApiResponseRxBus")
+ }.registerInBus(this)
+ }
+
+ fun load(recipeUrl: String) {
+ val recipeClient = DetailApiClient
+ recipeClient.getRecipeData(recipeUrl)
+ }
+
+ fun onClickFab(view: View) {
+ val dialog = RegistDialogFragment(recipeData)
+ dialog.show(context.fragmentManager, "hoge")
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt
new file mode 100644
index 0000000..ab9a1c1
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/ListItemViewModel.kt
@@ -0,0 +1,47 @@
+package org.ntlab.leftoverrecipe.viewmodel
+
+import android.databinding.BindingAdapter
+import android.databinding.ObservableField
+import android.view.View
+import android.widget.ImageView
+import com.bumptech.glide.Glide
+import org.ntlab.leftoverrecipe.api.recipe.DetailApiResponse
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.contract.SearchListViewContract
+
+/**
+ * Created by matsumoto_k on 2017/05/20
+ */
+class ListItemViewModel(var view: SearchListViewContract) {
+ var id = ObservableField()
+ var recipeTitle = ObservableField()
+ var cost = ObservableField()
+ var imageUrl = ObservableField()
+ var description = ObservableField()
+ var recipeUrl = ObservableField()
+ var recipeData: RecipeApiResponse.RecipeData? = null
+
+ companion object {
+ private var url = ""
+ @JvmStatic @BindingAdapter("bind:imageUrl")
+ fun imageUrl(imageView: ImageView, url: String) {
+ println(url)
+ Glide.with(imageView.context).load(url).into(imageView)
+ }
+ }
+
+ fun loadItem(recipeData: RecipeApiResponse.RecipeData) {
+ id.set(recipeData.recipeId.toString())
+ recipeTitle.set(recipeData.recipeTitle)
+ cost.set(recipeData.recipeCost)
+ imageUrl.set(recipeData.foodImageUrl)
+ description.set(recipeData.recipeDescription)
+ recipeUrl.set(recipeData.recipeUrl)
+ url = recipeData.recipeUrl!!
+ this.recipeData = recipeData
+ }
+
+ fun onItemClick(view: View) {
+ this.view.startDetailActivity(this.recipeData!!)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt
new file mode 100644
index 0000000..37040b3
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/RegistDialogViewModel.kt
@@ -0,0 +1,56 @@
+package org.ntlab.leftoverrecipe.viewmodel
+
+import android.app.Dialog
+import android.content.Context
+import android.databinding.BaseObservable
+import android.databinding.Bindable
+import android.databinding.ObservableField
+import android.view.View
+import android.widget.Toast
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.contract.RegistDialogViewContract
+import org.ntlab.leftoverrecipe.model.db.RecipeData
+import org.ntlab.leftoverrecipe.model.db.RecipeDataRealm
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+class RegistDialogViewModel(var context: Context, var customDialog: Dialog, var recipeData: RecipeApiResponse.RecipeData, var registDialog: RegistDialogViewContract) : BaseObservable() {
+
+ val recipeTitle = ObservableField()
+ @Bindable
+ var recipeName = ObservableField()
+ @Bindable
+ var timeZone = ObservableField()
+ @Bindable
+ var comment = ObservableField()
+
+ init {
+ recipeTitle.set(recipeData.recipeTitle)
+ println(recipeData.recipeTitle)
+ }
+
+ //RegistDialogのOkButtonListener
+ fun onClickOk(view: View) {
+
+ //記録する
+ val recipeData = RecipeData()
+ recipeData.recipeName = recipeName.get()
+ recipeData.comment = comment.get()
+ RecipeDataRealm.insert(recipeData)
+
+ println(comment.get())
+
+ Toast.makeText(context, "記録しました", Toast.LENGTH_SHORT).show()
+ customDialog.dismiss()
+ }
+
+ //RegistDialogのCancelButtonListener
+ fun onClickCancel(view: View) {
+ customDialog.dismiss()
+ }
+
+ fun onClickCapture(view: View) {
+ registDialog.startCamera()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt
new file mode 100644
index 0000000..a4be55a
--- /dev/null
+++ b/app/src/main/kotlin/org/ntlab/leftoverrecipe/viewmodel/SearchViewModel.kt
@@ -0,0 +1,70 @@
+package org.ntlab.leftoverrecipe.viewmodel
+
+import android.content.Context
+import android.databinding.BaseObservable
+import android.databinding.Bindable
+import android.databinding.ObservableField
+import android.databinding.ObservableInt
+import android.view.View
+import android.widget.Toast
+import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse
+import org.ntlab.leftoverrecipe.api.recipe.RecipeClient
+import org.ntlab.leftoverrecipe.contract.SearchListViewContract
+import org.ntlab.leftoverrecipe.model.RxBus
+import org.ntlab.leftoverrecipe.model.registerInBus
+import org.ntlab.leftoverrecipe.util.Category
+import java.sql.DriverManager.println
+
+
+/**
+ * Created by matsumoto_k on 2017/05/20.
+ */
+class SearchViewModel(var context: Context, var hoge: SearchListViewContract) : BaseObservable() {
+
+ val progressBarVisibility = ObservableInt(View.GONE)
+ @Bindable
+ var materialName: ObservableField = ObservableField()
+
+ companion
+
+ object {
+ const val StartRecipeApi = "StartRecipeApi"
+ const val EndRecipeApi = "EndRecipeApi"
+ const val ErrorRecipeApi = "ErrorRecipeApi"
+ }
+
+ init {
+
+ RxBus.observe().subscribe {
+ when (it) {
+ StartRecipeApi -> progressBarVisibility.set(View.VISIBLE)
+ EndRecipeApi -> progressBarVisibility.set(View.GONE)
+ ErrorRecipeApi -> {
+ progressBarVisibility.set(View.GONE)
+ //Toast.makeText(context, "通信エラーが発生しました", Toast.LENGTH_SHORT).show()
+ }
+ }
+ }.registerInBus(this)
+
+ RxBus.observe().subscribe {
+ hoge.showRecipe(it)
+ for (data in it?.result!!) {
+ println(data.recipeTitle)
+ }
+ }.registerInBus(this)
+ }
+
+ //検索ボタンクリック
+ fun onClickSearch(view: View) {
+ loadRecipe()
+ }
+
+ fun loadRecipe() {
+ if (materialName.get() == null) {
+ Toast.makeText(context, "食材を入力して下さい", Toast.LENGTH_SHORT).show()
+ return
+ }
+ val recipeClient = RecipeClient
+ recipeClient.getRecipeData(Category.getCategoryId(context, materialName.get()))
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/float_regist.png b/app/src/main/res/drawable/float_regist.png
new file mode 100644
index 0000000..8f29bf6
--- /dev/null
+++ b/app/src/main/res/drawable/float_regist.png
Binary files differ
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..1cd2a36
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_detail_recipe.xml b/app/src/main/res/layout/activity_detail_recipe.xml
new file mode 100644
index 0000000..d40badc
--- /dev/null
+++ b/app/src/main/res/layout/activity_detail_recipe.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
new file mode 100644
index 0000000..ebc34a7
--- /dev/null
+++ b/app/src/main/res/layout/activity_search.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_regist_dialog.xml b/app/src/main/res/layout/fragment_regist_dialog.xml
new file mode 100644
index 0000000..b89056f
--- /dev/null
+++ b/app/src/main/res/layout/fragment_regist_dialog.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/search_list_item.xml b/app/src/main/res/layout/search_list_item.xml
new file mode 100644
index 0000000..1cdebfa
--- /dev/null
+++ b/app/src/main/res/layout/search_list_item.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/test.xml b/app/src/main/res/layout/test.xml
new file mode 100644
index 0000000..221cbdc
--- /dev/null
+++ b/app/src/main/res/layout/test.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..00f9eaa
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..00f9eaa
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..5507303
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..4e526c9
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..8fab6a3
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..6bc7fcd
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..2c38c71
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..1eecc0e
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..ec87dce
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..072467e
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..05ca079
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..6f67f21
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..78a6b7a
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..8bac0f2
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..0327e13
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..68ebe33
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..bacd3e7
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/raw/category.json b/app/src/main/res/raw/category.json
new file mode 100644
index 0000000..e4e4af8
--- /dev/null
+++ b/app/src/main/res/raw/category.json
@@ -0,0 +1,1967 @@
+{"人気メニュー":"30",
+ "定番の肉料理":"31",
+ "定番の魚料理":"32",
+ "卵料理":"33",
+ "ご飯もの":"14",
+ "パスタ":"15",
+ "麺・粉物料理":"16",
+ "汁物・スープ":"17",
+ "鍋料理":"23",
+ "サラダ":"18",
+ "パン":"22",
+ "お菓子":"21",
+ "肉":"10",
+ "魚":"11",
+ "野菜":"12",
+ "果物":"34",
+ "ソース・調味料・ドレッシング":"19",
+ "飲みもの":"27",
+ "大豆・豆腐":"35",
+ "その他の食材":"13",
+ "お弁当":"20",
+ "簡単料理":"36",
+ "節約料理":"37",
+ "今日の献立":"38",
+ "健康料理":"39",
+ "調理器具":"40",
+ "その他の目的・シーン":"26",
+ "中華料理":"41",
+ "韓国料理":"42",
+ "イタリア料理":"43",
+ "フランス料理":"44",
+ "西洋料理":"25",
+ "エスニック料理・中南米":"46",
+ "沖縄料理":"47",
+ "日本各地の郷土料理":"48",
+ "行事・イベント":"24",
+ "おせち料理":"49",
+ "クリスマス":"50",
+ "ひな祭り":"51",
+ "春(3月~5月)":"52",
+ "夏(6月~8月)":"53",
+ "秋(9月~11月)":"54",
+ "冬(12月~2月)":"55",
+ "牛肉":"10-275",
+ "豚肉":"10-276",
+ "鶏肉":"10-277",
+ "ひき肉":"10-278",
+ "ベーコン":"10-68",
+ "ソーセージ・ウインナー":"10-66",
+ "ハム":"10-67",
+ "その他のお肉":"10-69",
+ "サーモン・鮭":"11-70",
+ "いわし":"11-71",
+ "さば":"11-72",
+ "あじ":"11-73",
+ "ぶり":"11-74",
+ "さんま":"11-75",
+ "鯛":"11-76",
+ "マグロ":"11-77",
+ "たら":"11-443",
+ "その他のさかな":"11-78",
+ "いか":"11-80",
+ "たこ":"11-81",
+ "エビ":"11-79",
+ "かに":"11-83",
+ "牡蠣":"11-444",
+ "貝類":"11-82",
+ "明太子・魚卵":"11-445",
+ "その他の魚介":"11-446",
+ "なす":"12-447",
+ "かぼちゃ":"12-448",
+ "大根":"12-449",
+ "きゅうり":"12-450",
+ "じゃがいも":"12-97",
+ "さつまいも":"12-452",
+ "キャベツ":"12-98",
+ "白菜":"12-453",
+ "トマト":"12-454",
+ "もやし":"12-99",
+ "小松菜":"12-456",
+ "ほうれん草":"12-457",
+ "ごぼう":"12-455",
+ "アボカド":"12-451",
+ "玉ねぎ":"12-96",
+ "ブロッコリー":"12-458",
+ "にんじん":"12-95",
+ "春野菜":"12-100",
+ "夏野菜":"12-101",
+ "秋野菜":"12-102",
+ "冬野菜":"12-103",
+ "きのこ":"12-105",
+ "香味野菜・ハーブ":"12-107",
+ "その他の野菜":"12-104",
+ "もち米":"13-478",
+ "もち麦":"13-706",
+ "マカロニ・ペンネ":"13-479",
+ "ホットケーキミックス":"13-480",
+ "粉類":"13-481",
+ "練物":"13-108",
+ "加工食品":"13-109",
+ "チーズ":"13-482",
+ "ヨーグルト":"13-483",
+ "こんにゃく":"13-111",
+ "しらたき":"13-112",
+ "海藻":"13-113",
+ "乾物":"13-114",
+ "漬物":"13-484",
+ "その他の食材":"13-115",
+ "オムライス":"14-121",
+ "チャーハン":"14-131",
+ "パエリア":"14-126",
+ "タコライス":"14-124",
+ "チキンライス":"14-122",
+ "ハヤシライス":"14-123",
+ "ロコモコ":"14-125",
+ "ピラフ":"14-127",
+ "ハッシュドビーフ":"14-368",
+ "その他○○ライス":"14-128",
+ "寿司":"14-129",
+ "丼物":"14-130",
+ "炊き込みご飯":"14-132",
+ "おかゆ・雑炊類":"14-133",
+ "おにぎり":"14-134",
+ "アレンジごはん":"14-135",
+ "その他のごはん料理":"14-271",
+ "カルボナーラ":"15-687",
+ "ミートソース":"15-137",
+ "ナポリタン":"15-676",
+ "ペペロンチーノ":"15-681",
+ "ジェノベーゼ":"15-369",
+ "ペスカトーレ":"15-677",
+ "たらこパスタ・明太子パスタ":"15-683",
+ "ボンゴレ":"15-682",
+ "アラビアータ":"15-678",
+ "トマトクリームパスタ":"15-679",
+ "納豆パスタ":"15-684",
+ "トマト系パスタ":"15-680",
+ "クリーム系パスタ":"15-138",
+ "オイル・塩系パスタ":"15-139",
+ "チーズ系パスタ":"15-140",
+ "バジルソース系パスタ":"15-141",
+ "和風パスタ":"15-142",
+ "きのこパスタ":"15-685",
+ "ツナパスタ":"15-686",
+ "冷製パスタ":"15-143",
+ "スープスパ・スープパスタ":"15-145",
+ "その他のパスタ":"15-146",
+ "パスタソース":"15-144",
+ "ニョッキ":"15-147",
+ "ラザニア":"15-151",
+ "ラビオリ":"15-382",
+ "うどん":"16-152",
+ "蕎麦":"16-153",
+ "そうめん":"16-154",
+ "焼きそば":"16-155",
+ "ラーメン":"16-156",
+ "冷やし中華":"16-383",
+ "つけ麺":"16-384",
+ "その他の麺":"16-272",
+ "お好み焼き":"16-385",
+ "たこ焼き":"16-386",
+ "粉物料理":"16-158",
+ "味噌汁":"17-159",
+ "豚汁":"17-161",
+ "けんちん汁":"17-387",
+ "お吸い物":"17-160",
+ "かぼちゃスープ":"17-388",
+ "野菜スープ":"17-169",
+ "チャウダー・クラムチャウダー":"17-389",
+ "コーンスープ・ポタージュ":"17-171",
+ "トマトスープ":"17-168",
+ "コンソメスープ":"17-167",
+ "クリームスープ":"17-170",
+ "中華スープ":"17-164",
+ "和風スープ":"17-165",
+ "韓国風スープ":"17-166",
+ "その他のスープ":"17-173",
+ "ポトフ":"17-390",
+ "その他の汁物":"17-162",
+ "ポテトサラダ":"18-415",
+ "春雨サラダ":"18-416",
+ "大根サラダ":"18-417",
+ "コールスロー":"18-418",
+ "かぼちゃサラダ":"18-419",
+ "ごぼうサラダ":"18-420",
+ "マカロニサラダ":"18-421",
+ "シーザーサラダ":"18-187",
+ "コブサラダ":"18-423",
+ "タラモサラダ":"18-424",
+ "スパゲティサラダ":"18-189",
+ "ホットサラダ・温野菜":"18-190",
+ "ジャーサラダ":"18-703",
+ "素材で選ぶサラダ":"18-184",
+ "味付けで選ぶサラダ":"18-188",
+ "マヨネーズを使ったサラダ":"18-185",
+ "ナンプラーを使ったサラダ":"18-186",
+ "その他のサラダ":"18-191",
+ "ソース":"19-192",
+ "タレ":"19-193",
+ "つゆ":"19-194",
+ "だし":"19-195",
+ "ドレッシング":"19-196",
+ "発酵食品・発酵調味料":"19-675",
+ "その他調味料":"19-273",
+ "スパイス&ハーブ":"19-274",
+ "柚子胡椒":"19-463",
+ "オリーブオイル":"19-464",
+ "ココナッツオイル":"19-700",
+ "キャラ弁":"20-485",
+ "お弁当のおかず":"20-197",
+ "運動会のお弁当":"20-486",
+ "お花見のお弁当":"20-487",
+ "遠足・ピクニックのお弁当":"20-488",
+ "色別おかず":"20-198",
+ "作り置き・冷凍できるおかず":"20-199",
+ "すきまおかず":"20-200",
+ "使い回しおかず":"20-201",
+ "子供のお弁当":"20-202",
+ "大人のお弁当":"20-203",
+ "部活のお弁当":"20-258",
+ "クッキー":"21-204",
+ "スイートポテト":"21-440",
+ "チーズケーキ":"21-205",
+ "シフォンケーキ":"21-438",
+ "パウンドケーキ":"21-439",
+ "ケーキ":"21-206",
+ "ホットケーキ・パンケーキ":"21-215",
+ "タルト・パイ":"21-207",
+ "チョコレート":"21-208",
+ "スコーン・マフィン":"21-209",
+ "焼き菓子":"21-210",
+ "プリン":"21-211",
+ "ドーナツ":"21-216",
+ "シュークリーム・エクレア":"21-212",
+ "ゼリー・寒天・ムース":"21-441",
+ "アイス・シャーベット":"21-442",
+ "和菓子":"21-214",
+ "その他のお菓子":"21-217",
+ "クリーム・ジャム":"21-218",
+ "サンドイッチ":"22-432",
+ "フレンチトースト":"22-433",
+ "食パン":"22-434",
+ "蒸しパン":"22-435",
+ "ホットサンド":"22-436",
+ "惣菜パン":"22-229",
+ "菓子パン":"22-221",
+ "プレーンなパン":"22-220",
+ "クロワッサン・デニッシュ":"22-222",
+ "ハードブレッド":"22-219",
+ "天然酵母パン":"22-223",
+ "世界各国のパン":"22-227",
+ "ヘルシーなパン":"22-231",
+ "キャラパン":"22-437",
+ "その他のパン":"22-230",
+ "おでん":"23-391",
+ "すき焼き":"23-392",
+ "もつ鍋":"23-393",
+ "しゃぶしゃぶ":"23-394",
+ "キムチ鍋":"23-395",
+ "湯豆腐":"23-396",
+ "豆乳鍋":"23-397",
+ "ちゃんこ鍋":"23-398",
+ "寄せ鍋":"23-399",
+ "水炊き":"23-400",
+ "トマト鍋":"23-401",
+ "あんこう鍋":"23-402",
+ "石狩鍋":"23-403",
+ "カレー鍋":"23-404",
+ "きりたんぽ鍋":"23-405",
+ "韓国鍋・チゲ鍋":"23-406",
+ "雪見鍋(みぞれ鍋)":"23-407",
+ "蒸し鍋":"23-408",
+ "ねぎま鍋":"23-409",
+ "鴨鍋":"23-410",
+ "カニ鍋":"23-411",
+ "火鍋":"23-412",
+ "牡蠣鍋":"23-413",
+ "白味噌鍋":"23-698",
+ "その他の鍋":"23-234",
+ "お食い初め料理":"24-631",
+ "誕生日の料理":"24-632",
+ "結婚記念日":"24-633",
+ "パーティー料理・ホームパーティ":"24-634",
+ "子どものパーティ":"24-635",
+ "バーベキュー":"24-238",
+ "その他イベント":"24-244",
+ "スペイン料理":"25-256",
+ "イギリス料理":"25-701",
+ "ロシア料理":"25-248",
+ "ドイツ料理":"25-255",
+ "トルコ料理":"25-257",
+ "おもてなし料理":"26-262",
+ "おつまみ":"26-260",
+ "限られた食材・調理器具で工夫":"26-261",
+ "料理のちょいテク・裏技":"26-265",
+ "コーヒー":"27-266",
+ "お茶":"27-267",
+ "ソフトドリンク":"27-268",
+ "ジュース・スムージー":"27-465",
+ "お酒":"27-269",
+ "ハンバーグ":"30-300",
+ "餃子":"30-301",
+ "肉じゃが":"30-302",
+ "カレー":"30-307",
+ "牛丼":"30-303",
+ "親子丼":"30-304",
+ "豚の生姜焼き":"30-305",
+ "グラタン":"30-306",
+ "唐揚げ":"30-309",
+ "コロッケ":"30-310",
+ "シチュー":"30-308",
+ "煮物":"30-311",
+ "野菜炒め":"30-312",
+ "天ぷら":"30-313",
+ "揚げ物":"30-314",
+ "豆腐料理":"30-315",
+ "和え物":"30-316",
+ "酢の物":"30-317",
+ "ローストビーフ":"31-318",
+ "豚の角煮":"31-319",
+ "チキン南蛮":"31-320",
+ "ピーマンの肉詰め":"31-321",
+ "ロールキャベツ":"31-323",
+ "スペアリブ":"31-324",
+ "ローストチキン":"31-325",
+ "もつ煮込み":"31-326",
+ "ミートボール・肉団子":"31-327",
+ "ミートローフ":"31-328",
+ "牛すじ煮込み":"31-329",
+ "とんかつ":"31-330",
+ "ポークソテー":"31-331",
+ "つくね":"31-332",
+ "チャーシュー(焼き豚)":"31-333",
+ "煮豚":"31-334",
+ "ステーキ":"31-322",
+ "鶏肉料理":"31-335",
+ "ぶり大根":"32-336",
+ "ぶりの照り焼き":"32-337",
+ "さばの味噌煮":"32-338",
+ "煮魚":"32-339",
+ "あさりの酒蒸し":"32-340",
+ "鮭のムニエル":"32-341",
+ "南蛮漬け":"32-342",
+ "焼き魚":"32-343",
+ "鮭のホイル焼き":"32-344",
+ "いわしのつみれ":"32-345",
+ "かつおのたたき":"32-346",
+ "いわしの梅煮":"32-347",
+ "かぶら蒸し":"32-348",
+ "その他の魚料理":"32-349",
+ "ゆで卵":"33-350",
+ "温泉卵":"33-351",
+ "半熟卵":"33-352",
+ "だし巻き卵・卵焼き":"33-353",
+ "茶碗蒸し":"33-354",
+ "キッシュ":"33-355",
+ "オムレツ":"33-356",
+ "かに玉":"33-357",
+ "スクランブルエッグ":"33-358",
+ "煮卵":"33-359",
+ "目玉焼き":"33-360",
+ "ニラ玉":"33-361",
+ "ポーチドエッグ":"33-362",
+ "スコッチエッグ":"33-363",
+ "卵とじ":"33-364",
+ "薄焼き卵":"33-365",
+ "炒り卵":"33-366",
+ "その他の卵料理":"33-367",
+ "りんご":"34-688",
+ "ゆず":"34-459",
+ "柿":"34-460",
+ "レモン":"34-461",
+ "バナナ":"34-697",
+ "ブルーベリー":"34-462",
+ "グレープフルーツ":"34-690",
+ "キウイ":"34-691",
+ "オレンジ":"34-702",
+ "春の果物":"34-692",
+ "夏の果物":"34-693",
+ "秋の果物":"34-689",
+ "冬の果物":"34-695",
+ "その他の果物":"34-696",
+ "おから":"35-466",
+ "厚揚げ":"35-467",
+ "納豆":"35-468",
+ "高野豆腐":"35-469",
+ "豆乳":"35-470",
+ "木綿豆腐":"35-471",
+ "絹ごし豆腐":"35-472",
+ "油揚げ":"35-473",
+ "大豆ミート":"35-474",
+ "塩豆腐":"35-475",
+ "その他の大豆・豆腐":"35-476",
+ "豆類":"35-477",
+ "簡単お菓子":"36-489",
+ "簡単夕食":"36-490",
+ "簡単おつまみ":"36-491",
+ "簡単おもてなし料理":"36-492",
+ "簡単鶏肉料理":"36-493",
+ "簡単豚肉料理":"36-494",
+ "簡単魚料理":"36-495",
+ "5分以内の簡単料理":"36-496",
+ "男の簡単料理":"36-497",
+ "100円以下の節約料理":"37-498",
+ "300円前後の節約料理":"37-499",
+ "500円前後の節約料理":"37-500",
+ "朝食の献立(朝ごはん)":"38-501",
+ "昼食の献立(昼ごはん)":"38-502",
+ "夕食の献立(晩御飯)":"38-503",
+ "低カロリー・ダイエット":"39-504",
+ "ヘルシー料理":"39-505",
+ "高血圧向け":"39-705",
+ "糖質制限":"39-699",
+ "マクロビオティック":"39-506",
+ "ベジタリアン":"39-507",
+ "疲労回復":"39-508",
+ "妊娠中の食事":"39-509",
+ "離乳食":"39-510",
+ "幼児食":"39-511",
+ "圧力鍋":"40-512",
+ "ホームベーカリー":"40-513",
+ "シリコンスチーマー":"40-514",
+ "キッチンバサミ":"40-707",
+ "タジン鍋":"40-515",
+ "炊飯器":"40-516",
+ "メイソンジャー":"40-704",
+ "スープジャー":"40-517",
+ "ホットプレート":"40-518",
+ "電子レンジ":"40-519",
+ "無水鍋":"40-520",
+ "ホーロー鍋":"40-521",
+ "ミキサー":"40-522",
+ "中華鍋":"40-523",
+ "フライパン一つでできる":"40-524",
+ "メーカー・ブランド":"40-525",
+ "その他の調理器具":"40-526",
+ "酢豚":"41-531",
+ "チンジャオロース":"41-532",
+ "八宝菜":"41-533",
+ "マーボー豆腐(麻婆豆腐)":"41-534",
+ "エビチリ":"41-535",
+ "エビマヨ":"41-536",
+ "ホイコーロー(回鍋肉)":"41-537",
+ "バンバンジー":"41-539",
+ "油淋鶏":"41-542",
+ "ビーフン":"41-543",
+ "ジャージャー麺":"41-538",
+ "坦々麺":"41-541",
+ "春巻き":"41-546",
+ "肉まん":"41-547",
+ "焼売(シュウマイ)":"41-548",
+ "杏仁豆腐":"41-540",
+ "ちまき(中華ちまき)":"41-544",
+ "サンラータン(酸辣湯)":"41-545",
+ "その他の中華料理":"41-549",
+ "チャプチェ":"42-550",
+ "チヂミ":"42-551",
+ "ビビンバ":"42-552",
+ "ナムル":"42-553",
+ "キムチ":"42-554",
+ "プルコギ":"42-555",
+ "スンドゥブ":"42-565",
+ "チョレギサラダ":"42-556",
+ "冷麺":"42-557",
+ "サムゲタン":"42-558",
+ "サムギョプサル":"42-559",
+ "クッパ":"42-560",
+ "タッカルビ":"42-561",
+ "カムジャタン":"42-562",
+ "トッポギ":"42-563",
+ "ケジャン":"42-564",
+ "テンジャンチゲ":"42-566",
+ "その他のチゲ":"42-567",
+ "その他の韓国料理":"42-568",
+ "ピザ":"43-569",
+ "ミネストローネ":"43-570",
+ "リゾット":"43-578",
+ "バーニャカウダ":"43-571",
+ "カルパッチョ":"43-577",
+ "アクアパッツァ":"43-572",
+ "ピカタ":"43-573",
+ "ブルスケッタ":"43-574",
+ "パニーノ・パニーニ":"43-575",
+ "カルツォーネ":"43-576",
+ "カプレーゼ":"43-579",
+ "パンナコッタ":"43-580",
+ "ティラミス":"43-581",
+ "その他のイタリア料理":"43-582",
+ "ラタトゥイユ":"44-583",
+ "チーズフォンデュ":"44-584",
+ "テリーヌ":"44-585",
+ "ブイヤベース":"44-586",
+ "ムニエル":"44-587",
+ "ビスク":"44-588",
+ "マリネ":"44-589",
+ "ガレット":"44-590",
+ "その他のフランス料理":"44-591",
+ "タイ料理":"46-596",
+ "インド料理":"46-597",
+ "ベトナム料理":"46-598",
+ "メキシコ料理":"46-599",
+ "ゴーヤチャンプル":"47-602",
+ "ソーキそば・沖縄そば":"47-600",
+ "海ぶどう":"47-601",
+ "そうめんチャンプルー":"47-603",
+ "ラフテー":"47-604",
+ "ミミガー":"47-605",
+ "ジューシー":"47-606",
+ "サーターアンダーギー":"47-607",
+ "ヒラヤーチー":"47-608",
+ "コーレーグス・島唐辛子":"47-609",
+ "その他の沖縄料理":"47-610",
+ "ちゃんちゃん焼き":"48-612",
+ "筑前煮":"48-613",
+ "ジンギスカン":"48-611",
+ "すいとん":"48-614",
+ "ほうとう":"48-615",
+ "ひつまぶし":"48-616",
+ "ちゃんぽん":"48-617",
+ "明石焼き":"48-618",
+ "いかめし":"48-619",
+ "せんべい汁":"48-620",
+ "皿うどん":"48-621",
+ "きりたんぽ":"48-622",
+ "のっぺい汁":"48-623",
+ "治部煮":"48-624",
+ "いちご煮":"48-625",
+ "三升漬け":"48-626",
+ "三平汁":"48-627",
+ "じゃっぱ汁":"48-628",
+ "辛子蓮根":"48-629",
+ "その他の郷土料理":"48-630",
+ "きんとん(栗きんとん)":"49-636",
+ "お雑煮":"49-637",
+ "錦玉子・伊達巻":"49-638",
+ "なます":"49-639",
+ "黒豆":"49-640",
+ "数の子":"49-641",
+ "田作り":"49-642",
+ "煮しめ":"49-643",
+ "たたきごぼう":"49-644",
+ "昆布巻き":"49-645",
+ "酢れんこん":"49-646",
+ "おせちの海老料理":"49-648",
+ "八幡巻き":"49-649",
+ "簡単おせち料理":"49-650",
+ "その他のおせち料理":"49-651",
+ "クリスマスケーキ":"50-652",
+ "クリスマスオードブル":"50-653",
+ "クリスマスチキン":"50-654",
+ "クリスマスサラダ":"50-655",
+ "クリスマス向けアレンジ":"50-656",
+ "ひな祭りケーキ":"51-657",
+ "ひな祭りちらしずし":"51-658",
+ "ひな祭り向けアレンジ":"51-659",
+ "ホワイトデー":"52-660",
+ "お花見・春の行楽":"52-661",
+ "子供の日":"52-662",
+ "母の日":"52-663",
+ "父の日":"53-664",
+ "夏バテ対策":"53-665",
+ "お祭り":"53-666",
+ "十五夜・お月見":"53-667",
+ "ハロウィン":"54-668",
+ "秋の行楽・紅葉":"54-669",
+ "七五三の料理":"54-670",
+ "節分":"55-671",
+ "恵方巻き":"55-672",
+ "ななくさ粥(七草粥)":"55-673",
+ "バレンタイン":"55-674",
+ "ソーセージ・ウインナー":"10-66-50",
+ "生ハム":"10-67-1491",
+ "鶏ハム":"10-67-1492",
+ "その他のハム":"10-67-321",
+ "ベーコン":"10-68-49",
+ "ラムチョップ・ラム肉":"10-69-45",
+ "ホルモン・レバー":"10-69-46",
+ "ランチョンミート・スパム":"10-69-51",
+ "ジビエ":"10-69-457",
+ "馬肉":"10-69-461",
+ "鴨肉":"10-69-458",
+ "猪肉":"10-69-460",
+ "フォアグラ":"10-69-462",
+ "七面鳥":"10-69-1493",
+ "その他のお肉加工品":"10-69-52",
+ "その他":"10-69-47",
+ "鮭":"11-70-55",
+ "サーモン":"11-70-839",
+ "スモークサーモン":"11-70-1494",
+ "鮭フレーク":"11-70-1495",
+ "いわし":"11-71-54",
+ "さば":"11-72-322",
+ "あじ":"11-73-58",
+ "ぶり":"11-74-57",
+ "さんま":"11-75-56",
+ "鯛":"11-76-325",
+ "マグロ":"11-77-53",
+ "カジキマグロ(めかじき)":"11-78-522",
+ "さわら":"11-78-465",
+ "しらす":"11-78-469",
+ "かつお":"11-78-324",
+ "ししゃも":"11-78-471",
+ "うなぎ":"11-78-334",
+ "にしん":"11-78-1497",
+ "カレイ(カラスカレイ)":"11-78-323",
+ "赤魚":"11-78-523",
+ "金目鯛":"11-78-328",
+ "甘鯛":"11-78-1498",
+ "穴子":"11-78-472",
+ "ヒラメ":"11-78-1499",
+ "メバル":"11-78-841",
+ "ワカサギ":"11-78-327",
+ "ほっけ":"11-78-468",
+ "きす":"11-78-840",
+ "あんこう":"11-78-466",
+ "カサゴ":"11-78-1500",
+ "鱧":"11-78-1501",
+ "その他のさかな":"11-78-1502",
+ "むきえび":"11-79-1503",
+ "桜えび":"11-79-1504",
+ "甘エビ":"11-79-1505",
+ "小エビ":"11-79-1506",
+ "干しエビ":"11-79-1507",
+ "その他のエビ":"11-79-65",
+ "いか":"11-80-68",
+ "たこ":"11-81-67",
+ "あさり":"11-82-60",
+ "ホタテ":"11-82-61",
+ "はまぐり":"11-82-63",
+ "ムール貝":"11-82-477",
+ "しじみ":"11-82-478",
+ "サザエ":"11-82-330",
+ "あわび":"11-82-329",
+ "つぶ貝":"11-82-475",
+ "ホッキ貝":"11-82-476",
+ "その他の貝":"11-82-64",
+ "かに":"11-83-66",
+ "にんじん":"12-95-13",
+ "玉ねぎ":"gory/12-96-7",
+ "じゃがいも":"12-97-17",
+ "キャベツ":"gory/12-98-1",
+ "もやし":"12-99-318",
+ "たけのこ":"12-100-10",
+ "レタス":"12-100-2",
+ "アスパラ":"12-100-11",
+ "ふき":"12-100-83",
+ "新玉ねぎ":"12-100-858",
+ "菜の花":"12-100-445",
+ "新じゃが":"12-100-859",
+ "とうみょう(豆苗)":"12-100-444",
+ "そら豆":"12-100-23",
+ "うど":"12-100-82",
+ "さやえんどう":"12-100-845",
+ "えんどう豆":"12-100-21",
+ "ぜんまい":"12-100-81",
+ "たらの芽":"12-100-1530",
+ "わらび":"12-100-1993",
+ "クレソン":"12-100-317",
+ "グリーンピース":"12-100-844",
+ "よもぎ":"12-100-84",
+ "スナップえんどう":"12-100-846",
+ "せり":"12-100-454",
+ "ゴーヤ":"12-101-31",
+ "ズッキーニ":"12-101-315",
+ "とうがん(冬瓜)":"12-101-821",
+ "ピーマン":"12-101-30",
+ "オクラ":"12-101-32",
+ "ししとう":"12-101-1532",
+ "モロヘイヤ":"12-101-509",
+ "いんげん":"12-101-22",
+ "パプリカ":"12-101-456",
+ "空芯菜":"12-101-511",
+ "枝豆":"12-101-24",
+ "とうもろこし":"12-101-422",
+ "うり(瓜)":"12-101-28",
+ "ささげ":"12-101-515",
+ "そうめんかぼちゃ":"12-101-1533",
+ "れんこん":"12-102-15",
+ "かぶ":"12-102-16",
+ "山芋":"12-102-18",
+ "長芋":"12-102-847",
+ "ぎんなん(銀杏)":"12-102-1534",
+ "春菊":"12-102-449",
+ "チンゲン菜":"12-102-319",
+ "大和芋":"12-102-452",
+ "里芋":"12-103-308",
+ "水菜":"12-103-3",
+ "にら":"12-103-4",
+ "セロリ":"12-103-314",
+ "カリフラワー":"12-103-34",
+ "長ネギ(ねぎ)":"12-103-8",
+ "くわい":"12-103-442",
+ "わさび菜":"12-103-514",
+ "ユリ根":"12-103-451",
+ "ヤーコン":"12-104-1539",
+ "にんにくの芽":"12-104-1540",
+ "芽キャベツ":"12-104-1541",
+ "高菜":"12-104-1542",
+ "らっきょう":"12-104-1543",
+ "ラディッシュ":"12-104-1544",
+ "むかご":"12-104-1545",
+ "かいわれ大根":"12-104-1546",
+ "スプラウト":"12-104-1547",
+ "エシャロット":"12-104-1548",
+ "その他の野菜":"12-104-1960",
+ "しいたけ":"12-105-75",
+ "エリンギ":"12-105-339",
+ "えのき":"12-105-78",
+ "しめじ":"12-105-76",
+ "まいたけ":"12-105-77",
+ "松茸":"12-105-337",
+ "なめこ":"12-105-79",
+ "マッシュルーム":"12-105-338",
+ "その他のきのこ":"12-105-80",
+ "みょうが":"12-107-36",
+ "生姜(新生姜)":"12-107-316",
+ "しそ・大葉":"12-107-448",
+ "ガーリック・にんにく":"12-107-9",
+ "とうがらし・葉唐辛子":"12-107-513",
+ "万能ねぎ":"12-107-856",
+ "パセリ":"12-107-450",
+ "パクチー":"12-107-1535",
+ "ローズマリー":"12-107-1536",
+ "バジル":"12-107-1537",
+ "フェンネル":"12-107-1538",
+ "ちくわ":"13-108-490",
+ "はんぺん":"13-108-107",
+ "さつま揚げ":"13-108-1635",
+ "がんもどき":"13-108-529",
+ "かまぼこ":"13-108-528",
+ "カニカマ":"13-108-530",
+ "その他の練物":"13-108-108",
+ "缶詰":"13-109-531",
+ "カニ缶":"13-109-1636",
+ "さば缶":"13-109-1637",
+ "トマト缶":"13-109-1638",
+ "ツナ缶":"13-109-843",
+ "鮭缶":"13-109-1639",
+ "缶詰アレンジ":"13-109-1640",
+ "インスタントラーメン":"13-109-110",
+ "冷凍食品":"13-109-111",
+ "シリアル":"13-109-109",
+ "レトルト食品":"13-109-112",
+ "その他の加工食品":"13-109-113",
+ "糸こんにゃく":"13-111-1648",
+ "玉こんにゃく":"13-111-1649",
+ "板こんにゃく":"13-111-1650",
+ "その他のこんにゃく":"13-111-124",
+ "しらたき":"13-112-125",
+ "ひじき":"13-113-120",
+ "わかめ":"13-113-73",
+ "もずく":"13-113-335",
+ "昆布":"13-113-72",
+ "海苔":"13-113-336",
+ "切り昆布":"13-113-1651",
+ "塩昆布":"13-113-1652",
+ "めかぶ":"13-113-1653",
+ "その他の海藻":"13-113-74",
+ "切り干し大根":"13-114-491",
+ "春雨":"13-114-350",
+ "きくらげ":"13-114-119",
+ "麩":"13-114-533",
+ "かんぴょう":"13-114-117",
+ "干し椎茸":"13-114-492",
+ "佃煮":"13-114-534",
+ "かつお節(鰹節)":"13-114-121",
+ "ちりめん山椒":"13-114-1654",
+ "その他の乾物":"13-114-123",
+ "その他の食材":"13-115-126",
+ "オムライス":"14-121-553",
+ "チキンライス":"14-122-552",
+ "ハヤシライス":"14-123-567",
+ "タコライス":"14-124-568",
+ "ロコモコ":"14-125-569",
+ "パエリア":"14-126-303",
+ "エビピラフ":"14-127-1310",
+ "カレーピラフ":"14-127-1311",
+ "その他のピラフ":"14-127-142",
+ "その他○○ライス":"14-128-145",
+ "ちらし寿司":"14-129-560",
+ "いなり寿司":"14-129-559",
+ "手巻き寿司":"14-129-561",
+ "巻き寿司":"14-129-890",
+ "押し寿司":"14-129-889",
+ "にぎり寿司・手まり寿司":"14-129-888",
+ "お祝い・パーティ寿司":"14-129-891",
+ "すし飯":"14-129-1313",
+ "その他の寿司":"14-129-140",
+ "豚丼":"14-130-544",
+ "天津丼・天津飯":"14-130-1314",
+ "中華丼":"14-130-546",
+ "カツ丼":"14-130-542",
+ "天丼":"14-130-548",
+ "海鮮丼":"14-130-547",
+ "しらす丼":"14-130-1315",
+ "三色丼・そぼろ丼":"14-130-1316",
+ "玉子丼":"14-130-540",
+ "鶏丼":"14-130-545",
+ "その他のどんぶり":"14-130-135",
+ "キムチチャーハン":"14-131-1317",
+ "あんかけチャーハン":"14-131-892",
+ "レタスチャーハン":"14-131-1318",
+ "納豆チャーハン":"14-131-1319",
+ "高菜チャーハン":"14-131-1320",
+ "アレンジチャーハン":"14-131-893",
+ "その他のチャーハン":"14-131-136",
+ "ナシゴレン":"14-131-894",
+ "そばめし":"14-131-554",
+ "栗ご飯":"14-132-1321",
+ "おこわ・赤飯":"14-132-555",
+ "たけのこご飯":"14-132-1322",
+ "鯛めし":"14-132-1323",
+ "豆ごはん":"14-132-1324",
+ "松茸ご飯":"14-132-1325",
+ "鶏飯":"14-132-1326",
+ "深川飯":"14-132-1327",
+ "かやくご飯":"14-132-1328",
+ "その他の炊き込みご飯":"14-132-137",
+ "混ぜご飯":"14-132-138",
+ "おかゆ":"14-133-139",
+ "雑炊":"14-133-557",
+ "おじや":"14-133-558",
+ "肉巻きおにぎり":"14-134-550",
+ "焼きおにぎり":"14-134-549",
+ "スパムおにぎり":"14-134-1329",
+ "その他のおにぎり":"14-134-141",
+ "残りごはん・冷ごはん":"14-135-570",
+ "お茶漬け":"14-135-571",
+ "ドリア":"14-135-143",
+ "ミートソース":"15-137-590",
+ "クリーム系パスタ":"15-138-155",
+ "オイル・塩系パスタ":"15-139-157",
+ "チーズ系パスタ":"15-140-900",
+ "バジルソース系パスタ":"15-141-592",
+ "和風パスタ":"15-142-156",
+ "冷製パスタ":"15-143-357",
+ "パスタソース":"15-144-242",
+ "スープスパ・スープパスタ":"15-145-591",
+ "その他のパスタ":"15-146-158",
+ "ニョッキ":"15-147-905",
+ "ラザニア":"15-151-810",
+ "カレーうどん":"16-152-913",
+ "鍋焼きうどん":"16-152-1332",
+ "サラダうどん":"16-152-911",
+ "冷やしうどん":"16-152-1333",
+ "きつねうどん":"16-152-1334",
+ "肉うどん":"16-152-1335",
+ "煮込みうどん":"16-152-912",
+ "釜揚げうどん":"16-152-1336",
+ "焼うどん":"16-152-572",
+ "ぶっかけうどん":"16-152-1337",
+ "アレンジうどん":"16-152-150",
+ "あったかい蕎麦":"16-153-915",
+ "冷たい蕎麦":"16-153-916",
+ "アレンジそば":"16-153-149",
+ "そば寿司":"16-153-917",
+ "素麺・冷麦":"16-154-151",
+ "にゅうめん":"16-154-573",
+ "アレンジそうめん":"16-154-918",
+ "あんかけ焼きそば":"16-155-1338",
+ "塩焼きそば":"16-155-575",
+ "ソース焼きそば":"16-155-574",
+ "アレンジ焼きそば":"16-155-152",
+ "味噌ラーメン":"16-156-1339",
+ "塩ラーメン":"16-156-1340",
+ "冷やしラーメン":"16-156-1341",
+ "醤油ラーメン":"16-156-1342",
+ "トマトラーメン":"16-156-1343",
+ "豚骨ラーメン":"16-156-1344",
+ "ラーメンサラダ":"16-156-1345",
+ "その他のラーメン":"16-156-1346",
+ "ラーメンスープ・つけだれ":"16-156-919",
+ "おやき":"16-158-920",
+ "おかず系のクレープ":"16-158-921",
+ "あさり味噌汁":"17-159-1355",
+ "しじみ味噌汁":"17-159-1356",
+ "なすの味噌汁":"17-159-1357",
+ "なめこの味噌汁":"17-159-1358",
+ "その他の味噌汁":"17-159-814",
+ "お吸い物":"17-160-813",
+ "豚汁":"17-161-790",
+ "冷汁":"17-162-1360",
+ "粕汁":"17-162-1361",
+ "すまし汁":"17-162-1362",
+ "あら汁":"17-162-1363",
+ "つみれ汁":"17-162-1364",
+ "その他の汁物":"17-162-815",
+ "ワンタンスープ":"17-164-1367",
+ "わかめスープ":"17-164-1368",
+ "春雨スープ":"17-164-1369",
+ "その他の中華スープ":"17-164-89",
+ "和風スープ":"17-165-479",
+ "韓国風スープ":"17-166-480",
+ "コンソメスープ":"17-167-86",
+ "トマトスープ":"17-168-87",
+ "野菜スープ":"17-169-481",
+ "クリームスープ":"17-170-90",
+ "コーンスープ・ポタージュ":"17-171-88",
+ "オニオンスープ":"17-173-341",
+ "オニオングラタンスープ":"17-173-926",
+ "ビシソワーズ":"17-173-524",
+ "冷製スープ":"17-173-1370",
+ "豆乳スープ":"17-173-340",
+ "にんじんスープ":"17-173-345",
+ "モロヘイヤスープ":"17-173-346",
+ "豆スープ":"17-173-343",
+ "その他":"17-173-91",
+ "豆腐サラダ":"18-184-946",
+ "キャベツサラダ":"18-184-1408",
+ "人参サラダ":"18-184-1409",
+ "豚しゃぶ・冷しゃぶサラダ":"18-184-1412",
+ "アボカドサラダ":"18-184-1410",
+ "切り干し大根サラダ":"18-184-1411",
+ "海藻サラダ":"18-184-947",
+ "トマトサラダ":"18-184-943",
+ "ツナサラダ":"18-184-945",
+ "ゴーヤサラダ":"18-184-948",
+ "魚介のサラダ":"18-184-949",
+ "お肉を使ったサラダ":"18-184-950",
+ "マヨネーズを使ったサラダ":"18-185-951",
+ "ナンプラーを使ったサラダ":"18-186-952",
+ "シーザーサラダ":"18-187-796",
+ "和風のサラダ":"18-188-953",
+ "中華サラダ":"18-188-954",
+ "イタリアンサラダ":"18-188-955",
+ "韓国風のサラダ":"18-188-956",
+ "洋風・デリ風のサラダ":"18-188-957",
+ "アジアンサラダ":"18-188-958",
+ "スパゲティサラダ":"18-189-797",
+ "ホットサラダ・温野菜":"18-190-959",
+ "その他のサラダ":"18-191-794",
+ "トマトソース":"19-192-239",
+ "タルタルソース":"19-192-241",
+ "バジルソース":"19-192-1553",
+ "ホワイトソース":"19-192-1554",
+ "ステーキソース":"19-192-1555",
+ "サルサソース":"19-192-1556",
+ "ハンバーグソース":"19-192-1557",
+ "デミグラスソース":"19-192-960",
+ "バーニャカウダソース":"19-192-1558",
+ "マヨネーズ":"19-192-627",
+ "ピザソース":"19-192-1559",
+ "チリソース":"19-192-1560",
+ "ジェノベーゼソース":"19-192-963",
+ "照り焼きソース":"19-192-961",
+ "オーロラソース":"19-192-962",
+ "クリームソース":"19-192-240",
+ "フルーツソース":"19-192-287",
+ "お肉に合うソース":"19-192-243",
+ "シーフードに合うソース":"19-192-244",
+ "その他のソース":"19-192-245",
+ "焼肉のたれ":"19-193-966",
+ "冷やし中華のたれ":"19-193-1561",
+ "ごまだれ":"19-193-965",
+ "焼き鳥のたれ":"19-193-1562",
+ "ラー油・食べるラー油":"19-193-363",
+ "マリネ液":"19-193-967",
+ "餃子のタレ":"19-193-964",
+ "お肉に合うタレ":"19-193-246",
+ "シーフードに合うタレ":"19-193-247",
+ "野菜に合うタレ":"19-193-248",
+ "その他のタレ":"19-193-249",
+ "めんつゆ":"19-194-250",
+ "そばつゆ・そうめんつゆ":"19-194-1563",
+ "天つゆ":"19-194-251",
+ "その他のつゆ":"19-194-252",
+ "ほんだし":"19-195-1564",
+ "白だし":"19-195-1565",
+ "その他のだし":"19-195-300",
+ "フレンチドレッシング":"19-196-253",
+ "和風ドレッシング":"19-196-256",
+ "イタリアンドレッシング":"19-196-254",
+ "中華ドレッシング":"19-196-255",
+ "シーザードレッシング":"19-196-968",
+ "ゴマドレッシング":"19-196-969",
+ "マヨネーズ系ドレッシング":"19-196-257",
+ "その他のドレッシング":"19-196-258",
+ "お弁当のおかず":"20-197-970",
+ "赤色系のおかず":"20-198-971",
+ "黄色系のおかず":"20-198-972",
+ "緑系のおかず":"20-198-973",
+ "白系のおかず":"20-198-974",
+ "黒・茶系のおかず":"20-198-975",
+ "作り置き・冷凍できるおかず":"20-199-976",
+ "すきまおかず":"20-200-977",
+ "使い回しおかず":"20-201-978",
+ "ごはんのお弁当(子供用)":"20-202-214",
+ "パンのお弁当(子供用)":"20-202-215",
+ "おにぎりのお弁当(子供用)":"20-202-216",
+ "かわいいおかず":"20-202-218",
+ "その他のお弁当(子供用)":"20-202-219",
+ "パスタのお弁当(子供)":"20-202-979",
+ "ごはんのお弁当(大人用)":"20-203-220",
+ "パンのお弁当(大人用)":"20-203-221",
+ "おにぎりのお弁当(大人用)":"20-203-222",
+ "お弁当のおかず(大人用)":"20-203-224",
+ "パスタのお弁当(大人用)":"20-203-980",
+ "その他のお弁当(大人用)":"20-203-225",
+ "アイシングクッキー":"21-204-985",
+ "おからクッキー":"21-204-1442",
+ "ホットケーキミックスでクッキー":"21-204-1443",
+ "チョコチップクッキー":"21-204-1444",
+ "豆乳クッキー":"21-204-1445",
+ "その他のクッキー":"21-204-498",
+ "ビスケット":"21-204-610",
+ "サブレ":"21-204-611",
+ "レアチーズケーキ":"21-205-625",
+ "ベイクドチーズケーキ":"21-205-986",
+ "スフレチーズケーキ":"21-205-1446",
+ "その他のチーズケーキ":"21-205-189",
+ "ロールケーキ":"21-206-497",
+ "スポンジケーキ":"21-206-190",
+ "バナナケーキ":"21-206-1449",
+ "モンブラン":"21-206-623",
+ "レモンケーキ":"21-206-1450",
+ "ショートケーキ":"21-206-188",
+ "ミルクレープ":"21-206-1451",
+ "フルーツケーキ":"21-206-1452",
+ "その他のケーキ":"21-206-194",
+ "アップルパイ":"21-207-817",
+ "ミートパイ":"21-207-1454",
+ "タルト":"21-207-193",
+ "パイ":"21-207-306",
+ "ミルフィーユ":"21-207-622",
+ "タルト台":"21-207-987",
+ "ガトーショコラ":"21-208-989",
+ "生チョコ":"21-208-607",
+ "ブラウニー":"21-208-608",
+ "チョコレートケーキ":"21-208-988",
+ "トリュフ":"21-208-1120",
+ "ザッハトルテ":"21-208-1455",
+ "その他のチョコレート":"21-208-201",
+ "マフィン":"21-209-507",
+ "スコーン":"21-209-499",
+ "カップケーキ":"21-210-990",
+ "マカロン":"21-210-609",
+ "マドレーヌ":"21-210-619",
+ "ワッフル":"21-210-1457",
+ "フィナンシェ":"21-210-991",
+ "その他の焼き菓子":"21-210-202",
+ "かぼちゃプリン":"21-211-1458",
+ "マンゴープリン":"21-211-1459",
+ "豆乳プリン":"21-211-1460",
+ "カスタードプリン":"21-211-1461",
+ "焼きプリン":"21-211-1462",
+ "その他のプリン・プディング":"21-211-197",
+ "シュークリーム":"21-212-195",
+ "エクレア":"21-212-992",
+ "カステラ":"21-214-200",
+ "おはぎ":"21-214-184",
+ "ぜんざい":"21-214-598",
+ "おしるこ":"21-214-95",
+ "白玉団子":"21-214-1471",
+ "だんご":"21-214-180",
+ "みたらし団子":"21-214-1472",
+ "どら焼き":"21-214-183",
+ "羊羹":"21-214-182",
+ "水ようかん":"21-214-1473",
+ "芋ようかん":"21-214-1474",
+ "ういろう":"21-214-599",
+ "かりんとう":"21-214-1475",
+ "大福":"21-214-597",
+ "まんじゅう":"21-214-181",
+ "くずもち":"21-214-600",
+ "わらび餅":"21-214-596",
+ "お餅":"21-214-185",
+ "せんべい":"21-214-186",
+ "その他の和菓子":"21-214-187",
+ "ホットケーキ・パンケーキ":"21-215-1453",
+ "焼きドーナツ":"21-216-602",
+ "生ドーナツ":"21-216-603",
+ "その他のドーナツ":"21-216-196",
+ "大学芋":"21-217-1476",
+ "マシュマロ":"21-217-614",
+ "クレープ":"21-217-616",
+ "パフェ":"21-217-1477",
+ "コンポート":"21-217-1478",
+ "水切りヨーグルト":"21-217-620",
+ "生キャラメル":"21-217-1479",
+ "ドライフルーツ":"21-217-122",
+ "ヨーグルトを使ったお菓子":"21-217-199",
+ "世界のお菓子":"21-217-212",
+ "創作・オリジナルお菓子":"21-217-213",
+ "飴・キャンディー":"21-217-626",
+ "その他":"21-217-205",
+ "生クリーム":"21-218-1480",
+ "カスタードクリーム":"21-218-1481",
+ "チョコレートクリーム":"21-218-294",
+ "ピーナツクリーム":"21-218-295",
+ "キャラメルクリーム":"21-218-296",
+ "バタークリーム":"21-218-297",
+ "ゴマクリーム":"21-218-298",
+ "その他のクリーム":"21-218-299",
+ "梅ジャム":"21-218-1482",
+ "ブルーベリージャム":"21-218-291",
+ "オレンジジャム・マーマレード":"21-218-288",
+ "イチゴジャム":"21-218-289",
+ "リンゴジャム":"21-218-290",
+ "ミルクジャム":"21-218-293",
+ "その他のジャム":"21-218-292",
+ "コンフィチュール":"21-218-993",
+ "バゲット・フランスパン":"22-219-165",
+ "カンパーニュ":"22-219-166",
+ "エピ":"22-219-994",
+ "全粒粉・ライ麦・雑穀パン":"22-219-995",
+ "ベーグル":"22-220-173",
+ "イングリッシュマフィン":"22-220-996",
+ "米粉パン":"22-220-1002",
+ "ロールパン":"22-220-167",
+ "レーズンパン":"22-220-997",
+ "ミルクパン":"22-220-999",
+ "白パン":"22-220-1001",
+ "胡桃パン":"22-220-1000",
+ "丸パン":"22-220-998",
+ "ラスク":"22-221-1438",
+ "塩ケーキ(ケークサレ)":"22-221-1439",
+ "シナモンロール":"22-221-1003",
+ "メロンパン":"22-221-209",
+ "クリームパン":"22-221-207",
+ "あんぱん":"22-221-206",
+ "揚げパン":"22-221-1440",
+ "その他の菓子パン":"22-221-211",
+ "クロワッサン":"22-222-169",
+ "デニッシュ":"22-222-168",
+ "白神こだま酵母":"22-223-1009",
+ "ホシノ天然酵母":"22-223-1006",
+ "パネトーネマザー":"22-223-1007",
+ "あこ天然酵母":"22-223-1008",
+ "自家製酵母を使ったパン":"22-223-1005",
+ "自家製酵母の作り方":"22-223-1004",
+ "その他の酵母":"22-223-365",
+ "フォカッチャ":"22-227-358",
+ "ブリオッシュ":"22-227-1014",
+ "ピタサンド・ピタパン":"22-227-585",
+ "プレッツェル":"22-227-1015",
+ "グリッシーニ":"22-227-1012",
+ "ハンバーガー":"22-229-1433",
+ "ホットドッグ":"22-229-1434",
+ "ガーリックトースト":"22-229-1435",
+ "カレーパン":"22-229-587",
+ "ピザトースト":"22-229-1436",
+ "コーンパン":"22-229-1016",
+ "焼きそばパン":"22-229-1017",
+ "チーズパン":"22-229-1018",
+ "マヨネーズを使ったパン":"22-229-1019",
+ "その他の惣菜パン":"22-229-1437",
+ "その他":"22-230-175",
+ "牛乳・卵を使わないパン":"22-231-1020",
+ "オイルを使わないパン":"22-231-1021",
+ "その他":"23-234-100",
+ "アウトドア料理・キャンプ料理":"24-238-1896",
+ "ダッチオーブン":"24-238-1051",
+ "燻製":"24-238-1050",
+ "バーベキューの野菜料理":"24-238-1045",
+ "バーベキューの肉料理":"24-238-1046",
+ "バーベキューのご飯もの":"24-238-1047",
+ "バーベキューの海の幸料理":"24-238-1048",
+ "バーベキューの山の幸・川の幸料理":"24-238-1049",
+ "バーベキュー向けアレンジ":"24-238-374",
+ "その他イベント":"24-244-386",
+ "ビーフストロガノフ":"25-248-1059",
+ "ボルシチ":"25-248-1060",
+ "ピロシキ":"25-248-1061",
+ "ロシアンティー":"25-248-1062",
+ "ペリメニ":"25-248-1063",
+ "その他のロシア料理":"25-248-1064",
+ "シュトーレン":"25-255-740",
+ "ザワークラウト":"25-255-736",
+ "バームクーヘン":"25-255-738",
+ "アイスバイン":"25-255-737",
+ "トルテ":"25-255-739",
+ "その他のドイツ料理":"25-255-741",
+ "スパニッシュオムレツ":"25-256-733",
+ "ガスパチョ":"25-256-732",
+ "チュロス":"25-256-734",
+ "アヒージョ":"25-256-1827",
+ "ピンチョス":"25-256-1828",
+ "その他のスペイン料理":"25-256-735",
+ "ケバブ":"25-257-716",
+ "トルコアイス":"25-257-717",
+ "キョフテ":"25-257-718",
+ "その他のトルコ料理":"25-257-720",
+ "部活のお弁当":"20-258-981",
+ "ビールに合うおつまみ":"26-260-1068",
+ "ワインに合うおつまみ":"26-260-1069",
+ "日本酒に合うおつまみ":"26-260-1070",
+ "焼酎に合うおつまみ":"26-260-1071",
+ "混ぜるだけでおつまみ":"26-260-1072",
+ "火を使わないでおつまみ":"26-260-1073",
+ "フライパンだけでおつまみ":"26-260-1074",
+ "小麦を使わない(小麦アレルギー)":"26-261-402",
+ "卵を使わない(卵アレルギー)":"26-261-403",
+ "蕎麦を使わない(そばアレルギー)":"26-261-404",
+ "牛乳を使わない(牛乳アレルギー)":"26-261-405",
+ "大豆を使わない(大豆アレルギー)":"26-261-406",
+ "ピーナツを使わない(ピーナッツアレルギー)":"26-261-407",
+ "チョコレートを使わない":"26-261-408",
+ "お肉を使わない":"26-261-413",
+ "魚介類を使わない":"26-261-414",
+ "火を使わない料理":"26-261-415",
+ "包丁を使わない料理":"26-261-416",
+ "ミキサーを使わない料理":"26-261-1121",
+ "化学調味料を使わない":"26-261-417",
+ "油を使わない":"26-261-418",
+ "その他○○を使わない(材料)":"26-261-419",
+ "その他○○で作れる(材料)":"26-261-501",
+ "その他○○を使わない(調理器具)":"26-261-502",
+ "春のおもてなし料理":"26-262-1085",
+ "夏のおもてなし料理":"26-262-1086",
+ "秋のおもてなし料理":"26-262-1087",
+ "冬のおもてなし料理":"26-262-1088",
+ "メイン料理":"26-262-1076",
+ "前菜・サラダ":"26-262-1077",
+ "魚のおもてなし料理":"26-262-1078",
+ "お肉のおもてなし料理":"26-262-1079",
+ "ごはんのおもてなし料理":"26-262-1080",
+ "デザート":"26-262-1081",
+ "おもてなしもう一品":"26-262-1082",
+ "彩鮮やか":"26-262-1083",
+ "前日に作り置き":"26-262-1084",
+ "料理のちょいテク・裏技":"26-265-1114",
+ "カプチーノ":"27-266-1585",
+ "エスプレッソ":"27-266-275",
+ "アイスコーヒー":"27-266-1586",
+ "カフェオレ":"27-266-274",
+ "カフェラテ":"27-266-1587",
+ "フラペチーノ":"27-266-1588",
+ "フレーバーコーヒー":"27-266-276",
+ "アルコール入りコーヒー":"27-266-277",
+ "ベトナムコーヒー":"27-266-764",
+ "その他のコーヒー":"27-266-278",
+ "緑茶":"27-267-269",
+ "抹茶":"27-267-1959",
+ "ほうじ茶":"27-267-1589",
+ "玄米茶":"27-267-1590",
+ "紅茶":"27-267-270",
+ "ミルクティー":"27-267-1591",
+ "アールグレイ":"27-267-1592",
+ "ダージリン":"27-267-1593",
+ "アッサム":"27-267-1594",
+ "烏龍茶(ウーロン茶)":"27-267-271",
+ "中国茶":"27-267-1595",
+ "健康茶":"27-267-272",
+ "ジャスミン茶":"27-267-1596",
+ "その他のお茶":"27-267-273",
+ "牛乳・乳飲料":"27-268-266",
+ "ココア":"27-268-265",
+ "炭酸飲料":"27-268-260",
+ "スポーツドリンク":"27-268-261",
+ "健康飲料":"27-268-262",
+ "チョコレートドリンク":"27-268-264",
+ "ヨーグルトドリンク":"27-268-267",
+ "その他のソフトドリンク":"27-268-268",
+ "ビール":"27-269-279",
+ "焼酎":"27-269-280",
+ "梅酒":"27-269-281",
+ "甘酒":"27-269-1607",
+ "カクテル":"27-269-283",
+ "モヒート":"27-269-1605",
+ "ジントニック":"27-269-1606",
+ "卵酒":"27-269-1608",
+ "健康酒":"27-269-282",
+ "その他のお酒":"27-269-284",
+ "その他のごはん料理":"14-271-147",
+ "その他の麺":"16-272-153",
+ "その他調味料":"19-273-302",
+ "スパイス&ハーブ":"19-274-364",
+ "牛肉薄切り":"10-275-516",
+ "牛タン":"10-275-1483",
+ "牛かたまり肉・ステーキ用・焼肉用":"10-275-822",
+ "その他の牛肉・ビーフ":"10-275-823",
+ "豚バラ肉":"10-276-830",
+ "豚ヒレ肉":"10-276-1484",
+ "豚ロース":"10-276-1485",
+ "豚もも肉":"10-276-1486",
+ "豚レバー":"10-276-1487",
+ "豚薄切り肉":"10-276-517",
+ "豚かたまり肉":"10-276-828",
+ "豚こま切れ肉":"10-276-829",
+ "その他の豚肉":"10-276-43",
+ "ささみ":"10-277-519",
+ "手羽元":"10-277-1488",
+ "手羽先":"10-277-520",
+ "鶏もも肉":"10-277-518",
+ "鶏むね肉":"10-277-1119",
+ "砂肝":"10-277-1489",
+ "鶏レバー":"10-277-1490",
+ "その他の鶏肉":"10-277-834",
+ "豚ひき肉":"10-278-836",
+ "鶏ひき肉":"10-278-838",
+ "合い挽き肉":"10-278-837",
+ "牛ひき肉":"10-278-835",
+ "その他のひき肉":"10-278-48",
+ "ハンバーグステーキ":"30-300-1130",
+ "煮込みハンバーグ":"30-300-1131",
+ "和風ハンバーグ":"30-300-1132",
+ "豆腐ハンバーグ":"30-300-1135",
+ "おからハンバーグ":"30-300-1133",
+ "照り焼きハンバーグ":"30-300-1134",
+ "その他のハンバーグ":"30-300-1136",
+ "焼き餃子":"30-301-1138",
+ "水餃子":"30-301-1137",
+ "蒸し餃子":"30-301-1139",
+ "揚げ餃子":"30-301-1140",
+ "スープ餃子":"30-301-1141",
+ "その他の餃子":"30-301-1142",
+ "肉じゃが":"30-302-1143",
+ "牛丼":"30-303-1144",
+ "親子丼":"30-304-1145",
+ "豚の生姜焼き":"30-305-1146",
+ "マカロニグラタン":"30-306-1148",
+ "チキングラタン":"30-306-1152",
+ "シーフードグラタン":"30-306-1151",
+ "ミートグラタン":"30-306-1150",
+ "ポテトグラタン":"30-306-1147",
+ "かぼちゃのグラタン":"30-306-1149",
+ "和風グラタン":"30-306-1153",
+ "豆腐グラタン":"30-306-1155",
+ "スパグラ(スパゲティーグラタン)":"30-306-1154",
+ "その他のグラタン":"30-306-1156",
+ "チキンカレー":"30-307-1159",
+ "ポークカレー":"30-307-1166",
+ "ビーフカレー":"30-307-1165",
+ "野菜カレー":"30-307-1164",
+ "ドライカレー":"30-307-1157",
+ "キーマカレー":"30-307-1158",
+ "スープカレー":"30-307-1160",
+ "シーフードカレー":"30-307-1161",
+ "インドカレー":"30-307-1162",
+ "グリーンカレー":"30-307-1163",
+ "ルウから作るカレー":"30-307-1167",
+ "その他のカレー":"30-307-1168",
+ "ビーフシチュー":"30-308-1169",
+ "クリームシチュー":"30-308-1170",
+ "タンシチュー":"30-308-1171",
+ "その他のシチュー":"30-308-1172",
+ "鶏のから揚げ":"30-309-1173",
+ "カレイの唐揚げ":"30-309-1174",
+ "たこの唐揚げ":"30-309-1175",
+ "手羽先の唐揚げ":"30-309-1176",
+ "その他のから揚げ":"30-309-1177",
+ "ポテトコロッケ":"30-310-1181",
+ "クリームコロッケ":"30-310-1179",
+ "かぼちゃコロッケ":"30-310-1178",
+ "さつまいもコロッケ":"30-310-1184",
+ "里芋コロッケ":"30-310-1183",
+ "おからコロッケ":"30-310-1182",
+ "カレーコロッケ":"30-310-1185",
+ "ライスコロッケ":"30-310-1180",
+ "その他のコロッケ":"30-310-1186",
+ "かぼちゃの煮物":"30-311-1187",
+ "大根の煮物":"30-311-1188",
+ "なすの煮びたし":"30-311-1204",
+ "ひじきの煮物":"30-311-1189",
+ "里芋の煮物":"30-311-1190",
+ "厚揚げの煮物":"30-311-1191",
+ "きんぴらごぼう":"30-311-1192",
+ "ふろふき大根":"30-311-1193",
+ "豚バラ大根":"30-311-1991",
+ "ふきの煮物":"30-311-1194",
+ "たけのこの煮物":"30-311-1195",
+ "レンコンのきんぴら":"30-311-1196",
+ "冬瓜の煮物":"30-311-1197",
+ "梅の甘露煮":"30-311-1200",
+ "栗の甘露煮":"30-311-1201",
+ "金柑の甘露煮":"30-311-1198",
+ "さんまの甘露煮":"30-311-1202",
+ "鮎の甘露煮":"30-311-1199",
+ "うま煮":"30-311-1203",
+ "小松菜の煮びたし":"30-311-1205",
+ "白菜のクリーム煮":"30-311-1206",
+ "イカと大根の煮物":"30-311-1207",
+ "牛肉のしぐれ煮":"30-311-1208",
+ "その他の煮物":"30-311-1209",
+ "豚キムチ":"30-312-1214",
+ "レバニラ炒め":"30-312-1210",
+ "肉野菜炒め":"30-312-1211",
+ "なすの味噌炒め":"30-312-1212",
+ "もやし炒め":"30-312-1213",
+ "その他の野菜炒め":"30-312-1215",
+ "天ぷら":"30-313-1216",
+ "かき揚げ":"30-314-1217",
+ "エビフライ":"30-314-1224",
+ "メンチカツ":"30-314-1218",
+ "チキンカツ":"30-314-1219",
+ "カツレツ":"30-314-1220",
+ "串カツ":"30-314-1221",
+ "竜田揚げ":"30-314-1222",
+ "フライ":"30-314-1223",
+ "アジフライ":"30-314-1225",
+ "フライドチキン":"30-314-1226",
+ "チキンナゲット":"30-314-1227",
+ "その他の揚げ物":"30-314-1228",
+ "豆腐ステーキ":"30-315-1229",
+ "揚げ出し豆腐":"30-315-1230",
+ "炒り豆腐":"30-315-1231",
+ "冷奴":"30-315-1232",
+ "肉豆腐":"30-315-1233",
+ "白和え":"30-316-1239",
+ "ほうれん草の胡麻和え":"30-316-1234",
+ "ほうれん草のおひたし":"30-316-1235",
+ "菜の花のおひたし":"30-316-1236",
+ "菜の花のからしあえ":"30-316-1237",
+ "小松菜のおひたし":"30-316-1238",
+ "その他の和え物":"30-316-1240",
+ "わかめの酢の物":"30-317-1241",
+ "きゅうりの酢の物":"30-317-1242",
+ "その他の酢の物":"30-317-1243",
+ "ローストビーフ":"31-318-1244",
+ "豚の角煮":"31-319-1245",
+ "チキン南蛮":"31-320-1246",
+ "ピーマンの肉詰め":"31-321-1247",
+ "ステーキ":"31-322-1248",
+ "ロールキャベツ":"31-323-1249",
+ "スペアリブ":"31-324-1250",
+ "ローストチキン":"31-325-1251",
+ "もつ煮込み":"31-326-1252",
+ "ミートボール・肉団子":"31-327-1253",
+ "ミートローフ":"31-328-1254",
+ "牛すじ煮込み":"31-329-1255",
+ "とんかつ":"31-330-1256",
+ "ポークソテー":"31-331-1257",
+ "つくね":"31-332-1258",
+ "チャーシュー(焼き豚)":"31-333-1259",
+ "煮豚":"31-334-1260",
+ "鶏肉のトマト煮":"31-335-1261",
+ "鶏肉のクリーム煮":"31-335-1262",
+ "鶏肉のさっぱり煮":"31-335-1263",
+ "照り焼きチキン":"31-335-1264",
+ "チキンソテー":"31-335-1265",
+ "鶏そぼろ":"31-335-1266",
+ "蒸し鶏":"31-335-1267",
+ "焼き鳥":"31-335-1268",
+ "その他の鶏肉料理":"31-335-1269",
+ "ぶり大根":"32-336-1270",
+ "ぶりの照り焼き":"32-337-1271",
+ "さばの味噌煮":"32-338-1272",
+ "金目鯛の煮付け":"32-339-1273",
+ "カレイの煮付け":"32-339-1274",
+ "さばの煮付け":"32-339-1275",
+ "メバルの煮付け":"32-339-1276",
+ "その他の煮魚":"32-339-1277",
+ "あさりの酒蒸し":"32-340-1278",
+ "鮭のムニエル":"32-341-1279",
+ "鯵の南蛮漬け":"32-342-1280",
+ "鮭の南蛮漬け":"32-342-1281",
+ "その他の南蛮漬け":"32-342-1282",
+ "焼き魚":"32-343-1285",
+ "鮭のホイル焼き":"32-344-1286",
+ "いわしのつみれ":"32-345-1287",
+ "かつおのたたき":"32-346-1288",
+ "いわしの梅煮":"32-347-1289",
+ "かぶら蒸し":"32-348-1290",
+ "その他の魚料理":"32-349-1291",
+ "ゆで卵":"33-350-1292",
+ "温泉卵":"33-351-1293",
+ "半熟卵":"33-352-1294",
+ "だし巻き卵・卵焼き":"33-353-1295",
+ "茶碗蒸し":"33-354-1296",
+ "キッシュ":"33-355-1297",
+ "オムレツ":"33-356-1298",
+ "かに玉":"33-357-1299",
+ "スクランブルエッグ":"33-358-1300",
+ "煮卵":"33-359-1301",
+ "目玉焼き":"33-360-1302",
+ "ニラ玉":"33-361-1303",
+ "ポーチドエッグ":"33-362-1304",
+ "スコッチエッグ":"33-363-1305",
+ "卵とじ":"33-364-1306",
+ "薄焼き卵":"33-365-1307",
+ "炒り卵":"33-366-1308",
+ "その他の卵料理":"33-367-1309",
+ "ハッシュドビーフ":"14-368-1312",
+ "ジェノベーゼ":"15-369-1949",
+ "ラビオリ":"15-382-1331",
+ "冷やし中華":"16-383-1347",
+ "つけ麺":"16-384-1348",
+ "広島風お好み焼き":"16-385-1349",
+ "モダン焼き":"16-385-1350",
+ "ねぎ焼き":"16-385-1351",
+ "その他のお好み焼":"16-385-1352",
+ "もんじゃ焼き":"16-385-1353",
+ "たこ焼き":"16-386-1354",
+ "けんちん汁":"17-387-1359",
+ "かぼちゃスープ":"17-388-1365",
+ "チャウダー・クラムチャウダー":"17-389-1366",
+ "ポトフ":"17-390-1371",
+ "おでん":"23-391-1372",
+ "すき焼き":"23-392-1373",
+ "もつ鍋":"23-393-1374",
+ "しゃぶしゃぶ":"23-394-1375",
+ "キムチ鍋":"23-395-1376",
+ "湯豆腐":"23-396-1377",
+ "豆乳鍋":"23-397-1378",
+ "ちゃんこ鍋":"23-398-1379",
+ "寄せ鍋":"23-399-1380",
+ "水炊き":"23-400-1381",
+ "トマト鍋":"23-401-1382",
+ "あんこう鍋":"23-402-1383",
+ "石狩鍋":"23-403-1384",
+ "カレー鍋":"23-404-1385",
+ "きりたんぽ鍋":"23-405-1386",
+ "韓国鍋・チゲ鍋":"23-406-1387",
+ "雪見鍋(みぞれ鍋)":"23-407-1388",
+ "蒸し鍋":"23-408-1389",
+ "ねぎま鍋":"23-409-1390",
+ "鴨鍋":"23-410-1391",
+ "カニ鍋":"23-411-1392",
+ "火鍋":"23-412-1393",
+ "牡蠣鍋":"23-413-1394",
+ "ポテトサラダ":"18-415-1395",
+ "春雨サラダ":"18-416-1396",
+ "大根サラダ":"18-417-1397",
+ "コールスロー":"18-418-1398",
+ "かぼちゃサラダ":"18-419-1399",
+ "ごぼうサラダ":"18-420-1400",
+ "マカロニサラダ":"18-421-1401",
+ "コブサラダ":"18-423-1403",
+ "タラモサラダ":"18-424-1404",
+ "サンドイッチ":"22-432-1428",
+ "フレンチトースト":"22-433-1429",
+ "食パン":"22-434-1430",
+ "蒸しパン":"22-435-1431",
+ "ホットサンド":"22-436-1432",
+ "キャラパン":"22-437-1441",
+ "シフォンケーキ":"21-438-1447",
+ "パウンドケーキ":"21-439-1448",
+ "スイートポテト":"21-440-1456",
+ "寒天":"21-441-1463",
+ "ゼリー":"21-441-1464",
+ "コーヒーゼリー":"21-441-1465",
+ "フルーツゼリー":"21-441-1466",
+ "ムース・ババロア":"21-441-1467",
+ "アイスクリーム":"21-442-1468",
+ "ジェラート":"21-442-1469",
+ "シャーベット":"21-442-1470",
+ "たら":"11-443-1496",
+ "牡蠣":"11-444-1508",
+ "明太子":"11-445-1510",
+ "たらこ":"11-445-1511",
+ "いくら・筋子":"11-445-1512",
+ "ちりめんじゃこ":"11-446-1513",
+ "なまこ":"11-446-1514",
+ "うに":"11-446-1515",
+ "白子":"11-446-1516",
+ "くらげ":"11-446-1517",
+ "なす":"12-447-1518",
+ "かぼちゃ":"12-448-1519",
+ "大根":"12-449-1520",
+ "きゅうり":"12-450-1521",
+ "アボカド":"12-451-1522",
+ "さつまいも":"12-452-1523",
+ "白菜":"12-453-1524",
+ "トマト":"12-454-1525",
+ "ごぼう":"12-455-1526",
+ "小松菜":"12-456-1527",
+ "ほうれん草":"12-457-1528",
+ "ブロッコリー":"12-458-1529",
+ "ゆず":"34-459-1549",
+ "柿":"34-460-1550",
+ "レモン":"34-461-1551",
+ "ブルーベリー":"34-462-1552",
+ "柚子胡椒":"19-463-1583",
+ "オリーブオイル":"19-464-1584",
+ "グリーンスムージー":"27-465-1597",
+ "野菜ジュース":"27-465-1598",
+ "梅ジュース":"27-465-1601",
+ "梅シロップ":"27-465-1602",
+ "ジンジャーシロップ":"27-465-1603",
+ "シェーク・ミックスジュース":"27-465-1599",
+ "フルーツジュース":"27-465-1600",
+ "酵素ジュース":"27-465-1604",
+ "おから":"35-466-1609",
+ "厚揚げ":"35-467-1610",
+ "納豆":"35-468-1611",
+ "高野豆腐":"35-469-1612",
+ "豆乳":"35-470-1613",
+ "木綿豆腐":"35-471-1614",
+ "絹ごし豆腐":"35-472-1615",
+ "油揚げ":"35-473-1616",
+ "大豆ミート":"35-474-1617",
+ "塩豆腐":"35-475-1618",
+ "その他の大豆・豆腐":"35-476-1619",
+ "大豆":"35-477-1620",
+ "ひよこ豆":"35-477-1621",
+ "金時豆":"35-477-1622",
+ "レンズ豆":"35-477-1623",
+ "ミックスビーンズ":"35-477-1624",
+ "その他の豆":"35-477-1625",
+ "もち米":"13-478-1626",
+ "マカロニ・ペンネ":"13-479-1627",
+ "ホットケーキミックス":"13-480-1628",
+ "米粉":"13-481-1629",
+ "きなこ":"13-481-1630",
+ "そば粉":"13-481-1631",
+ "小麦粉":"13-481-1632",
+ "葛粉":"13-481-1633",
+ "その他の粉物":"13-481-1634",
+ "クリームチーズ":"13-482-1641",
+ "モッツァレラチーズ":"13-482-1642",
+ "カマンベールチーズ":"13-482-1643",
+ "マスカルポーネ":"13-482-1644",
+ "カッテージチーズ":"13-482-1645",
+ "その他の乳製品":"13-482-1646",
+ "ヨーグルト":"13-483-1647",
+ "梅干し":"13-484-1660",
+ "きゅうりの漬物":"13-484-1655",
+ "浅漬け":"13-484-1656",
+ "塩漬け":"13-484-1657",
+ "ぬかづけ(糠漬け)":"13-484-1658",
+ "しば漬け(柴漬け)":"13-484-1659",
+ "福神漬け":"13-484-1661",
+ "たまり漬け":"13-484-1662",
+ "ピクルス":"13-484-2000",
+ "その他の漬物":"13-484-1663",
+ "キャラ弁":"20-485-1664",
+ "運動会のお弁当":"20-486-1665",
+ "お花見のお弁当":"20-487-1666",
+ "遠足・ピクニックのお弁当":"20-488-1667",
+ "簡単お菓子":"36-489-1668",
+ "簡単夕食":"36-490-1669",
+ "簡単おつまみ":"36-491-1670",
+ "簡単おもてなし料理":"36-492-1671",
+ "簡単鶏肉料理":"36-493-1672",
+ "簡単豚肉料理":"36-494-1673",
+ "簡単魚料理":"36-495-1674",
+ "5分以内の簡単料理":"36-496-1675",
+ "男の簡単料理":"36-497-1676",
+ "100円以下の節約料理":"37-498-1677",
+ "300円前後の節約料理":"37-499-1678",
+ "500円前後の節約料理":"37-500-1679",
+ "朝食の献立(朝ごはん)":"38-501-1680",
+ "昼食の献立(昼ごはん)":"38-502-1681",
+ "夕食の献立(晩御飯)":"38-503-1682",
+ "低カロリーおかず":"39-504-1683",
+ "低カロリー主食":"39-504-1684",
+ "低カロリーお菓子":"39-504-1685",
+ "食物繊維の多い食品の料理":"39-505-1686",
+ "カルシウムの多い食品の料理":"39-505-1687",
+ "鉄分の多い食べ物":"39-505-1688",
+ "ビタミンの多い食品の料理":"39-505-1689",
+ "その他のヘルシー食材":"39-505-1690",
+ "ヘルシーワンプレート":"39-505-2004",
+ "マクロビオティック":"39-506-1691",
+ "ベジタリアン":"39-507-1692",
+ "疲労回復":"39-508-1693",
+ "鉄分の多いレシピ":"39-509-1694",
+ "葉酸の多いレシピ":"39-509-1695",
+ "カルシウムの多いレシピ":"39-509-1696",
+ "食物繊維の多いレシピ":"39-509-1697",
+ "ビタミンCの多いレシピ":"39-509-1698",
+ "離乳食5~6ヶ月(ゴックン期)":"39-510-1699",
+ "離乳食7~8ヶ月(モグモグ期)":"39-510-1700",
+ "離乳食9~11ヶ月(カミカミ期)":"39-510-1701",
+ "離乳食12~18ヶ月(パクパク期)":"39-510-1702",
+ "幼児食(1歳半頃~2歳頃)":"39-511-1703",
+ "幼児食(3歳頃~6歳頃)":"39-511-1704",
+ "圧力鍋で作るごはん・パスタ":"40-512-1705",
+ "圧力鍋で作るカレー":"40-512-1706",
+ "圧力鍋で作る豚の角煮":"40-512-1707",
+ "圧力鍋で作るスペアリブ":"40-512-1708",
+ "圧力鍋で作るその他の肉のおかず":"40-512-1709",
+ "圧力鍋で作る野菜のおかず":"40-512-1710",
+ "圧力鍋で作る魚介のおかず":"40-512-1711",
+ "圧力鍋で作るスープ":"40-512-1712",
+ "圧力鍋で作るスイーツ":"40-512-1713",
+ "その他の圧力鍋で作る料理":"40-512-1714",
+ "ホームベーカリーにおまかせ":"40-513-1715",
+ "ホームベーカリー使いこなし":"40-513-1716",
+ "シリコンスチーマーで作るごはん・パスタ":"40-514-1717",
+ "シリコンスチーマーで作る肉のおかず":"40-514-1718",
+ "シリコンスチーマーで作る野菜のおかず":"40-514-1719",
+ "シリコンスチーマーで作る魚介のおかず":"40-514-1720",
+ "シリコンスチーマーで作るスープ":"40-514-1721",
+ "シリコンスチーマーで作るスイーツ":"40-514-1722",
+ "その他のシリコンスチーマーで作る料理":"40-514-1723",
+ "タジン鍋":"40-515-1724",
+ "炊飯器で作るケーキ":"40-516-1725",
+ "炊飯器で作るチーズケーキ":"40-516-1726",
+ "炊飯器で作るピラフ":"40-516-1727",
+ "炊飯器で作るホットケーキミックス":"40-516-1728",
+ "その他の炊飯器で作る料理":"40-516-1729",
+ "スープジャー":"40-517-1730",
+ "ホットプレートで作るパエリア":"40-518-1731",
+ "その他のホットプレートで作る料理":"40-518-1732",
+ "電子レンジで作るとうもろこし":"40-519-1733",
+ "電子レンジで作る温泉卵":"40-519-1734",
+ "電子レンジで作る茶碗蒸し":"40-519-1735",
+ "電子レンジで作る焼き芋・さつまいも":"40-519-1736",
+ "電子レンジで作る焼き魚":"40-519-1737",
+ "電子レンジで作るじゃがバター":"40-519-1738",
+ "その他の電子レンジで作る料理":"40-519-1739",
+ "無水鍋":"40-520-1740",
+ "ホーロー鍋で作るごはん・パスタ":"40-521-1741",
+ "ホーロー鍋で作る肉のおかず":"40-521-1742",
+ "ホーロー鍋で作る野菜のおかず":"40-521-1743",
+ "ホーロー鍋で作る魚介のおかず":"40-521-1744",
+ "ホーロー鍋で作るスープ":"40-521-1745",
+ "ホーロー鍋で作るスイーツ":"40-521-1746",
+ "その他のホーロー鍋で作る料理":"40-521-1747",
+ "ミキサー":"40-522-1748",
+ "中華鍋":"40-523-1749",
+ "フライパン一つでできる":"40-524-1750",
+ "vitamix(バイタミックス)":"40-525-1751",
+ "バーミックス":"40-525-1752",
+ "クイジナート":"40-525-1753",
+ "ルクエ":"40-525-1754",
+ "ル・クルーゼ":"40-525-1755",
+ "ストウブ":"40-525-1756",
+ "活力鍋":"40-525-1757",
+ "ビタントニオ":"40-525-1758",
+ "その他の調理器具":"40-526-1759",
+ "酢豚":"41-531-1760",
+ "チンジャオロース":"41-532-1761",
+ "八宝菜":"41-533-1762",
+ "マーボー豆腐(麻婆豆腐)":"41-534-1763",
+ "エビチリ":"41-535-1764",
+ "エビマヨ":"41-536-1765",
+ "ホイコーロー(回鍋肉)":"41-537-1766",
+ "ジャージャー麺":"41-538-1767",
+ "バンバンジー":"41-539-1768",
+ "杏仁豆腐":"41-540-1769",
+ "坦々麺":"41-541-1770",
+ "油淋鶏":"41-542-1771",
+ "ビーフン":"41-543-1772",
+ "ちまき(中華ちまき)":"41-544-1773",
+ "サンラータン(酸辣湯)":"41-545-1774",
+ "春巻き":"41-546-1775",
+ "肉まん":"41-547-1776",
+ "焼売(シュウマイ)":"41-548-1777",
+ "その他の中華料理":"41-549-1778",
+ "チャプチェ":"42-550-1779",
+ "チヂミ":"42-551-1780",
+ "ビビンバ":"42-552-1781",
+ "もやしナムル":"42-553-1782",
+ "その他のナムル":"42-553-1783",
+ "キムチ":"42-554-1784",
+ "プルコギ":"42-555-1785",
+ "チョレギサラダ":"42-556-1786",
+ "冷麺":"42-557-1787",
+ "サムゲタン":"42-558-1788",
+ "サムギョプサル":"42-559-1789",
+ "クッパ":"42-560-1790",
+ "タッカルビ":"42-561-1791",
+ "カムジャタン":"42-562-1792",
+ "トッポギ":"42-563-1793",
+ "ケジャン":"42-564-1794",
+ "スンドゥブ":"42-565-1795",
+ "テンジャンチゲ":"42-566-1796",
+ "その他のチゲ":"42-567-1797",
+ "その他の韓国料理":"42-568-1798",
+ "ピザ":"43-569-1799",
+ "ミネストローネ":"43-570-1800",
+ "バーニャカウダ":"43-571-1801",
+ "アクアパッツァ":"43-572-1802",
+ "ピカタ":"43-573-1803",
+ "ブルスケッタ":"43-574-1804",
+ "パニーノ・パニーニ":"43-575-1805",
+ "カルツォーネ":"43-576-1806",
+ "サーモンカルパッチョ":"43-577-1807",
+ "鯛のカルパッチョ":"43-577-1808",
+ "タコのカルパッチョ":"43-577-1809",
+ "その他のカルパッチョ":"43-577-1810",
+ "リゾット":"43-578-1811",
+ "カプレーゼ":"43-579-1812",
+ "パンナコッタ":"43-580-1813",
+ "ティラミス":"43-581-1814",
+ "その他のイタリア料理":"43-582-1815",
+ "ラタトゥイユ":"44-583-1816",
+ "チーズフォンデュ":"44-584-1817",
+ "テリーヌ":"44-585-1818",
+ "ブイヤベース":"44-586-1819",
+ "ムニエル":"44-587-1820",
+ "ビスク":"44-588-1821",
+ "サーモンのマリネ":"44-589-1822",
+ "タコのマリネ":"44-589-1823",
+ "その他のマリネ":"44-589-1824",
+ "ガレット":"44-590-1825",
+ "その他のフランス料理":"44-591-1826",
+ "トムヤムクン":"46-596-1829",
+ "タイカレー":"46-596-1830",
+ "パッタイ":"46-596-1831",
+ "タイスキ":"46-596-1832",
+ "サテ":"46-596-1833",
+ "ヤムウンセン":"46-596-1834",
+ "その他のタイ料理":"46-596-1835",
+ "タンドリーチキン":"46-597-1836",
+ "ナン":"46-597-1837",
+ "ラッシー":"46-597-1838",
+ "サモサ":"46-597-1839",
+ "チャイ":"46-597-1840",
+ "チャパティ":"46-597-1841",
+ "シークカバブ":"46-597-1842",
+ "ビリヤニ":"46-597-1843",
+ "ラッサム":"46-597-1844",
+ "ドーサ":"46-597-1845",
+ "その他のインド料理":"46-597-1846",
+ "生春巻き":"46-598-1847",
+ "フォー":"46-598-1848",
+ "その他のベトナム料理":"46-598-1849",
+ "タコス":"46-599-1850",
+ "チリコンカン":"46-599-1851",
+ "トルティーヤ":"46-599-1852",
+ "ブリート・ブリトー":"46-599-1853",
+ "ワカモレ":"46-599-1854",
+ "サルサ":"46-599-1855",
+ "ナチョス":"46-599-1856",
+ "エンチラーダ":"46-599-1857",
+ "ケサディーヤ・ケサディージャ":"46-599-1858",
+ "その他のメキシコ料理":"46-599-1859",
+ "ソーキそば・沖縄そば":"47-600-1860",
+ "海ぶどう":"47-601-1861",
+ "ゴーヤチャンプル":"47-602-1862",
+ "そうめんチャンプルー":"47-603-1863",
+ "ラフテー":"47-604-1864",
+ "ミミガー":"47-605-1865",
+ "ジューシー":"47-606-1866",
+ "サーターアンダーギー":"47-607-1867",
+ "ヒラヤーチー":"47-608-1868",
+ "コーレーグス・島唐辛子":"47-609-1869",
+ "その他の沖縄料理":"47-610-1870",
+ "ジンギスカン":"48-611-1871",
+ "ちゃんちゃん焼き":"48-612-1872",
+ "筑前煮":"48-613-1873",
+ "すいとん":"48-614-1874",
+ "ほうとう":"48-615-1875",
+ "ひつまぶし":"48-616-1876",
+ "ちゃんぽん":"48-617-1877",
+ "明石焼き":"48-618-1878",
+ "いかめし":"48-619-1879",
+ "せんべい汁":"48-620-1880",
+ "皿うどん":"48-621-1881",
+ "きりたんぽ":"48-622-1882",
+ "のっぺい汁":"48-623-1883",
+ "治部煮":"48-624-1884",
+ "いちご煮":"48-625-1885",
+ "三升漬け":"48-626-1886",
+ "三平汁":"48-627-1887",
+ "じゃっぱ汁":"48-628-1888",
+ "辛子蓮根":"48-629-1889",
+ "その他の郷土料理":"48-630-1890",
+ "お食い初め料理":"24-631-1891",
+ "誕生日の料理":"24-632-1892",
+ "結婚記念日":"24-633-1893",
+ "パーティー料理・ホームパーティ":"24-634-1894",
+ "子どものパーティ":"24-635-1895",
+ "きんとん(栗きんとん)":"49-636-1897",
+ "お雑煮":"49-637-1898",
+ "錦玉子・伊達巻":"49-638-1899",
+ "なます":"49-639-1900",
+ "黒豆":"49-640-1901",
+ "数の子":"49-641-1902",
+ "田作り":"49-642-1903",
+ "煮しめ":"49-643-1904",
+ "たたきごぼう":"49-644-1905",
+ "昆布巻き":"49-645-1906",
+ "酢れんこん":"49-646-1907",
+ "おせちの海老料理":"49-648-1909",
+ "八幡巻き":"49-649-1910",
+ "簡単おせち料理":"49-650-1911",
+ "その他のおせち料理":"49-651-1912",
+ "クリスマスケーキ":"50-652-1913",
+ "クリスマスオードブル":"50-653-1914",
+ "クリスマスチキン":"50-654-1915",
+ "クリスマスサラダ":"50-655-1916",
+ "クリスマス向けアレンジ":"50-656-1917",
+ "ひな祭りケーキ":"51-657-1918",
+ "ひな祭りちらしずし":"51-658-1919",
+ "ひな祭り向けアレンジ":"51-659-1920",
+ "ホワイトデーのお菓子":"52-660-1921",
+ "ホワイトデーのチョコ":"52-660-1922",
+ "ホワイトデーのクッキー":"52-660-1923",
+ "ホワイトデー向けアレンジ":"52-660-1924",
+ "お花見・春の行楽":"52-661-1929",
+ "こどもの日":"52-662-1930",
+ "母の日のケーキ":"52-663-1925",
+ "母の日のお菓子":"52-663-1926",
+ "母の日の料理":"52-663-1927",
+ "母の日向けアレンジ":"52-663-1928",
+ "父の日":"53-664-1931",
+ "夏バテ対策":"53-665-1932",
+ "お祭り":"53-666-1933",
+ "十五夜・お月見":"53-667-1934",
+ "ハロウィンのお菓子":"54-668-1935",
+ "ハロウィン向けアレンジ":"54-668-1936",
+ "秋の行楽・紅葉":"54-669-1937",
+ "七五三の料理":"54-670-1938",
+ "節分":"55-671-1939",
+ "恵方巻き":"55-672-1940",
+ "ななくさ(七草粥)":"55-673-1941",
+ "バレンタインのケーキ":"55-674-1942",
+ "バレンタインチョコ":"55-674-1943",
+ "バレンタインの焼き菓子":"55-674-1944",
+ "バレンタイン向けアレンジ":"55-674-1945",
+ "塩麹":"19-675-1566",
+ "醤油麹":"19-675-1567",
+ "塩レモン":"19-675-1999",
+ "にんにく醤油":"19-675-1580",
+ "酒粕":"19-675-1581",
+ "肉味噌":"19-675-1569",
+ "味噌":"19-675-1568",
+ "酢味噌":"19-675-1570",
+ "酢":"19-675-1571",
+ "バルサミコ酢":"19-675-1572",
+ "黒酢":"19-675-1573",
+ "すし酢":"19-675-1574",
+ "梅酢":"19-675-1575",
+ "ポン酢":"19-675-1576",
+ "三杯酢":"19-675-1577",
+ "カレー粉":"19-675-1578",
+ "しょうゆ":"19-675-1579",
+ "その他の発酵食品・発酵調味料":"19-675-1582",
+ "ナポリタン":"15-676-1947",
+ "ペスカトーレ":"15-677-1950",
+ "アラビアータ":"15-678-1953",
+ "トマトクリームパスタ":"15-679-1954",
+ "トマト系パスタ":"15-680-1958",
+ "ペペロンチーノ":"15-681-1948",
+ "ボンゴレ":"15-682-1952",
+ "たらこパスタ・明太子パスタ":"15-683-1951",
+ "納豆パスタ":"15-684-1955",
+ "きのこパスタ":"15-685-1956",
+ "ツナパスタ":"15-686-1957",
+ "カルボナーラ":"15-687-1946",
+ "りんご":"34-688-1961",
+ "栗":"34-689-1981",
+ "梨":"34-689-1982",
+ "ぶどう":"34-689-1983",
+ "洋梨・ラフランス":"34-689-1984",
+ "ザクロ":"34-689-1985",
+ "グレープフルーツ":"34-690-1963",
+ "キウイ":"34-691-1964",
+ "いちご":"34-692-1965",
+ "デコポン":"34-692-1966",
+ "梅":"34-693-1967",
+ "すだち":"34-693-1968",
+ "ピーナツ(落花生)":"34-693-1969",
+ "桃":"34-693-1970",
+ "プルーン":"34-693-1971",
+ "あんず":"34-693-1972",
+ "夏みかん":"34-693-1973",
+ "チェリー(さくらんぼ)":"34-693-1974",
+ "びわ":"34-693-1975",
+ "スイカ":"34-693-1976",
+ "メロン":"34-693-1977",
+ "イチジク":"34-693-1978",
+ "パイナップル":"34-693-1979",
+ "マンゴー":"34-693-1980",
+ "きんかん":"34-695-1986",
+ "みかん":"34-695-1987",
+ "はっさく":"34-695-1988",
+ "いよかん":"34-695-1989",
+ "その他の果物":"34-696-1990",
+ "バナナ":"34-697-1962",
+ "白味噌鍋":"23-698-1992",
+ "糖質制限":"39-699-1995",
+ "ココナッツオイル":"19-700-1994",
+ "シェパーズパイ":"25-701-1996",
+ "ショートブレッド":"25-701-1997",
+ "ジンジャークッキー":"25-701-1998",
+ "その他のイギリス料理":"25-701-2001",
+ "オレンジ":"34-702-2002",
+ "ジャーサラダ":"18-703-2003",
+ "メイソンジャー":"40-704-2005",
+ "高血圧向け":"39-705-2006",
+ "もち麦":"13-706-2007",
+ "キッチンバサミ":"40-707-2008"}
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..bd10b84
--- /dev/null
+++ b/app/src/main/res/values/arrays.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ - 朝
+ - 昼
+ - 晩
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..21ac8dd
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #0275d8
+ #0275d8
+ #0275d8
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..f136bc3
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ LeftoverRecipe
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..34fbb88
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/test/java/org/ntlab/leftoverrecipe/ExampleUnitTest.kt b/app/src/test/java/org/ntlab/leftoverrecipe/ExampleUnitTest.kt
new file mode 100644
index 0000000..e9f3eb3
--- /dev/null
+++ b/app/src/test/java/org/ntlab/leftoverrecipe/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package org.ntlab.leftoverrecipe
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..1bc6672
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,35 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ ext.kotlin_version = '1.1.3'
+ repositories {
+ google()
+ jcenter()
+ maven {
+ url "http://www.atilika.org/nexus/content/repositories/atilika"
+ }
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ // Kotlin Android Extensions
+ classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
+ // Realm
+ classpath "io.realm:realm-gradle-plugin:3.3.2"
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ mavenCentral()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..aac7c9b
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..13372ae
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..050fb9d
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jul 04 20:21:11 JST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-milestone-1-all.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..9d82f78
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..8a0b282
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1 @@
+include ':app'